JNB鍵_push,rdk1
//判斷按鍵是否被按下。如果按下,會跳轉到rdk1。KEY_PUSH是您設置的微控制器引腳上的按鍵。
Jnz RDK0
Lcall延遲10毫秒//延遲
lcall getk
jnz rdk9
CLR KEY_PUSH //清除
SETB p 3.2;清除蜂鳴聲
RET //程序結束
如果rdk0: cjnea、key_back和rdk9//a的值不等於key _ back的值,則跳轉到rdk9。
Lcall延遲10毫秒//延遲
l呼叫獲取//延遲
Cjne a,key_back,rdk9 //重新判斷是否相等。
mov a的值key_ctl //key_ctl給a。
Jnz rdk01 //根據結果,如果不是0,跳轉到rdk01。
mov a,key_back //key_back的值給a。
Movkey,a//a的值給key。
Ret //子程序返回
Rdk0程序:
rdk 01:deckey _ CTL//key _ CTL的值減去1。
Sjmp rdk9 //跳轉到rdk9
Rdk01程序統計擊鍵次數,然後介紹程序。
Rdk1: jz rdk9 //等於0跳轉到rdk9。
Movkey,a//a的值給key。
lcall delay 10ms;按鍵、延遲、抖動消除
Lcall getk // call getk
cjne a,key,rdk2 //
mov key_back,a
clr p3.2密鑰確認
Setb key_push //設置1。
Mov key_ctl,#20 //賦值#20
Ret //子程序返回
Rdk2: mov鍵,#00h //清除鍵。
Rdk9: RET //中斷程序返回,程序到此結束。
Getk: clr p2.4 // clear引腳2.4。
Mov p0,#0ffh //設置1,p0的八個引腳。
Nop //清空操作
not otherwise provided 除非另有規定
mov a的值p0 //P0給a。
Cpl a //a反轉
Anl a,#1fh //邏輯AND,把值給a。
Setb p2.4 //P2.4設置為1。
Ret //子程序返回
上面的getk程序,密鑰信息取自P0端口的低5端口,
Delay10ms:推送00 //延時程序,10ms。
按01
mov r0,#00
mov r1,#24
D10ms1: djnz r0,$ //延時程序
djnz r1,d10ms1
pop 01
流行00
浸水使柔軟