nbsp; movwf count2 ;
t1lop
call tone500 ;调用低音子程序
call tone630 ;调用高音子程序
decfsz count2,f ;循环次数递减,为0,跳一步
goto t1lop ;不为0,跳回
return ;返回
;*********************TMR0廷时子程序1S(1S=16x256x(256-12)US)********
delay
bsf status,rp0 ;设置文件寄存器体1
movf option_reg,w ;保护选项寄存器内容
movwf option_temp ;
movlw 07h ;重设选项寄存器;上拉电阻启用,INT下降沿触发
movwf option_reg ;分频器给TRM0;分频比值设为1:256
bcf status,rp0 ;恢复到文件寄存器体0
movlw .16 ;循环利用TMROP定时16次
movwf count3 ;溢出次数寄存器
d1lop
bcf intcon,t0if ;清除TMR0溢出中断标志位
bcf intcon,t0ie ;清除TMR0溢出中断使能位
movlw .12 ;给TMR0装入初值12=256-244
movwf tmr0 ;启动定时器
here
btfss intcon,t0if ;用
查询法检测TMR0溢出否
goto here ;否!返回
decfsz count3,f ;是!溢出次数减1,为0,跳一步
goto d1lop ;否!循环利用TMR0
bsf status,rp0 ;设置文件寄存器体1
movf option_temp,w ;恢复选项寄存器内容
movwf option_reg ;
bcf status,rp0