📄 led_4.asm
字号:
;四键控制四个灯
;查表法实现灯的亮灭
key bit p3.3
ORG 0000H ;伪指令
LJMP MAIN ;跳转到单片机的主程序
ORG 0100H ;伪指令,单片机主程序的开始
MAIN: MOV P1, #0FFH ;将P1口上的灯全部关掉
MOV P2,#0FFH
clr key ;将键盘列线拉低
MOV A, P2 ;从P2口上读出按键状态
ANL A, #11111100B ;选出状态位置
CJNE A, #01111100B,M_01 ;比较键值,是第一个键吗
LJMP M_001 ;是的
M_01: CJNE A, #10111100B,M_02 ;是第二个键吗
LJMP M_002 ;是第二个键
M_02: CJNE A, #11011100B,M_03 ;是第三个键吗
LJMP M_003 ;是第三个键
M_03: CJNE A, #11101100B,M_04 ;是第四个键吗
LJMP M_004 ;是第四个键
M_04: CJNE A, #11110100B,M_05 ;是第五个键吗
LJMP M_005 ;是第五个键
M_05: CJNE A, #11111000B,M_06 ;是第六个键吗
LJMP M_006 ;是第六个键
M_06: LJMP MAIN ;无键,跳回去重新判断
M_001: CLR P1.0 ;打开第一个灯
LCALL DEL ;调延时子程序
SETB P1.0 ;关闭第一个灯
LJMP MAIN ;跳回去重新判断
M_002: CLR P1.1 ;打开第二个灯
LCALL DEL
SETB P1.1
LJMP MAIN
M_003: CLR P1.2 ;打开第三个灯
LCALL DEL
SETB P1.2
LJMP MAIN
M_004: CLR P1.3 ;打开第四个灯
LCALL DEL
SETB P1.3
LJMP MAIN
M_005: CLR P1.4 ;打开第五个灯
LCALL DEL
SETB P1.4
LJMP MAIN
M_006: CLR P1.5 ;打开第六个灯
LCALL DEL
SETB P1.5
LJMP MAIN
DEL: MOV R6, #0FFH ;延时子程序
DEL_1: MOV R7, #0FFH
DEL_0: NOP
NOP
DJNZ R7, DEL_0
DJNZ R6, DEL_1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -