打印

pic16f877中断程序汇编实例

[复制链接]
2292|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
残念明想|  楼主 | 2010-12-4 00:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我是菜鸟,刚刚接触pic16f877单片机的汇编。当学到中断系统时,对这个中断保护的程序搞不懂,希望高手能帮忙下,给我点迷津,或者发多些关于中断程序的汇编语言实例给我,感谢!

相关帖子

沙发
scc8311| | 2010-12-4 06:57 | 只看该作者
;----------------------------------------中断-------------------------------------------
          Q026   MOVWF  30H
          MOVF   STATUS,0
          MOVWF  31H             ;保护现场
       BTFSC  INTCON,0        ;是否B口中断
       GOTO   Q028            ;是,执行B口中断子程序
       BTFSC  PIR1,0          ;是否定时器1中断
       GOTO   Q031            ;是,执行定时器1中断子程序
;---------------------------------------------------------------------------------------               
          Q027   MOVF   31H,0
          MOVWF  STATUS          ;恢复现场
       MOVF   30H,0
          RETFIE                 ;返回
;-------------------------------------B口中断子程序-------------------------------------
          Q028   BTFSS  PORTB,6         ;是否RB6中断
       GOTO   Q029            ;是,进入RB6中断子程序
       BTFSS  PORTB,7         ;是否RB7中断
       GOTO   Q030            ;是,进入RB7中断子程序
       GOTO   Q027            ;返回
;---------------------------------------------------------------------------------------
          Q029   BTFSS  20H,1           ;是否重复中断
       GOTO   Q027            ;返回
       MOVF   TMR1H,W
          SUBLW  0F4H
          BTFSC  STATUS,0        ;是否大于9毫秒
       GOTO   Q027            ;干扰信号,返回
       MOVLW  0ADH
          MOVWF  TMR1H
          MOVLW  0F8H            ;装定时器初值(定时时间10.5ms)
          MOVWF  TMR1L
          INCF   22H,1           ;速度记数器加1
           BCF    20H,1           ;置本次中断标志
       BCF    INTCON,0        ;清除中断标志
       GOTO   Q027            ;返回
;---------------------------------------------------------------------------------------
          Q030   BTFSC  20H,1           ;是否重复中断
       GOTO   Q027            ;返回
       MOVF   TMR1H,W
           SUBLW  0F4H
           BTFSC  STATUS,0        ;是否大于9毫秒
       GOTO   Q027            ;干扰信号,返回
       MOVLW  0ADH
          MOVWF  TMR1H
          MOVLW  0F8H            ;装定时器初值(定时时间10.5ms)
          MOVWF  TMR1L
          INCF   22H,1           ;速度记数器加1
          BSF    20H,1           ;置本次中断标志
       BCF    INTCON,0        ;清除中断标志
       GOTO   Q027            ;返回
;-----------------------------------定时器1中断子程序-----------------------------------
       Q031   MOVLW  0FH
       BCF    PIR1,0          ;清除中断标志
       GOTO   Q031            ;返回
       END
;---------------------------------------------------------------------------------------

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

1

帖子

1

粉丝