📄 led_5.asm
字号:
;四键控制四个数码管, 同时键按下时蜂鸣器响一下
;分别对应于8421码
;硬件设置
BEEP BIT P2.0 ;蜂鸣器伪指令
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: LJMP MAIN ;无键,跳回去重新判断
M_001: MOV P0, #10000000B ;打开第一个灯
MOV P2, #01111111B
CLR BEEP ;打开蜂鸣器
LCALL DEL ;调延时子程序
MOV P0, #0FFH ;关闭第一个灯
MOV P2, #0FFH
SETB BEEP ;关闭蜂鸣器
LJMP MAIN ;跳回去重新判断
M_002: MOV P0, #10011001B ;打开第二个灯
MOV P2, #10111111B
CLR BEEP ;打开蜂鸣器
LCALL DEL
SETB BEEP ;关闭蜂鸣器
MOV P0, #0FFH
MOV P2, #0FFH
LJMP MAIN
M_003: MOV P0, #10100100B ;打开第三个灯
MOV P2, #11011111B
CLR BEEP ;打开蜂鸣器
LCALL DEL
MOV P0, #0FFH
MOV P2, #0FFH
SETB BEEP ;关闭蜂鸣器
LJMP MAIN
M_004: MOV P0, #11111001B ;
MOV P2, #11101111B ;打开第四个灯
CLR BEEP ;打开蜂鸣器
LCALL DEL
MOV P0, #0FFH
MOV P2, #0FFH
SETB BEEP ;关闭蜂鸣器
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 + -