51单片机LED动态显示实验汇编语言
时间: 2023-07-02 16:22:50 浏览: 143
下面是51单片机LED动态显示的实验汇编语言程序:
```assembly
ORG 0H // 程序起始地址
MOV P0,#0FFH // P0口设置为输出状态,关闭LED灯
MOV P2,#0FH // P2口低四位设为输出状态,用于控制数码管
MOV R0,#0 // 初始化计数器为0
MAIN:
MOV A,R0 // 将计数器存入累加器
ANL A,#0FH // 只保留低四位(个位)
MOV P0,#0FFH // 关闭LED灯
MOV P2,#0FH // P2口低四位设为输出状态,用于控制数码管
JNB P3.2,DIS2 // 判断P3.2是否为0,若为0则跳转到DIS2
MOV P2,#0EH // P2口第二位设为0,控制数码管的L1引脚显示
JMP DISPLAY // 跳转到DISPLAY
DIS2:
MOV P2,#0DH // P2口第三位设为0,控制数码管的L2引脚显示
DISPLAY:
MOV P0,#00H // 显示编码
MOV A,R0 // 将计数器存入累加器
ANL A,#F0H // 只保留高四位(十位)
SWAP A // 高低四位交换
ORL A,#80H // 与80H或运算,使数码管显示小数点
MOV P0,A // 显示编码
ACALL DELAY // 延时
INC R0 // 计数器加1
CJNE R0,#10H,MAIN // 判断计数器是否为10,若不为10则跳转到MAIN
SJMP MAIN // 若计数器为10则跳转到MAIN
DELAY:
MOV R1,#0FFH // 初始化R1为FFH
AGAIN:
MOV R2,#0FFH // 初始化R2为FFH
AGAIN1:
DJNZ R2,AGAIN1 // R2自减,若R2不为0,则跳转到AGAIN1
DJNZ R1,AGAIN // R1自减,若R1不为0,则跳转到AGAIN
RET // 延时结束,返回
```
此程序使用了共阴极数码管显示0~9的编码,通过循环动态显示0~9,每次循环调用显示函数,在显示函数中获取十位和个位上的数,然后依次显示出来。其中,延时函数用于控制显示时间。汇编语言相对于C语言来说,更加底层,更加灵活,但是需要掌握更多的指令和语法。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)