P1口亮灯实验
一、实验目的
1、熟悉编程和程序调试
2、学习P1口的使用方法
3、学习延时子程序的编写
二、实验内容
P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮,修改程序,改变延时常数,使发光二极管闪亮时间改变,并使发光二极管闪亮移位方向改变。
三、程序框图
四、实验步骤
1、用8芯线将P1.0~P1.7连至L1~L8;
2、运行程序HW01.asm,观察发光二极管闪亮移位情况。
五、实验结果
程序源代码
ORG 0000H
LJMP SE18
ORG 0080H
SE18: MOV P1,#0FFH ;送P1口
LO34: MOV A,#0FEH ;L1发光二极管点亮
LO33: MOV P1,A
LCALL SE19 ;延时
RL A ;左移位
SJMP LO33 ;循环
SE19: MOV R6,#0A0H ;延时子程序
LO36: MOV R7,#0FFH
LO35: DJNZ R7,LO35
DJNZ R6,LO36
RET
END
改变延时常数,使发光二极管闪亮时间改变,并使发光二极管闪亮移位方向改变
源代码
ORG 0000H
LJMP SE18
ORG 0080H
SE18: MOV P1,#0FFH ;送P1口
LO34: MOV A,#0FEH ;L1发光二极管点亮
LO33: MOV P1,A
LCALL SE19 ;延时
LCALL SE19 ;延时
LCALL SE19 ;延时
LCALL SE19 ;延时
LCALL SE19 ;延时
LCALL SE19 ;延时
LCALL SE19 ;延时
LCALL SE19 ;延时
LCALL SE19 ;延时
RR A ;右移位
SJMP LO33 ;循环
SE19: MOV R6,#0A0H ;延时子程序
LO36: MOV R7,#0FFH
LO35: DJNZ R7,LO35
DJNZ R6,LO36
RET
END
七、实验结论、实验体会
此次实验是单片机上机操作的第一次实验,由于此前已经在软件实验中接触过所需的Keil软件,遂在软件安装等方面没有花费太多时间;实验前半部分是将既定程序通过软件连接至机箱执行,其实验结果为LED灯从左到右依次点亮,在第二个灯点亮时前一个灯熄灭,形成流水灯效果,此部分没有遇到太大的困难;更改延时程序部分,经过查询,由于Keil该软件不支持传送立即数数据首位为子母位以及一些未知问题、且经过测试更改R6为#0A00H或者#0A000H均无法实现相应延时效果,其结果不是不能运行,即是程序报错,我们遂采取下策,将原程序的延时子程序多次调用以实现LED灯亮灭间隔达到1S的效果;另外把左移指令RL改为右移指令RR,则可以使发光二极管闪亮方向改变。
发表吐槽
你肿么看?
既然没有吐槽,那就赶紧抢沙发吧!