【摘要】:如电路原理图3.6所示,在单片机P2口外接8个发光二极管,试编写一个汇编程序,实现LED循环点亮功能:P1.0→P1.1→P1.2→…→P1.0的顺序无限循环。要求用软件延时方式控制闪烁时间间隔约为50ms。图3.6实例1电路原理图分析:由电路图可以看出二极管为低电平驱动,P1口的亮灯编码应能保证P1.0位输出低电平,其余位均为高电平,根据电路要求此编码初值应为0FEH,即D1为亮D2~D8皆为暗。如此反复进行便可实现题目要求的流水灯功能。
【例3.31】如电路原理图3.6所示,在单片机P2口外接8个发光二极管,试编写一个汇编程序,实现LED循环点亮功能:P1.0→P1.1→P1.2→…→P1.7→P1.6→P1.5…→P1.0的顺序无限循环。要求用软件延时方式控制闪烁时间间隔约为50ms。
图3.6 实例1电路原理图
分析:由电路图可以看出二极管为低电平驱动,P1口的亮灯编码应能保证P1.0位输出低电平,其余位均为高电平,根据电路要求此编码初值应为0FEH,即D1为亮D2~D8皆为暗。此后不断将亮灯编码值进行循环左移输出,亮灯位将随之由上向下变化;循环左移7次后改为循环右移,则亮灯位将随之由下向上变化。如此反复进行便可实现题目要求的流水灯功能。
参考程序如下:
ORG 30H
CYC1 EQU 200
CYC2 EQU 125
MOV A,#0FEH
MOV P1,A
MOV R2,#7
DOWN:RL A ;下行方向
ACALL DEL50
MOV P1,A
DJNZ R2,DOWN(www.xing528.com)
MOV R2,#7
UP:RR A ;上行方向
ACALL DEL50
MOV P1,A
DJNZ R2,UP
MOV R2,#7
SJMP DOWN
DEL50:MOV R7,#CYC1 ;延时50ms
DEL1:MOV R6,#CYC2
DJNZ R6,
DJMZ R7,DEL1
RET
END
由于本书侧重于用C51语言为单片机的应用系统进行编程,汇编语言的介绍仅希望大家能借助指令手册读懂汇编程序即可,因此汇编语言的编程实例这里只做简单介绍,更多的编程方法和实例将在第四章单片机的C51语言学习之后,再给大家以C语言的形式进行展现。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。