想用51单片机的外部中断0设置单片机的空闲或者掉电模式,同时再用该中断唤醒单片机,请问程序该如何写?写了好几遍没调试出来(触发元件我用的是红外避障,手碰下电平由高变低)
书上说掉电模式唤醒的方法有外部中断和硬件复位,外部中断应该是工作的吧
追答是这样的,我不知道你具体用的是哪个51单片机,所谓51单片机是指,以51系列的CPU为内核,加上外围设备组成的单片机.
如果你用的是AT89C51,或者SH88F516,这个我可以保证的告诉你,掉电只有硬件复位能唤醒,外部中断是无法唤醒的,因为外部中断也是需要系统的时钟的支持才工作的,掉电模式是把整个系统的时钟全部关闭了,那么,外部中断也不例外.
如果是其他的,我就不一定保证了,但是空闲模式则是任何中断都可以使之退出的.
这样,你可以写个程序验证一下:
由于打字内容太多我截图追问下您
是这样的,我不知道你到底用的是边沿方式还是低电平方式,不过你的程序不太合理,按照我说的方法写一个:
unsigned int count = 0;
void READEx0(void)
{
if((count & 0x01) == 0x01)
{
PCON = 0x01; //----如果你把这句屏掉,只保留 PCON = 0x02,那么 P1^0应该不会变化了
PCON = 0x02; //----如果你把这句屏掉,只保留 PCON = 0x01,那么 P1^0应该会变化
}
}
void EX0(void) interrupt 0
{
count ++;
if(count >= 100) //----这里不一定非得是100,你根据需要自己修改
{
P1_0 = ~P1_0; //----这里不一定非得是 P1^0,最好是个连接了LED的引脚
}
}
你所说的进入不了掉电模式,恐怕不是,恐怕是已经掉电了,你不知道罢了
我用的下降沿中断,我单独写了个掉电模式代码可以运行,我估计是上面的代码里哪里冲突了
追答哦,那可能STC89C52的外部中断可以唤醒掉电吧,这个我没尝试过,已经许久没有用过51系列的单片机了.