單片機, 是不存在暫停的, 要起到看上去"暫停"的效果, 要么讓他 在一個地方 傻跑, 要么休眠。你的兩個思路都對,但是代碼都有問題。
方法一:中斷和按鍵用的同一個引腳(部分程序,中斷開啟在初始化中做了)
注意: 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);
} //消抖 & 釋放按鍵
}
}
|