[AT89C51 ]用汇编语言实现流水灯仿真(含keil与Proteus)

       前言:笔者发文主要是为了记录笔者单片机学习课程,可能实用性不多,大佬看着玩就行。

        关键词: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运行仿真,即可看见灯亮啦! 

QQ录屏20230419203547

  • 11
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值