⑴ 80C51單片機怎麼用按鍵選擇兩個不同的程序
如果要使用按鍵選擇兩個不同的程序,可以採用如下方法:
1、在80C51單片機的程序中定義兩個不同的子程序,分別處理兩個不同的功能。
2、在80C51單片機的程序中定義一個循環,用於監聽按鍵的輸入。
3、在循環中,通過讀取按鍵的狀態來判斷用戶按下了哪個按鍵。
4、如果用戶按下了第一個按鍵,就調用第一個子程序;如果用戶按下了第二個按鍵,就調用第二個子程序。
5、在子程序中實現具體的功能代碼。
以上就是使用按鍵選擇兩個不同的程序的基本流程。
⑵ 簡述單片機獨立按鍵的任務分為幾步,分別是什麼
5步。分別是判斷按鍵是否按下,延時消抖,再次判斷按鍵是否按下,等待按鍵抬起,執行預定語句。
一種是普通io口,一種是中彈的形式,普通io口是按下按鍵觸發按鍵子程序案件,指程序經過一段時間的,比如20~50毫秒的延時再次毒案件,如果按鍵值還是會按下,那麼就延時等待按鍵抬起按鍵,抬起後執行按鍵程序,然後返回中彈也是一樣的,按下按鍵之後進入中段讀按鍵狀態,是否還是為按一下是按一下等待延時再讀等待,然後等待案件採取後執行相應的代碼,然後退出總代。
⑶ 51單片機中按鍵程序用C怎麼寫
這個太簡單了吧,記住寫程序定時器要一直跑,建立一個時基,像個手錶的時間一樣要一直跑,即有time_125us,time_1ms,time_100ms,time_1s,time_1min,time_1hour等時間變數建立時基一直走。其它程序可以分時掃描也可以輪流掃描,不能停留死等,像電腦里的程序一樣表面看起來各個程序是一直運行的,即各個程序中不能有delay_1ms之類的函數,如果要定時應該申請一個變數在時基里處理,如等待2s可以這么寫
if(step==0){
time=2,time_100ms=0,step=1;}
if((step==1)&&(time==0)){//2s到
//等待2s後要執行的代碼
}
在時基時每1s把time減1,減到0為止即if(time)time--;
對按鍵的寫法一般用採集的方法如按鍵後IO為低
if(!IO){
//低電平,有按鍵
key_time++;
if((key_time==100)&&(!key_flag)){
//已經賦值了就不再賦值了
key_flag=1;
key_flag_bak=1;
}
else{
//無按鍵
key_time=0;
key_flag_bak=0;
}
if(key_flag&&(!key_flag_bak)){
//有按鍵並松開,即松開響應
time=2;
//亮2s
key_flag=0;//把鍵值清0
}
if(time){
LED_ON;//燈亮
}
else
LED_OFF;
⑷ 51單片機如何用一個按鍵控制一段程序的運行與停止
1、創建項目文件。
6、當按下一個按鍵時,關閉燈,整個程序運行,再按一次,程序停止。
⑸ 單片機按鍵觸發C程序
while(1)
{
if(keyflag==1) //有按下切出死循環
break;
else continue;
}
while(1)
{
..... //用戶自己的程序
}
這種方法是模擬按鍵按下啟動真正的應用程序,觸發的是自己的功能程序短。從效果上來還是可以的
⑹ 單片機應用系統的鍵盤處理程序主要包括哪幾部分內容
輸出,輸入,復位。
1、單片系統的鍵盤程序包括輸出,由鍵盤進行敲擊字母輸出。
2、輸入是通過打完的字通過顯示器進行輸入。
3、復位是將錯誤的地方進行刪除復位。
⑺ 單片機設置一個按鍵重啟主程序
首先在程序的開頭加入一句定義,sfr SAP = 0xe7;
SAP 是名稱,可以隨意改寫
之後在外部中斷或程序內添加一個按鍵檢測的語句
例如
if(K1==0)//如果按鍵被按下
{
YS(20);//延時去抖
if(K1==0)//如果是有效按鍵觸發
{
SAP=0x60;//執行軟復位
}
}
此按鍵處理語句即可實現單片機的軟復位操作
至於sfr SAP = 0xe7;這一條語句可以放在#include<reg52.h>頭文件下面
#include<reg52.h>
sfr SAP = 0xe7
sbit K1=P3^3;//按鍵
至於這兩個地址0x60和0xe7代表什麼,我也查閱了很多資料
⑻ 單片機C語言按鍵開關程序
#include<reg52.h>
#defineuintunsignedint
#defineucharunsignedchar
voiddelay_ms(uint);
sbitled0=P0^0;
sbitled1=P0^1;
sbitkey1=P3^2;
sbitkey2=P3^3;
voidmain()
{
uchari=0;
ucharj=0;
while(1)
{
if(key1==0)//按鍵1
{
delay_ms(10);
if(key1==0)
{
i++;
i=i%2;
switch(i)
{
case0:led0=1;break;//關小燈
case1:led0=0;break;//開小燈
default:break;
}
}
while(!key1);
}
if(key2==0)//按鍵2
{
delay_ms(10);
if(key2==0)
{
j++;
j=j%2;
switch(j)
{
case0:led1=1;break;//關小燈
case1:led1=0;break;//開小燈
default:break;
}
}
while(!key2);
}
}
}
voiddelay_ms(uintz)//延時子程序
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
⑼ 51單片機匯編語言編程獨立按鍵
四個按鍵,定義如下:
KEY1 BIT P3.0
KEY2 BIT P3.1
KEY3 BIT P3.2
KEY4 BIT P3.3
按鍵處理程序:
;-----------------------------------
READ_KEY:
JB KEY1, K2
CALL DELAY
JB KEY1, K2
JNB KEY1, $
PUSH ACC
INC 75H
MOV A, 75H
CJNE A, #10, ZINT01
MOV 75H, #0
ZINT01:
POP ACC
JMP K_EXIT
;---------------
K2: JB KEY2, K3
CALL DELAY
JB KEY2, K3
JNB KEY2, $
PUSH ACC
INC 76H
MOV A, 76H
CJNE A, #10, ZINT01
MOV 76H, #0
ZINT01:
POP ACC
JMP K_EXIT
;---------------
K3: JB KEY3, K4
CALL DELAY
JB KEY3, K4
JNB KEY3, $
PUSH ACC
DEC 75H
MOV A, 75H
CJNE A, #255, ZINT03
MOV 75H, #9
ZINT03:
POP ACC
JMP K_EXIT
;---------------
K4: JB KEY4, K_EXIT
CALL DELAY
JB KEY4, K_EXIT
JNB KEY4, $
PUSH ACC
DEC 76H
MOV A, 76H
CJNE A, #255, ZINT04
MOV 76H, #9
ZINT04:
POP ACC
K_EXIT:
RET
;---------------
DELAY:
DJNZ R7, $
DJNZ R7, $
RET
;-----------------------------------
⑽ 單片機按鍵程序
檢測一個按鍵:
;--------------掃描按鍵------
jb p1.0,next;沒按下,NEXT下一個
lcall t20ms;有,延遲20毫秒去抖
jb p1.0,next;還是沒按下,下一個
jnb p1.0,$;有,等它松開
...;
...;這里寫這個鍵的功能
next: 檢下一個鍵,或返回
....
;---------延遲---------
t20ms:
...
ret