【实验题目】
当按键SW1被按下后,D1~D8轮流点亮,点亮时间为100ms;当按键停下后,停止轮换;再次按下后继续轮换
【实验要求】
- 编写源程序并进行注释。
- 记录实验过程。
- 记录程序运行结果。
【实验过程及结果记录(截图)】
按钮未按下:
按钮按下后:
【实验源程序】
以下程序有错误
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV SP,#60H;设置指针
CLR A;清空A中变量
CPL A;反转A中变量(置A中变量全为1)
MOV P2,A;设置初值
MOV A,#00FEH;设置偏移量
MOV 20H,A
LOOP:
JNB P1.0,LOOP;等待P1.0按下
MOV R2,8
L1:
MOV A,20H
MOV P2,A
LCALL DELAY10ms
MOV A,20H
RL A
MOV 20H,A
DJNZ R2,L1
JNB P1.0,LOOP;利用偏移控制亮灭
DELAY10ms:;延时程序
MOV R0,#100
LOOP1:MOV R1,#200
LOOP2:DJNZ R1,LOOP2
DJNZ R0,LOOP1
RET
END
下面的为正确程序:
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV SP,#60H ;设置堆栈长度为60BYTE
MOV P2,#0FFH ;将P2口所有位设置为1
MOV B,#0FEH
MOV 20H,B; 缓冲单元初始化
LOOP1:
MOV C,P1.0
JC LOOP1 ;若P1.0=1,循环不断检测
LOOP2: MOV A,20H
MOV P2,A
ACALL DL100ms ;调用100ms延时子程序
MOV A,20H
RL A ;将显示缓冲单元的值循环左移1位
MOV 20H,A
JB P1.0,LOOP1 ;JB判断P1.0是否为1,如果P1.0=1,跳转loop1
LJMP LOOP2 ;否则继续循环
DL100ms:MOV R7,#100
DL1:MOV R6,#0FFH
DL2:DJNZ R6,DL2
DJNZ R7,DL1
RET
END
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容