单片机试验三:跑马灯试验 |
前面我们做了二极管的点亮与熄灭和二极管闪烁试验,在这基础上我们再来做一个跑马灯试验。所用到的器件也是我们试验板上的八只二极管,要让它们一个个的轮流循环点亮,我们需要该变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 |