c)增加一个按键接到P3.0,要求按一下即可实现流水灯的停止,再按一下又可实现流水灯的重新显示,原理图与代码应如何修改。 (注意:读取按钮输入时,若检测到按钮被按下需要添加延时来消抖。)原代码如下: ORG 00h LJMP START ORG 0100h START: MOV R2,#8 MOV A,#0FEH LOOP: MOV P2,A LCALL DELAY RL A DJNZ R2,LOOP LJMP START DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1
时间: 2023-05-31 15:04:27 浏览: 118
#FFh ;将R2寄存器设为全1,用于流水灯的移动
MOV P0, #00h ;将P0口设为输出口
LOOP: MOV P0, R2 ;将R2的值输出到P0口,实现流水灯的移动
INC R2 ;R2的值加1
SJMP LOOP ;跳转到LOOP标签,实现循环移动
修改后的代码如下:
ORG 00h
LJMP START
ORG 0100h
START: MOV R2, #FFh ;将R2寄存器设为全1,用于流水灯的移动
MOV P0, #00h ;将P0口设为输出口
MOV P3.0, #01h ;将P3.0口设为输入口,用于控制流水灯的停止和重新显示
LOOP: MOV P0, R2 ;将R2的值输出到P0口,实现流水灯的移动
INC R2 ;R2的值加1
CHECK: MOV A, P3.0 ;读取P3.0口的输入值
JZ STOP ;如果P3.0口被按下,则跳转到STOP标签
SJMP LOOP ;否则继续循环移动
STOP: MOV A, #0FFh ;将A寄存器设为全1
MOV P0, A ;将全1输出到P0口,停止流水灯的移动
WAIT: MOV A, P3.0 ;读取P3.0口的输入值
CJNE A, #01h, WAIT ;如果P3.0口还未被松开,则跳转到WAIT标签
SJMP LOOP ;否则重新开始流水灯的移动
阅读全文