英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流
标题:
如何用tmr0做中断
[打印本页]
作者:
winnie
时间:
2009-5-21 13:09
标题:
如何用tmr0做中断
bsf status,5 ;选中bank1 movlw 0d5 ;11010101,tmr0预定标器倍率为1:64
movwf option_reg
bcf status,5 ;返回bank0
movlw 00
movwf tmr0 ;tmr0初值为0
movlw 0a0 ;10100000(D5:为1允许tmr0中断;D7:为1开放所有中断;D2:tmr0内计数器计满溢出时该位被置1)
movwf intcon
;中断服务子程序,现场保护
intserv movwf w_temp
swapf status,w
clrf status
movwf status_temp
btfss intcon,5 ;是否为tmr0中断
goto out
bcf intcon,2 ;清tmr0中断溢出标志,64us中断一次
incf in0,1 ;中断溢出单元+1
movlw 7d ;该单元为125吗?
subwf in0,0
btfss status,0
goto out ;未到,恢复现场
clrf in0 ;是,清该单元
incf in1,1 ;计时单元1+1
movlw 7d ;该单元为125吗?
subwf in1,0
btfss status,0
goto out ;未到,恢复现场
clrf in1 ;是,清该单元
incf in2,1 ;计时单元2+1
movlw 3c
subwf in2,0
btfss status,0
goto out
bsf flag,0 ;置1分钟到标志,1分=64us*125*125*60
clrf in2
out swapf status_temp,w ;现场恢复
movwf status
swapf w_temp,f
swapf w_temp,w
retfie
欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/)
Powered by Discuz! X3.2