本帖最后由 新鄉家電維修 于 2017-4-27 09:30 編輯
;WS2812驅動環形24燈15F104W,12m寫入
;寫程序用12M
OUT BIT P3.3
ORG 0H
ORG 30H
;==========主程序=================
MAIN:
ACALL REST
START:
ATART_0:
ACALL OOO
ACALL EEE
ACALL OOO
DJNZ R0,ATART_0
ACALL REST
ACALL ATART_00 ;全滅燈
;==============
ATART_1:
ACALL EEE2
ACALL EEE2
ACALL OOO
DJNZ R0,ATART_1
ACALL REST
ACALL ATART_00 ;全滅燈
;=============
ATART_2:
ACALL EEE
ACALL OOO
ACALL OOO
DJNZ R0,ATART_2
ACALL REST
ACALL ATART_00 ;全滅燈
;=============
ATART_3:
ACALL EEE2
ACALL OOO
ACALL EEE2
DJNZ R0,ATART_3
ACALL REST
ACALL ATART_00 ;全滅燈
;=============
ATART_4:
ACALL OOO
ACALL OOO
ACALL EEE
DJNZ R0,ATART_4
ACALL REST
ACALL ATART_00 ;全滅燈
;=============
ATART_5:
ACALL OOO
ACALL EEE2
ACALL EEE2
DJNZ R0,ATART_5
ACALL REST
ACALL ATART_00 ;全滅燈
ATART_6:
ACALL EEE2
ACALL EEE2
ACALL EEE2
DJNZ R0,ATART_6
ACALL REST
ACALL ATART_00 ;全滅燈
;=============
MOV R2,#250
ATART_7: ;雙彩色循環GGRRBBGGRRBB
DEC R2
MOV A,R2
JZ MAIN
ACALL EEE2 ;G
ACALL OOO
ACALL OOO
ACALL EEE2
ACALL OOO
ACALL OOO
ACALL OOO ;R
ACALL EEE2
ACALL OOO
ACALL OOO
ACALL EEE2
ACALL OOO
ACALL OOO ;B
ACALL OOO
ACALL EEE2
ACALL OOO
ACALL OOO
ACALL EEE2
DJNZ R0,ATART_7
ACALL REST
ATART_8:
ACALL OOO ;B
ACALL OOO
ACALL EEE2
ACALL EEE2 ;G
ACALL OOO
ACALL OOO
ACALL EEE2
ACALL OOO
ACALL OOO
ACALL OOO
ACALL EEE2
ACALL OOO
ACALL OOO
ACALL EEE2
ACALL OOO
ACALL OOO
ACALL OOO
ACALL EEE2
DJNZ R0,ATART_8
ACALL REST
ATART_9:
ACALL OOO ;B
ACALL OOO
ACALL EEE2
ACALL OOO
ACALL OOO
ACALL EEE2
ACALL EEE2
ACALL OOO
ACALL OOO
ACALL EEE2
ACALL OOO
ACALL OOO
ACALL OOO
ACALL EEE2
ACALL OOO
ACALL OOO
ACALL EEE2
ACALL OOO
DJNZ R0,ATART_9
ACALL REST
ATART_10:
ACALL OOO
ACALL EEE2
ACALL OOO
ACALL OOO ;B
ACALL OOO
ACALL EEE2
ACALL OOO
ACALL OOO
ACALL EEE2
ACALL EEE2 ;G
ACALL OOO
ACALL OOO
ACALL EEE2
ACALL OOO
ACALL OOO
ACALL OOO ;R
ACALL EEE2
ACALL OOO
DJNZ R0,ATART_10
ACALL REST
ATART_11:
ACALL OOO ;R
ACALL EEE2
ACALL OOO
ACALL OOO
ACALL EEE2
ACALL OOO
ACALL OOO ;B
ACALL OOO
ACALL EEE2
ACALL OOO
ACALL OOO
ACALL EEE2
ACALL EEE2 ;G
ACALL OOO
ACALL OOO
ACALL EEE2
ACALL OOO
ACALL OOO
DJNZ R0,ATART_11
ACALL REST
ATART_12:
ACALL EEE2
ACALL OOO
ACALL OOO
ACALL OOO ;R
ACALL EEE2
ACALL OOO
ACALL OOO
ACALL EEE2
ACALL OOO
ACALL OOO ;B
ACALL OOO
ACALL EEE2
ACALL OOO
ACALL OOO
ACALL EEE2
ACALL EEE2 ;G
ACALL OOO
ACALL OOO
DJNZ R0,ATART_12
ACALL REST
;=============
JMP ATART_7
ATART_00: ;全關閉程序
ACALL OOO
ACALL OOO
ACALL OOO
DJNZ R0,ATART_00
ACALL REST
RET
REST:
CLR OUT
ACALL DELAY1000MS
SETB OUT
mov r0,#24
RET
OOO: ;關閉
ACALL SHI_0
ACALL SHI_0
ACALL SHI_0
ACALL SHI_0
ACALL SHI_0
ACALL SHI_0
ACALL SHI_0
ACALL SHI_0
ret
EEE: ;單色顯示亮度不足,用這個高的
ACALL SHI_0
ACALL SHI_1
ACALL SHI_1
ACALL SHI_1
ACALL SHI_1
ACALL SHI_1
ACALL SHI_1
ACALL SHI_1
RET
EEE2: ;雙色顯示用這個低值的
ACALL SHI_0
ACALL SHI_0
ACALL SHI_0
ACALL SHI_1
ACALL SHI_1
ACALL SHI_1
ACALL SHI_1
ACALL SHI_1
RET
;===========01識別============
SHI_0:
SETB OUT
CLR OUT
CLR OUT
RET
SHI_1:
SETB OUT
SETB OUT
CLR OUT
RET
;-------------延時子程序-----------------
DELAY60US: ;@12.000MHz
NOP
NOP
NOP
NOP
PUSH 30H
MOV 30H,#140
NEXT:
DJNZ 30H,NEXT
POP 30H
RET
DELAY1000MS: ;@12.000MHz
NOP
NOP
NOP
PUSH 30H
PUSH 31H
PUSH 32H
MOV 30H,#37
MOV 31H,#123
MOV 32H,#89
NEXT1:
DJNZ 32H,NEXT1
DJNZ 31H,NEXT1
DJNZ 30H,NEXT1
POP 32H
POP 31H
POP 30H
RET
END
對時序要求比較高,普通51單片機難以實現。希望起到借鑒作用,大家可以編譯下試試,交流下
|