-
void key0()
if(p1_0!=1) *如果按下鍵 0。
delay10ms();*延遲 10 毫秒 此段是穩定,if(p1 0!)。=1) *如果您仍然按下它。
while(!p1_0)
if(p1 0) 如果拾取。
break;
fige=1 表示該鍵已被按下並抬起,可以處理了。
程式說明:埠接按鍵,按下低電平。
這部分程式的功能:檢測按鍵是否被按下,穩定抖動。 還要確保確認該按鈕只被按下了一次。
當你按下它並且不鬆手時,不要做鍵。 只有經過以下過程:按下,鬆開。 按鈕進行處理。
-
ea=1,相當於啟用所有中斷。 表示允許中斷,並且允許 timer0 生成中斷並執行 timer0 中斷函式的內容,而不是呼叫 timer0 來生成中斷。
-
ea=1 應該是完全斷開連線。
void time0() interrupt 1 是進入此函式的定時器中斷時間。
-
重新允許 EA 的總中斷,只有當 EA=1 時,CPU 才會相應地中斷系統。 void time0() interrupt 1 是乙個計時器 0 中斷子例程。 當時間到了,向CPU申請中斷,此時,如果DAO為EA=1,則響應中斷並進入中斷子程式; 如果 ea=0,則中斷不響應,也不進入子程式。
如果軟體不更改定時器的初始值,則它會將中斷應用於 CPU,直到 EA=1 並響應中斷。
這可能就是它的意思
-
建築:
main 函式 呼叫子函式 1 退出子函式 1,返回 main 函式 呼叫子函式 2 退出子函式 2,返回 main 函式。
你明白嗎,程式不能卡在子函式中,它必須在迴圈中執行每個子函式。
作為子功能,你不能行動,但你不能沒有就占領坑!
-
先檢查硬體,短路乙個按鈕,看看返回多少。
-
sysem_initial();初始化程式。
而下面,區別是乙個“虛”。
void sysem_initial()
此外,還有很多邏輯錯誤。
問題是 C:錯誤 C129:缺失';' before 'key_scan'》
呵呵,這個錯誤,最關鍵的地方是:
#include
定義 uint unsigned int 程式,此行缺失。
define uchar unsigned char 一般來說,也應該新增這一行。
-
#include
uchar key_scan();金鑰掃瞄子例程。
void delay10ms();延遲程式。
uchar key_free();等待金鑰釋放程式。
void key_deal();
sysem_initial();初始化程式。
void main()
void sysem_initial()
uchar key_scan()
else if(p1&0x03==0x02) 如果第二行有乙個債券閉合。
key=j*8+i;
if(j==0||j==1)掃瞄金鑰。
break;退出。
rankcode=(rankcode<<1)|0x01;否則,開始掃瞄下一列}}
return(key);返回鍵值。
uchar key_free()
void delay10ms()
需求之間; ,不能直接新增;
而你正在等待的上面的所有時間()都是以後需要的; 這是乙個空等待,否則將按照以下語句指令執行。
崩潰,可能是現場干擾太嚴重。 無論如何,甚至已經放棄了沒有內部程式儲存器和EEPROM的晶元。 究其原因,往往不是程式問題,而是板卡和PCB設計問題。 >>>More