英锐恩单片机论坛,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