前言:笔者发文主要是为了记录笔者单片机学习课程,可能实用性不多,大佬看着玩就行。
关键词:51单片机;AT89C51;流水灯仿真;初学
要求:使用AT89C51实现流水灯,使用汇编语言。
思路:用51单片机8个P1口输出实现8个LED灯依次亮灭,实现流水目标
硬件:连接如图
Proteus用到的都是简单的操作,画图和放元件若是有不懂的再说吧。
软件:用汇编语言
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV SP, #60H
MOV A, #0FEH; 设置灯亮 11111110
LOOP:
INC R0; 增加R0值,开始计数
RR A ; 开始亮8灯 逆向流水,从下至上亮,本质是做环移
MOV P1,A ; 激活P1口
ACALL DELAY; 进入延时,1S
AJMP LOOP; 返回LOOP循环
AJMP $;
DELAY:
MOV R4, #20; 1us 12HZ 机器时间周期为1us
DEL1:
MOV R6, #100; 1us T=(1+1+1+((250*2+2)*100+2)*20+2)=1004050us 1s
DEL2:
MOV R7, #250; 1us
DJNZ R7,$; 2us 循环250次 该语句消耗2微秒,一个机器周期
DJNZ R6,DEL2; 2us 每次减1,不等于0则跳转,该语句即为从Del1到这句,循环100
次
DJNZ R4,DEL1; 2us 循环20次
RETI ; 2us
END
记得选中keil项目output的输出hex文件,导入Proteus的单片机即可:
选目标选项
勾选create hex file,然后编译
查看结果
成功,接下来去Proteus里面啦
选中单片机元件编辑
找到hex文件位置,点ok即可
到Proteus运行仿真,即可看见灯亮啦! 文章来源:https://www.toymoban.com/news/detail-745662.html
QQ录屏20230419203547文章来源地址https://www.toymoban.com/news/detail-745662.html
到了这里,关于[AT89C51 ]用汇编语言实现流水灯仿真(含keil与Proteus)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!