欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
幫我看看這個單片機程序掉電喚醒怎么只能執行一次
[打印本頁]
作者:
快樂眼淚
時間:
2019-11-27 09:39
標題:
幫我看看這個單片機程序掉電喚醒怎么只能執行一次
大家好!幫我看看這個程序怎么只能執行一次?只有重新上電后才能再執行一次,謝謝了!
#include<reg52.h>
sbit key = P3^0;
void DELAY_MS (unsigned int a){
unsigned int i;
while( a-- != 0){
for(i = 0; i < 600; i++);
}
}
void INT0_INIT(void)
{
EA=1;
EX0=1;
IT0=0;
}
main()
{
INT0_init();
while(1)
{
if(!key)
{
DELAY_MS (20);
if(!key)
{
PCON=0x02;
DELAY_MS (20);
while(!key);
}
}
}
}
void ISR_Key(void)interrupt 0 using 1
{
if(!INT0)
{
DELAY_MS (20);
if(!INT0)
{
PCON=0x00;
DELAY_MS (20);
}
}
}
作者:
快樂眼淚
時間:
2019-11-27 11:57
哪位師傅給菜鳥指點一下,小弟不勝感激!
作者:
快樂眼淚
時間:
2019-11-27 16:59
沉水了,自己頂頂
作者:
匯源科技
時間:
2019-12-1 22:17
我建議你注澤一下,有時自己都看不明,更何況是別人。我剛搞定掉電和喚醒功能,第一,掉電的條件,,第二喚醒的條件定時還是手動的,手動用的是外部那路中斷
作者:
angmall
時間:
2019-12-2 00:18
#include <reg52.h>
//sbit INT0 = P3^2; // INT0喚醒掉電模式
sbit key = P3^0; //定義按鍵輸入端口 //P3.0/P3.1為仿真口和USB下載口時不可演示
void DELAY_MS(unsigned int a) //mS延時函數
{
unsigned int i;
while( a-- != 0){
for(i = 0; i < 600; i++);
}
}
void INT0_INIT(void)
{
EA=1; //全局中斷開
EX0=1; //外部中斷0開
IT0=0; //電平觸發
}
main() // 主程序
{
INT0_init();
key=1; //按鍵輸入端口電平置高
while(1) //主循環
{
if(!key) //如果檢測到低電平,說明按鍵按下
{
DELAY_MS(20); //延時去抖,一般10-20ms
if(!key) //再次確認按鍵是否按下,沒有按下則退出
{
while(!key); //改成這樣
PCON=0x02; //MCU進入掉電模式
DELAY_MS(20); //掉電模式被喚醒后,首先執行此語句,然后再進入中斷服務程序
//while(!key); //死循環
}
}
}
}
void ISR_Key(void)interrupt 0 using 1 // 外部中斷程序
{
if(!INT0) //INT0喚醒掉電模式
{
//通常在中斷子程序中是不調用延時子程序的,這樣會增加中斷處理時間,則下次中斷有可能不會被觸發,就會延誤響應中斷了,導致定時器時間出錯。
DELAY_MS(20);
if(!INT0)
{
PCON=0x00;
DELAY_MS(20);
}
}
}
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1