51case

时间:2024-10-28 19:32:18编辑:阿星

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
;-----------------------------------


51单片机两程序独立按键切换连接程序怎么写?

两段程序还是要合并成一个主程序的,只是分开成两段而已。
sbit ins1=独立按键所在I/O脚;
bit keyab=0; //区分执行A,B程序的标志位,=0,执行A段,=1执行B段
main()
{
...........
while(1) //while前的程序照常写
{
if(ins1==0)
{
keyab=!keyab;
while(ins1==0);
}
if(keyab==1)
{
A段程序写在这里
}
else
{
B段程序写在这里
}
}
}
这样写后,原来A、B程度中的while(1)就不能再写了。而是将while(1)以下程序写到这里。


上一篇:ai考拉

下一篇:没有了