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

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

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

 
需要单片机试验开发板请进!

返回首页

关闭本窗口