前面做了二极管的点亮与平息和二极管闪耀实验,在这基础上再来做一个跑马灯实验。所用到的器材也是实验板上的八只二极管,要让它们一个个的轮番循环点亮,需求该变P1口的值,即先送入11111110B给P1口,让榜首只二级管点亮,因为程序执行时间很短(微秒级),所以咱们需求它亮一段时间,便是所说的延时;然后再送入11111101B给P1口即第二只点亮,其它都是平息的,延时,再让第三只点亮。就这样不断的循环,这就成 跑马灯了。程序如下:
榜首种:
ORG 1000H
LJMP BEGIN
BEGIN: MOV A,#11111110B ;低电平对应的发光二极管亮
MOV P1,A ;将值送到P1口,榜首只点亮
LCALL DL ;调用延时
MOV A,#11111101B
MOV P1,A ;第二只点亮
LCALL DL ;调用延时
MOV A,#11111011B
MOV P1,A ;第三只点亮
LCALL DL ;调用延时
MOV A,#11110111B
MOV P1,A ;第四只点亮
LCALL DL ;调用延时
MOV A,#11101111B
MOV P1,A ;第五只点亮
LCALL DL ;调用延时
MOV A,#11011111B
MOV P1,A ;第六只点亮
LCALL DL ;调用延时
MOV A,#10111111B
MOV P1,A ;第七只点亮
LCALL DL ;调用延时
MOV A,#01111111B
MOV P1,A ;第八只点亮
LCALL DL ;调用延时
LJMP BEGIN ;循环
DL: MOV R7,#0A3H ;延时程序
DL1: MOV R6,#0FFH
DL2: DJNZ R6,DL2
DJNZ R7,DL1
RET
END
第二种:
ORG 0100H
LJMP BEGIN
BEGIN: MOV A,#11111110B
LOOP: MOV P1,A
MOV R5,#2
DEL0: MOV R6,#250
DEL1: MOV R7,#250
DEL2: DJNZ R7,DEL2
DJNZ R6,DEL1
DJNZ R5,DEL0
RRC A ;循环右移一位点亮下一个发光二极管
LJMP LOOP ;循环
END
两种差异在于第二种使用了RRC指令,这说明编程序要充分利用指令,这样功率才高。