提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
51单片机按键亮灯
ORG 0000H
LCALL DEF
LCALL ABC
LCALL BCD
LCALL CDE
LCALL MAIN
DEF: ;按下k1,p2.0和p2.7的灯亮起,若想只亮一 盏灯,即删除其中的一个LED就可以
LED0 BIT P2.0
LED7 BIT P2.7
K1 BIT P3.1
ABC: ;同上
LED1 BIT P2.1
LED6 BIT P2.6
K2 BIT P3.0
BCD: ;同上
LED2 BIT P2.2
LED5 BIT P2.5
K3 BIT P3.2
CDE: ;同上
LED3 BIT P2.3
LED4 BIT P2.4
K4 BIT P3.3
DELAY: ;延时函数
MOV R5,#2
MOV R6,#0
MOV R7,#0
DELAYLOOP:
NOP
DJNZ R7,DELAYLOOP
DJNZ R6,DELAYLOOP
DJNZ R5,DELAYLOOP
RET
KEY1: ;定义按键key1,按下k1,LED0和LED7灯亮起
JB K1, KEY_OUT
LCALL DELAY
CPL LED0
CPL LED7
JB K1, KEY_OUT
KEY2:
JB K2, KEY_OUT
LCALL DELAY
CPL LED1
CPL LED6
JB K2, KEY_OUT
KEY3:
JB K3, KEY_OUT
LCALL DELAY
CPL LED2
CPL LED5
JB K3, KEY_OUT
KEY4:
JB K4, KEY_OUT
LCALL DELAY
CPL LED3
CPL LED4
JB K4, KEY_OUT
KEY_LOOP:
JNB K1, KEY_LOOP
JNB K2, KEY_LOOP
JNB K3, KEY_LOOP
JNB K4, KEY_LOOP
KEY_OUT:
RET
MAIN:
LCALL KEY1
LCALL KEY2
LCALL KEY3
LCALL KEY4
LJMP MAIN
RET
END
总结
CSDN上有更加优化的51单片机按键亮灯的开发,我写的比较简单易懂 ,作为新人,有不足请各位大佬指出,谢谢!!!!