微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机试验三:跑马灯试验

单片机试验三:跑马灯试验

时间:12-03 来源:互联网 点击:
前面做了二极管的点亮与熄灭和二极管闪烁试验,在这基础上再来做一个跑马灯试验。所用到的器件也是试验板上的八只二极管,要让它们一个个的轮流循环点亮,需要该变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指令,这说明编程序要充分利用指令,这样效率才高。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top