这段代码要如何修改使得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 RET END
时间: 2023-06-01 17:03:24 浏览: 119
按钮控制流水灯
#0FFH ;设置循环次数 MOV R3, #0 ;设置计数器 MOV P1, #0 ;设置P1口输出为0 MOV P3.0, #1 ;设置P3.0口输出为1 LOOP: MOV A, R3 ;将计数器的值赋给累加器 ACALL DELAY ;调用延时函数 INC R3 ;计数器加一 CPL P1.0 ;取反P1.0口输出 CJNE R3, R2, LOOP ;如果计数器不等于循环次数,则跳回LOOP,继续循环 SJMP START ;否则跳回START,重新开始运行程序
修改后的代码如下:
ORG 00h
LJMP START
ORG 0100h
START:
MOV R2, #0FFH ;设置循环次数
MOV R3, #0 ;设置计数器
MOV P1, #0 ;设置P1口输出为0
MOV P3.0, #1 ;设置P3.0口输出为1
LOOP:
MOV A, P3.0 ;读取P3.0口输入值
CJNE A, #0, STOP ;如果P3.0接地,则跳到STOP,停止流水灯
MOV A, R3 ;将计数器的值赋给累加器
ACALL DELAY ;调用延时函数
INC R3 ;计数器加一
CPL P1.0 ;取反P1.0口输出
CJNE R3, R2, LOOP ;如果计数器不等于循环次数,则跳回LOOP,继续循环
SJMP START ;否则跳回START,重新开始运行程序
STOP:
SJMP STOP ;循环等待,停止流水灯
在原代码的基础上,添加了一个读取P3.0口输入值的指令,判断P3.0是否接地。如果P3.0接地,则跳到STOP标签,停止流水灯;否则继续流水灯的运行。STOP标签里只有一个无限循环,保证流水灯停止。
阅读全文