導航:首頁 > 操作系統 > 單片機按鍵掃描子程序定義出錯

單片機按鍵掃描子程序定義出錯

發布時間:2023-07-12 11:40:39

❶ 關於C51單片機 按鍵 編程的問題

#include<reg51.h>
uchar key_scan(); //按鍵掃描子程序
void delay10ms(); //延時程序
uchar key_free(); //等待按鍵釋放程序
void key_deal();
sysem_initial(); //初始化程序
void main()
{
sysem_initial();
while(1)
{
key_scan();
uchar key_free();
key_deal();
}
}
void sysem_initial()
{
PCON=0x00;
SCON=0x18; //選擇串列工作方式0
ES=0; //禁止串列口中斷
}
uchar key_scan()
{
unsigned char key,Rankcode;
int i,j;
SBUF=0x00; //使掃描鍵盤的74LS164輸出為00H,所有列線低電平
while(TI!=1); //串列輸出完否
TI=0; //清零
P1=0x03; //所有行線為高電平
if(P1&0x03!=1) //如果有鍵按下
{
delay10ms();
for(i=0;i<8;i++)
{
if(P1&0x03!=1) //確實有鍵按下
{
Rankcode=0xFE; //掃描第一列
SBUF=Rankcode; //輸出列值
while(TI!=1);
TI=0;
if(P1&0x03==0x01) //如果第一行有鍵閉合
{
j=0;
}
else if(P1&0x03==0x02) //如果第二行有鍵閉合
{
j=1;
}
key=j*8+i;
}
if(j==0||j==1) //掃描按鍵
break; //退出
Rankcode=(Rankcode<<1)|0x01; //否則,開始掃描下一列
}
}
return(key); //返回鍵值
}
uchar key_free()
{
key=key_scan();
SBUF=0x00;
P1=0x03;
while(TI!=1);
TI=0;
while(P1&0x03!=0x03); //如果仍有鍵按下,等待按鍵釋放
return(key);
}
void delay10ms()
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<120;j++);//你的問題出在這里{}之間需要;,可以不要直接加;
}
//還有你上面所有等待的while() 後面都需要;這才是空等待,否則是帶後面的語句指令一起執行

❷ 單片機調試的時候出錯了 求大神

就這個程序而言,就純在這幾個錯誤,只要是有錯誤就無法編譯成功


錯誤一、按鍵檢測函數內,賦值語句被你寫成判斷語句了,如下圖這里

解決辦法是,將temp的變數聲明語句移到函數外,使其成為全局變數


錯誤三、既然程序的前端有各個函數的定義部分,那就要吧主函數放在最上端,不需要經常修改的函數放在最下端,雖然這不是強制性的,但這是一個良好的編程習慣


先改正以上錯誤吧!

❸ 51單片機 計算器程序 不能成功 按鍵按下沒反應 附上程序 看哪裡錯誤

看不太懂,不過發現好象按鍵掃描程序有誤
象 P1=0xf0; 你的目的可能是讓高4 位作為輸出,低4 位作嫌拿為輸入
按鍵按下時,高4 位的1傳到低4 位上,芹鍵搭這樣是不行的
對於51單片機,由於是弱上拉,只有0將1拉低,1不可能將0填高
就是說讓 P1=0xf0,讀取P1,低4 位永遠亮段是0
if(P1==0xf1) if (P1==0xf2).......等條件永遠不具備

閱讀全文

與單片機按鍵掃描子程序定義出錯相關的資料

熱點內容
php中類的繼承 瀏覽:228
openvpnlinux安裝配置 瀏覽:463
PHP7從入門到精通 瀏覽:27
單片機生日 瀏覽:500
linux當前進程號 瀏覽:728
老死pdf 瀏覽:25
雲伺服器關機網址不見了 瀏覽:69
余冠英pdf 瀏覽:755
開發一個app上市需要什麼步驟 瀏覽:28
phpsleep方法 瀏覽:430
時間同步伺服器ip地址6 瀏覽:926
鋼琴譜pdf下載 瀏覽:524
香港阿里雲伺服器怎麼封udp 瀏覽:875
APp買海鮮到哪裡 瀏覽:501
遼油社保app總提示更新怎麼辦 瀏覽:586
導入源碼教程視頻 瀏覽:613
天翼貸app在哪裡下載 瀏覽:186
app開發源碼查看器 瀏覽:516
程序員發展到了一個瓶頸 瀏覽:120
程序員去機房幹嘛 瀏覽:697