基于51单片机的汇编程序:拨码开关控制八位LED实现流水灯
2022-03-08,51单片机学习笔记
功能
打开K1循环左移,打开K2循环右移,打开K3两侧到中心来回点亮,打开K4单双数位置交替点亮。拨码开关优先级:K1>K2>K3>K4。
视频展示
【用汇编写流水灯:基于51单片机的拨码开关控制八位LED流水灯实验】
开发环境
Keil C51
硬件连接方式
STC89C52RC | 外设 | 描述 |
---|
P1.0 ~ P1.7 | LED1 ~ LED8 | 八位共阳极发光二极管 | P3.4 ~ P3.7 | KEY1 ~ KEY4 | 独立拨码开关 |
汇编代码
; LED点亮方式:低电平点亮
;打开K1循环左移,打开K2循环右移,打开K3两侧到中心来回点亮,打开K4单双数位置交替点亮
KEY1 BIT P3.4
KEY2 BIT P3.5
KEY3 BIT P3.6
KEY4 BIT P3.7
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV A,#0FEH
K1: JB KEY1,K2
MOV P1,A
ACALL DELAY_1S
RL A
SJMP K1
K2: JB KEY2,K3
MOV P1,A
ACALL DELAY_1S
RR A
SJMP K2
K3: JB KEY3,K4
MOV A,#07EH
MOV P1,A
ACALL DELAY_1S
JB KEY3,K4
MOV A,#0BDH
MOV P1,A
ACALL DELAY_1S
JB KEY3,K4
MOV A,#0DBH
MOV P1,A
ACALL DELAY_1S
JB KEY3,K4
MOV A,#0E7H
MOV P1,A
ACALL DELAY_1S
JB KEY3,K4
MOV A,#0DBH
MOV P1,A
ACALL DELAY_1S
JB KEY3,K4
MOV A,#0BDH
MOV P1,A
ACALL DELAY_1S
JB KEY3,K4
SJMP K3
K4: JB KEY4,OVER
MOV A,#55H
MOV P1,A
ACALL DELAY_1S
JB KEY4,OVER
MOV A,#0AAH
MOV P1,A
ACALL DELAY_1S
JB KEY4,OVER
SJMP K4
OVER:MOV A,#0FEH
AJMP K1
DELAY_1S:
MOV R5,#20
DL1:MOV R6,#100
DL0:MOV R7,#248
DJNZ R7,$ ;寄存器R7减1,不为零转移到当前地址
DJNZ R6,DL0 ;寄存器R6减1,不为零转移到DL0
DJNZ R5,DL1 ;寄存器R5减1,不为零转移到DL1
RET ;R7从250减到0时,R6减1,R6从100减到0时,R5减1,R5从20减到0时,子程序返回
END
写在最后: 本文仅为个人学习笔记,纰漏之处,欢迎斧正!
|