打印

求助:PIC16F877A的RB口中断问题

[复制链接]
2187|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fhshbian|  楼主 | 2011-7-27 23:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TRIS_INITIAL  
        BANKSEL      TRISC         ;端口初始化  
        MOVLW        B'11110000'   ;RB  
        MOVWF        TRISB
        MOVLW         B'10000100'   ;RC CCP2-PWM CCP1-BUSY
        MOVWF        TRISC
AD__INITIAL
        MOVLW        B'00000110'
        MOVWF        ADCON1        ;关闭ad功能全为普通IO口
        BSF              PIE1,CCP1IE      ;开放CCP1中断
        BANKSEL      T1CON
        MOVLW        B'00110000'
        MOVWF        T1CON
        BCF              INTCON,PEIE   ; 禁止外设中断  '''''''''''  
        MOVLW         0X05
        MOVWF         CCP1CON        ;启用上升沿扑捉
        BSF              T1CON,TMR1ON   ;开启TMR1
KEYWDT_INITIAL
        BANKSEL      OPTION_REG   
        MOVLW         0X0F          ;启用弱上拉;上升沿有效
        MOVWF         OPTION_REG    ;1:128 WDT     
        BANKSEL      PORTB
        MOVF           PORTB,1
        BCF             INTCON,RBIF    ;清RB口中断标志
        BSF             INTCON,RBIE    ;启用RB口中断
INTERRUPT_INITIAL
        BSF     INTCON,GIE      ;开启总中断

只贴出来了一部分,主要是RB,4,5,6,7做键盘,CCP1扑捉,CCP2-pwm。
但在程序中只要  BSF              INTCON,PEIE   ;开启二级中断响应允许
则                   BCF              INTCON,RBIE    ;RB口中断
则不起作用,根本就不被不过屏蔽RB口的中断响应。按下键盘照样能响应进入RB中断程序。
求解::::??????
沙发
yewuyi| | 2011-7-28 11:31 | 只看该作者
1、:在进入中断后必须再读一次PORTB,更新一下引脚锁存器的状态,消除中断产生的硬件条件,防止RBIF再次被置位
2、请给出你的中断程序,PIC的中断程序必须是容许位和标志位同时置位时才容许进行中断响应。你能继续进入RB中断,并且RBIE已经清零,则说明你的中断处理程序中没有同时判断这两个条件。

使用特权

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

本版积分规则

24

主题

27

帖子

0

粉丝