单片机, 是不存在暂停的, 要起到看上去"暂停"的效果, 要么让他 在一个地方 傻跑, 要么休眠。你的两个思路都对,但是代码都有问题。
方法一:中断和按键用的同一个引脚(部分程序,中断开启在初始化中做了)
注意: IT0 =1
sbit key=P3^2;
void int0() interrupt 0
{
unsigned char i;
while((IE0) || (!key))
{
IE0 = 0;
i = 200;
while(--i);
} //消抖 & 释放按键
while(!IE0); //暂停现象
while((IE0) || (!key))
{
IE0 = 0;
i = 200;
while(--i);
} //消抖 & 释放按键
}
方法二:掉电模式 注意: IT0 =1
由于,STC15系列,部分机型 中断中用PCON = 0x02; 会有意外,所以,掉电模式最好配合主程序使用。
bit Pause_Stats;
sbit key=P3^2;
void int0() interrupt 0 //必须要有
{
EX0 = 0; //关中断
}
void main()
{
unsigned char i;
IT0 = 1;
EX0 = 0; //关中断
EA = 1;
while(1)
{
if(IE0)
{
while((IE0) || (!key))
{
IE0 = 0;
i = 200;
while(--i);
} //消抖 & 释放按键
EX0 = 1; //开中断
PCON=0x02; //休眠
_nop_();
_nop_();
while((IE0) || (!key))
{
IE0 = 0;
i = 200;
while(--i);
} //消抖 & 释放按键
}
}
|