?? 漸變七彩燈.txt
字號:
/*---------------------------------------*/
/*P1。5接紅LED,P1。4接綠色LED,P1。3接藍色
/*LED,總共分三檔,分別由P1。0、P1。1、P1。2
/*控制,P1。0為低時變色速度最慢,P1。2最高.*/
CO EQU 2 ; 0.25MS計數?計數200表示50MS
CU EQU 5 ;50MS計數器,計數20表示1
QDSHJ EQU 200 ;按鍵首次啟動加減速的時間控制,小時和分鐘使用同一個數字以同步
LISHJ EQU 10 ;設定連加減的速度
LO EQU 0AAH
HI EQU 3CH
ALL_RED EQU 50 ;最終點亮的時間控制
STOP EQU 18 ;計到此處表示完全點亮
COUNTER EQU 021H ;最終點亮開始計數
RED_ON EQU 022H ;開始慢慢點亮計數
RED_OFF EQU 023H ;開始慢慢變暗計數
RED_COUNTER EQU 024H
DEDA EQU 025H
WLED EQU P3.0
RED EQU P3.2
GREEN EQU P3.3
BLUE EQU P3.4
ORG 00H
CALL LED_BL
CALL START
ORG 0100H
LOOP:
CALL RED_LED
LOOP1:
CALL PURPLE_LED
CALL BLUE_LED
CALL CYAN_LED
CALL GREEN_LED
CALL YELLOW_LED
CALL WHITE_LED
CALL BLACK_LED
JMP LOOP1
;------------------------------------------
;------------------------------------------
RED_LED:
MOV COUNTER,#0
MOV RED_ON,#0
MOV RED_OFF,#250
RED_LED0:
INC RED_ON
DEC RED_OFF
;---------------------------------------------------------
;一個周期程序
RED_LED1:
MOV A,RED_OFF
MOV R4,A
MOV A,RED_ON
MOV R5,A
RED_LED2:
SETB RED ;此處關閉LED
SETB BLUE
SETB GREEN
CALL DEX
DJNZ R4,RED_LED2
CLR RED
SETB BLUE
SETB GREEN
RED_LED3:
CALL DEX
DJNZ R5,RED_LED3
;---------------------------------------------------------
INC COUNTER
MOV A,COUNTER
CJNE A,#249,RED_LED0 ;跳入RED_LED0加大占空比
MOV RED_ON,#0
MOV RED_OFF,#250
MOV COUNTER,#0
CLR RED ;直接啟動,控制MOS管
SETB BLUE
SETB GREEN
CALL DELAY1
RET
;-------------------------------------------
;------------------------------------------
GREEN_LED:
MOV COUNTER,#0
MOV RED_ON,#0
MOV RED_OFF,#250
SETB RED
GREEN_LED0:
INC RED_ON
DEC RED_OFF
;---------------------------------------------------------
;一個周期程序
GREEN_LED1:
MOV A,RED_OFF
MOV R4,A
MOV A,RED_ON
MOV R5,A
GREEN_LED2:
CLR BLUE
CLR GREEN
CALL DEX
DJNZ R4,GREEN_LED2
SETB BLUE
CLR GREEN
GREEN_LED3:
CALL DEX
DJNZ R5,GREEN_LED3
;---------------------------------------------------------
INC COUNTER
MOV A,COUNTER
CJNE A,#249,GREEN_LED0 ;跳入RED_LED0加大占空比
MOV RED_ON,#0
MOV RED_OFF,#250
MOV COUNTER,#0
SETB RED
SETB BLUE
CLR GREEN
CALL DELAY1
RET
;-------------------------------------------
;------------------------------------------
BLUE_LED:
MOV COUNTER,#0
MOV RED_ON,#0
MOV RED_OFF,#250
SETB GREEN
BLUE_LED0:
INC RED_ON
DEC RED_OFF
;---------------------------------------------------------
;一個周期程序
BLUE_LED1:
MOV A,RED_OFF
MOV R4,A
MOV A,RED_ON
MOV R5,A
BLUE_LED2:
CLR BLUE
CLR RED
CALL DEX
DJNZ R4,BLUE_LED2
CLR BLUE
SETB RED
BLUE_LED3:
CALL DEX
DJNZ R5,BLUE_LED3
;---------------------------------------------------------
INC COUNTER
MOV A,COUNTER
CJNE A,#249,BLUE_LED0 ;跳入RED_LED0加大占空比
MOV RED_ON,#0
MOV RED_OFF,#250
MOV COUNTER,#0
CLR BLUE
SETB GREEN
CALL DELAY1
RET
;-------------------------------------------
;------------------------------------------
PURPLE_LED:
MOV COUNTER,#0
MOV RED_ON,#0
MOV RED_OFF,#250
CLR RED ;此處關閉LED
PURPLE_LED0:
INC RED_ON
DEC RED_OFF
;---------------------------------------------------------
;一個周期程序
PURPLE_LED1:
MOV A,RED_OFF
MOV R4,A
MOV A,RED_ON
MOV R5,A
PURPLE_LED2:
SETB BLUE
SETB GREEN
CALL DEX
DJNZ R4,PURPLE_LED2
CLR BLUE
SETB GREEN
PURPLE_LED3:
CALL DEX
DJNZ R5,PURPLE_LED3
;---------------------------------------------------------
INC COUNTER
MOV A,COUNTER
CJNE A,#249,PURPLE_LED0 ;跳入RED_LED0加大占空比
MOV RED_ON,#0
MOV RED_OFF,#250
MOV COUNTER,#0
CLR RED ;直接啟動,控制MOS管
CLR BLUE
SETB GREEN
CALL DELAY1
RET
;-------------------------------------------
;------------------------------------------
CYAN_LED:
MOV COUNTER,#0
MOV RED_ON,#0
MOV RED_OFF,#250
SETB RED
CYAN_LED0:
INC RED_ON
DEC RED_OFF
;---------------------------------------------------------
;一個周期程序
CYAN_LED1:
MOV A,RED_OFF
MOV R4,A
MOV A,RED_ON
MOV R5,A
CYAN_LED2:
CLR BLUE
SETB GREEN
CALL DEX
DJNZ R4,CYAN_LED2
CLR BLUE
CLR GREEN
CYAN_LED3:
CALL DEX
DJNZ R5,CYAN_LED3
;---------------------------------------------------------
INC COUNTER
MOV A,COUNTER
CJNE A,#249,CYAN_LED0 ;跳入RED_LED0加大占空比
MOV RED_ON,#0
MOV RED_OFF,#250
MOV COUNTER,#0
SETB RED
CLR BLUE
CLR GREEN
CALL DELAY1
RET
;-------------------------------------------
;------------------------------------------
YELLOW_LED:
MOV COUNTER,#0
MOV RED_ON,#0
MOV RED_OFF,#250
SETB BLUE
YELLOW_LED0:
INC RED_ON
DEC RED_OFF
;---------------------------------------------------------
;一個周期程序
YELLOW_LED1:
MOV A,RED_OFF
MOV R4,A
MOV A,RED_ON
MOV R5,A
YELLOW_LED2:
SETB RED
CLR GREEN
CALL DEX
DJNZ R4,YELLOW_LED2
CLR RED
CLR GREEN
YELLOW_LED3:
CALL DEX
DJNZ R5,YELLOW_LED3
;---------------------------------------------------------
INC COUNTER
MOV A,COUNTER
CJNE A,#249,YELLOW_LED0 ;跳入RED_LED0加大占空比
MOV RED_ON,#0
MOV RED_OFF,#250
MOV COUNTER,#0
SETB BLUE
CLR GREEN
CLR RED
CALL DELAY1
RET
;-------------------------------------------
;------------------------------------------
WHITE_LED:
MOV COUNTER,#0
MOV RED_ON,#0
MOV RED_OFF,#250
WHITE_LED0:
INC RED_ON
DEC RED_OFF
;---------------------------------------------------------
;一個周期程序
WHITE_LED1:
MOV A,RED_OFF
MOV R4,A
MOV A,RED_ON
MOV R5,A
WHITE_LED2:
SETB BLUE
CLR RED
CLR GREEN
CALL DEX
DJNZ R4,WHITE_LED2
CLR RED
CLR GREEN
CLR BLUE
WHITE_LED3:
CALL DEX
DJNZ R5,WHITE_LED3
;---------------------------------------------------------
INC COUNTER
MOV A,COUNTER
CJNE A,#249,WHITE_LED0 ;跳入RED_LED0加大占空比
MOV RED_ON,#0
MOV RED_OFF,#250
MOV COUNTER,#0
CLR BLUE
CLR GREEN
CLR RED
CALL DELAY1
RET
;-------------------------------------------
;------------------------------------------
BLACK_LED:
MOV COUNTER,#0
MOV RED_ON,#0
MOV RED_OFF,#250
BLACK_LED0:
INC RED_ON
DEC RED_OFF
;---------------------------------------------------------
;一個周期程序
BLACK_LED1:
MOV A,RED_OFF
MOV R4,A
MOV A,RED_ON
MOV R5,A
BLACK_LED2:
CLR BLUE
CLR RED
CLR GREEN
CALL DEX
DJNZ R4,BLACK_LED2
CLR RED
SETB GREEN
SETB BLUE
BLACK_LED3:
CALL DEX
DJNZ R5,BLACK_LED3
;---------------------------------------------------------
INC COUNTER
MOV A,COUNTER
CJNE A,#249,BLACK_LED0 ;跳入RED_LED0加大占空比
MOV RED_ON,#0
MOV RED_OFF,#250
MOV COUNTER,#0
SETB BLUE
SETB GREEN
CLR RED
CALL DELAY1
RET
;-------------------------------------------
;-------------------------------------------
START:
MOV P1,#0FFH
MOV P3,#0FFH
RET
;--------------------------------------------
;----------------------------------------------
; timer delay 10.151ms
DELAY:
MOV R6,#50
DEL:
MOV R7,#100
DJNZ R7,$
DJNZ R6,DEL
DJNZ R5,DELAY
RET
;----------------------------------------------
;----------------------------------------------
; timer delay 10.151ms
DELAY1:
MOV R5,#200
MOV R6,#50
DEL1:
MOV R7,#100
DJNZ R7,$
DJNZ R6,DEL1
DJNZ R5,DELAY
RET
;----------------------------------------------
;----------------------------
;LED閃動程序
LED_BL:
MOV R4,#6 ;閃動6次
LE1:
CPL P3.0
MOV R5,#10 ;5 x 10.151ms
CALL DELAY
DJNZ R4,LE1
RET
;---------------------------
;-------------------------------
;500us延時程序
DEX:
MOV R6,#1
MOV R7,#15 ;2us
DE1:
NOP ;1 X 20us
DJNZ R7,DE1 ;2 X 20us
DJNZ R6,DE1
RET ; 2us
;------------------------------
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -