前言:笔者发文主要是为了记录笔者单片机学习课程,可能实用性不多,大佬看着玩就行。
关键词: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