⑴ 51單片機中如何通過一個按鍵實現暫停與恢復需要一個編程的思想
有以下幾種情況:
1.循環查詢按鍵。當按鍵按第一次時間,進入第一層循環查詢語句內部,執行恢復。不跳出該層循環,繼續查詢按鍵。當第二次按下時間,進入第二層循環查詢語句內部,執行暫停。循環結束。若想反復暫停和恢復,就在外面再加一層while(1)類似的死循環,反復執行其內部的兩層循環查詢語句。
2.用一個標志變數,記住按鍵的狀態。初始化為個值,如「暫停」,按鍵之後檢查標志變數,是「暫停」就執行「恢復」,再讓它變為「恢復」說明當前已經執行了恢復。反之亦然。
3.掉電暫停。這樣需要按鍵能觸發cpu工作。所以,需要按鍵接到外部中斷上面。中斷後可以恢復CPU工作。在中斷中再判斷是否要讓cpu掉電與否。
不知道這種方法你能接受不?還是用外部中斷。此按鍵觸發中斷後,關掉所有其他的中斷,也即EA=0(最好先用個變數記住EA,方便恢復),然後就一直在中斷中等待該按鍵第二次按下再恢復EA,最後退出中斷。
⑵ 51單片機如何用一個按鍵控制一段程序的運行與停止
1、創建項目文件。
6、當按下一個按鍵時,關閉燈,整個程序運行,再按一次,程序停止。
⑶ 單片機按鍵實現暫停和開始
這個程序 while(K1);
while(!K1);
你覺得到了這里,這個程序不死? 不管K1按下還是不按下,這個程序都是死循環啊!
而且你的程序 { } 都不成對出現,能編譯通過么?
調試程序的時候,建議一步一步來,不要一口氣將程序寫好,結果很多問題
⑷ 請問51單片機如何用一個獨立按鍵控製程序的暫停和繼續
1.你的程序並不能實現顯0~9,1357,0246,亮燈和響鈴是可以。
2.用P1.1按鍵是可以實現暫停和繼續的,並不需要中斷。不是什麼事都需要中斷,好像離開中斷就什麼也不能做了?
3.你想暫停,是隨時暫停,還是什麼時候暫停?
⑸ 單片機如何用一個按鍵實現啟停
不知道你想要實現啥樣的啟停,今天上班有點閑,給你寫一個程序做參考,你可以根據你的需要進行更改。//功能是按鍵,按下啟動停止,啟動後LED燈閃爍,
停止LED燈滅。
#include
"REG52.H"
sbit
LED1_01
=
P1^1;
//LED燈
sbit
KEY0_01
=
P1^2;
//按鍵
bit
value_flag
=
0;
//標志位
/*
*
延時1ms延時子函數
**/
void
Delay_1ms(unsigned
int
Time)
{
unsigned
int
x,
y;
for(x
=
Time;
x
>
0;
x--)
for(y
=
120;
y
>
0;
y--);
}
/*
*
按鍵開關【啟動和停止】子函數
**/
void
Scan_keyoutCmd(void)
{
if(KEY0_01
==
0)
//檢測按鍵是否按下
{
Delay_1ms(10);
//延時去抖動
if(KEY0_01
==
0)
//確定按鍵按下
{
value_flag
=
~
value_flag;
//取反標志位
}
while(KEY0_01
==
0);
//檢測鬆手
}
}
/*
*
程序運行【啟動和停止】子函數
**/
void
Disp_layledketCmd(void)
{
if(value_flag
==
1)
//如果標志打開啟動單片機運行程序
{
LED1_01
=
0;
Delay_1ms(500);
//啟動運行程序後LED燈開始閃爍
LED1_01
=
1;
Delay_1ms(500);
}
else
if(value_flag
==
0)
//如果標志關閉停止單片機運行程序
{
LED1_01
=
0;
//停止運行程序後LED滅。
}
}
/*
*
函數主體
**/
int
main(void)
{
value_flag
=
1;
//打開標志位
while(1)
{
Scan_keyoutCmd();//單片機循環檢測是否有按鍵按下【啟動或停止】應運程序
Disp_layledketCmd();
//執行應運程序
}
}
⑹ 51單片機中用數碼管做秒錶時怎麼用一個獨立按鍵控制開始和暫停,即第一次按下計時,在按下時暫停
其實,控制秒錶的啟動和停止,很簡單。要做秒錶,一定要用定時器吧,假如用T0,那開始初始化時,不寫TR0=1,先不啟動。x0dx0a當按一下鍵,再啟動,TR0=1,就開始計時了。x0dx0a再 按一下鍵,就停止,TR0=0,就不計時了。x0dx0a程序好寫,先 定義一個按鍵x0dx0asbit key=P1^1; //具體是哪個 鍵,你自己改x0dx0a主程序中,判斷按鍵和啟動/停止x0dx0aif(key==0)x0dx0a{x0dx0adelay(); //具體延時時間自己定x0dx0aif(key==0)x0dx0a{x0dx0aTR0=!TR0; //每按一次,取反 一次x0dx0awhile(key==0);x0dx0a}x0dx0a}
⑺ 單片機怎麼用按鍵控制開始 停止和清零
//定義IO和變數
sbit start = P1^1;
sbit stop = P1^2;
sbit reset = P1^3;
bit flag_start;//計數標志位
uint sec;//秒
//按鍵功能
if(start==0)
flag_start=0;
if(stop==0)
flag_start=1;
if(reset==0)
{flag_start=0;sec=0;}
//計數程序
if(flag_start)
{sec++;}
單片機(Microcontrollers)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。
⑻ 單片機怎麼用一個按鈕控制步進電機啟動和停止
單片機用一個按鈕控制步進電機啟動和停止,這很容易的,識別按鍵按下的程序會寫吧,那定義一個位變數,即標志位,如flag,上電後flag=0,為電機停止狀態。每按一次按鍵,flag=!flag,即取反一次,然後再判斷標志位,flag=1,則啟動電機。flag=0,則停止電機。