流水灯花灯的c语言程序,用汇编语言编八路彩灯控制系统(流水灯)

1、D1~D8八个彩灯按规定顺序依次点亮(间隔1秒),最后全亮;

2、按规定顺序依次熄灭(间隔1秒),最后全灭;

3、八个灯同时点亮,保持1秒;

4、八个灯同时熄灭,保持0.5秒;

再将第3、4步重复4遍,最后整个程序再重复N遍。

5、让八个灯依次显示为0100 1001

问题补充:“规定顺序”就是D1,D2,D3,D4...D8

悬赏分:105 - 解决时间:2010-7-3 13:44

=================================================================

最佳答案:

;假设1:D1~D8八个彩灯接在P1口,输出低电平发光

;假设2:系统晶振为12MHz

;假设3:N = 5

;程序如下:

ORG 0000H

MOV R3, #5 ;N=5

LOOP0:

MOV A, #0FFH

MOV P1, #0FFH ;开始时全灭

;-------------------------------逐个点亮

MOV R2, #8

LOOP1: CLR C

RLC A

MOV P1, A

CALL DL500MS

DJNZ R2, LOOP1

;-------------------------------逐个熄灭

MOV R2, #8

LOOP2: SETB C

RLC A

MOV P1, A

CALL DL500MS

DJNZ R2, LOOP2

;-------------------------------全亮、全灭交替

MOV R2, #4

LOOP3: MOV P1, #0 ;全亮

CALL DL500MS

CALL DL500MS ;共1s

MOV P1, #255 ;全灭

CALL DL500MS ;0.5s

DJNZ R2, LOOP3

;-------------------------------

DJNZ R3, LOOP0

MOV P1, #01001001B ;5、显示为0100 1001

CALL DL500MS

CALL DL500MS ;共1s

SJMP 0000H ;重新开始N遍

;-------------------------------延时子程序

DL500MS:

MOV R5, #9 ;1T

DL1: MOV R6, #128 ;1T

DL2: MOV R7, #215 ;1T

NOP ;1T

DL3: DJNZ R7, DL3 ;2T 2 * 215 = 430 T

DJNZ R6, DL2 ;2T [1+1+430+2] * 128 = 55552 T

DJNZ R5, DL1 ;2T [1+55552+2] * 9 = 499995 T

RET ;2T 1 + 499995 + 2 = 499998 T

;-------------------------------------

END

用PROTEUS仿真截图如下: