汇编利用单片机和8 个LED 发光二极管等器件,制作一个单片机控制的流水灯系统: 单片机的P2.0~P2 .7 接有8个发光二极管, 运行程序,单片机控制8个发光二极管进行流水灯操作,流水灯从上到下依次点亮,反复循环。对本实验进行改进,增加一个按键接到P3.0,要求按一下即可实现流水灯的停止,再按一下又可实现流水灯的重新显示,原理图与代码应如何修改
时间: 2023-05-31 14:04:59 浏览: 206
原理图:
![image.png](attachment:image.png)
代码:
```
ORG 0H
MOV P2,#0FFH ;初始化P2口为输出
MOV P3,#01H ;初始化P3.0口为输入
MOV A,#80H ;将A寄存器赋值为10000000
AGAIN:
MOV P2,A ;将A寄存器的值输出到P2口
ACALL DELAY ;延时
RRC A ;将A寄存器的值循环右移1位
JNB P3.0,AGAIN ;判断P3.0是否为低电平,如果是则跳转到AGAIN标签
JMP STOP ;如果不是则跳转到STOP标签
DELAY:
MOV R2,#50H
D1:
DJNZ R2,$
RET
STOP:
CLR A ;将A寄存器清零
MOV P2,A ;将A寄存器的值输出到P2口
WAIT:
JNB P3.0,WAIT ;等待P3.0被按下
SJMP AGAIN ;再次跳转到AGAIN标签
END
```
在原来的程序基础上,增加了P3.0口的初始化为输入,并在程序中增加了判断P3.0口电平的代码。如果P3.0口为低电平,则跳转到STOP标签,将流水灯停止;如果P3.0口为高电平,则跳转到AGAIN标签,继续执行流水灯循环。在STOP标签中,将A寄存器清零并输出到P2口,实现灯全灭的效果。在WAIT标签中,等待P3.0被按下,再次跳转到AGAIN标签,实现流水灯重新显示的效果。
阅读全文