【求助】关于PIC单片机外部中断和RB1口的问题【恢复】

2020-02-10 08:46发布

我写了一个程序,其中用到PIC16F876A单片机的外部中断。

我的测试程序是外部下降沿中断,使用一个按键把RB0口置低,这样进入中断。当进入中断后,把RB1置高就可以了。

但是在测试中发现,RB1口仅仅是出现一个高脉冲,然后 又回到低电平了。

想不明白,请教一下大家。



#include<pic.h>             



#define uchar unsigned char

#define uint  unsigned int



//--------------------

//主程序

void main()

{

  OPTION=0X00;                //INT 引脚的下降沿触发中断



  TRISB=0X01;                //B口高七位为输出,RB0为输入



  INTE=1;                        //INT 外部引脚中断允许位

  GIE=1;            //开放全局中断

  PEIE=1;           //使能外部中断

  RB1=0;



  while(1)                    

           {

        }

  }



//中断函数

void interrupt INT(void)

  {

   if(INTE && INTF)     //判断是否为外部中断

     {

                INTF=0;

                RB1=1;    //RB1仅仅出现了一个窄的高脉冲,就又恢复为低电平了,怎么回事呢?

     }

   }



本贴被 frmngil 编辑过,最后修改时间:2008-12-23,19:42:39.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
frmngil
1楼-- · 2020-02-10 12:21
 精彩回答 2  元偷偷看……
czhxp
2楼-- · 2020-02-10 16:13
看看是不是SLEEP,或者看门狗造成的,你只在主程序里RB1=0;程序只执行到这里才能把RB1至零
frmngil
3楼-- · 2020-02-10 21:46
不会吧,AD口默认应该是RA口
hexenzhou
4楼-- · 2020-02-11 00:38
RB口有可能与AD口冲突了,有AD的PIC默认上电状态为AD。
frmngil
5楼-- · 2020-02-11 04:37
请知道的朋友帮帮忙。

一周热门 更多>