sp; call tone3t ;调用发声三次子
程序
loop1
comf portb,w ;检测按键是否有松开
andlw b'00011110' ;
btfsc status,z ;
goto loop ;松开了返回
goto loop1 ;没松开继续检测
;*********************中断服务子
程序*****************************
serv
;********************保存护现场部分*******************************
movwf w_temp ;保护W
swapf status,w ;保护STATUS
clrf status ;选择体0
movwf status_temp ;将STATUS存入体0的备份寄存器
;********************* 调查中断源**********************************
btfsc intcon,intf ;检查不是INT中断,返回
goto intserv ;是!转到INT中断处理部分
goto retfie0 ;
;*********************INT中断处理部分******************************
intserv
clrf portc ;令全部灯熄灭
bsf portc,7 ;点亮D10,表示就绪
call tone630 ;调用高音子
程序
call delay ;调用1S廷时子
程序
call tone630 ;调用低音子
程序
bcf intcon,intf ;清除INT中断标志位
;*************************恢复现场部分*****************************
retfie0
swapf status_temp,w ;恢复STATUS
movwf status ;
swapf w_temp,f ;恢复W
swapf w_temp,w ;
retfie ;中断返加
;*************************低音调发生子
程序(500HZ/50MS)*************
tone500
&nbs