📄 back.asm
字号:
; 本程序为回路控制器专用程式,内有闪烁、跳变、渐变三种完整的模式。
;ERIC 2006年10月29日。
R_OUT BIT P1.7
G_OUT BIT P1.6
B_OUT BIT P1.5
CHECK BIT P3.5
DIM_COUNT EQU 2CH ;PWM基本廷时计数
MS_COUNT EQU 2DH ;毫秒级廷时计数,用于控制节拍
SPEED EQU 2FH ;从外部读入开关值
R_LUM EQU 28H ;亮度
G_LUM EQU 29H
B_LUM EQU 2AH
ORG 0000H
LJMP RESET
ORG 000BH
; LJMP T0_INT
RET
ORG 0013H
RET
ORG 001BH
LJMP T0_INT
;RET
ORG 0050H
RESET:
MOV @R0,#70H
CLR A
CLEAR: MOV @R0,A
NOP
DJNZ R0,CLEAR
;===================================================
MOV SP,#60H ;60H
MOV PSW,#00H
MOV SPEED,#04H
; MOV SCON,#30H
MOV TMOD,#26H ;定时器1采用方式0
MOV TH1,#0FDH
; MOV TL0,#0ABH
SETB ET1
SETB TR1
SETB EA
CLR R_OUT
CLR G_OUT
CLR B_OUT
MOV R_LUM,#00H
MOV G_LUM,#00H
MOV B_LUM,#00H
;------------------------------------------
; MOV P0M0,#00H
; MOV P0M1,#00H
;
; MOV P1M0,#00H
; MOV P1M1,#00H
;
; MOV P2M0,#00H
; MOV P2M1,#00H
;
; MOV P3M0,#00H
; MOV P3M1,#00H
; LCALL DELAY05S
; LCALL DELAY05S
MAIN:
; LCALL DELAY05S
; LCALL DELAY05S
; MOV R0,0AH
; NOP
; DJNZ R0,MAIN1
LCALL C_SHAN
NOP
; LCALL C_JUMP
; LCALL JIANBAIN_R ;红R
MAIN1: ; LCALL DELAYMS
; LCALL JIANBAIN_G ;绿 RG
; LCALL JIANBAIN_R0_B1 ;GB
; LCALL DELAYMS
; LCALL JIANBAIN_G0 ;B
; LCALL DELAYMS
; LCALL JIANBAIN_R ;RB
; LCALL JIANBAIN_G ; RGB
; LCALL RD_G_BD
; LCALL DELAYMS
; LCALL RU_GD_B
; LCALL JIANBAIN_B ;兰
; LCALL JIANBAIN_RG ;黄
;
; LCALL JIANBAIN_GB ;青
; LCALL JIANBAIN_RB ;粉红
; LCALL JIANBAIN_RGB ;白
; LCALL RU_G_BU
; LCALL RD_G_BD
; LCALL R_GU_BU
; LCALL R_GD_BD
; LCALL RU_GD_BD
; LCALL RD_GU_BU
; LCALL RD_GU_BD
; LCALL RU_GD_BU
; LCALL RD_GD_BU
; LCALL RD_GD_BD
JMP MAIN
;===========回路控制变化效果======================
C_JUMP:
CLR EA
LCALL DELAY05S
SETB R_OUT
CLR G_OUT
CLR B_OUT
LCALL DELAY5S
SETB G_OUT
CLR R_OUT
CLR B_OUT
LCALL DELAY5S
SETB B_OUT
CLR R_OUT
CLR G_OUT
LCALL DELAY5S
SETB R_OUT
SETB G_OUT
CLR B_OUT
LCALL DELAY5S
SETB R_OUT
SETB B_OUT
CLR G_OUT
LCALL DELAY5S
SETB G_OUT
SETB B_OUT
CLR R_OUT
LCALL DELAY5S
SETB R_OUT
SETB G_OUT
SETB B_OUT
LCALL DELAY5S
SETB EA
RET
;==========================================
;闪烁
C_SHAN:
CLR EA
; LCALL DELAY05S
MOV R0,#30H
R_SHAN:
SETB R_OUT
CLR G_OUT
CLR B_OUT
LCALL DELAYMS
LCALL DELAYMS
LCALL DELAYMS
LCALL DELAYMS
CLR R_OUT
CLR G_OUT
CLR B_OUT
LCALL DELAYMS
LCALL DELAYMS
LCALL DELAYMS
LCALL DELAYMS
DJNZ R0,R_SHAN
/* MOV R0,#30H
G_SHAN:
SETB G_OUT
CLR R_OUT
CLR B_OUT
LCALL DELAYMS
LCALL DELAYMS
CLR G_OUT
CLR R_OUT
CLR B_OUT
LCALL DELAYMS
LCALL DELAYMS
DJNZ R0,G_SHAN
MOV R0,#30H
B_SHAN:
SETB B_OUT
CLR R_OUT
CLR G_OUT
LCALL DELAYMS
LCALL DELAYMS
CLR B_OUT
CLR G_OUT
CLR R_OUT
LCALL DELAYMS
LCALL DELAYMS
DJNZ R0,B_SHAN
MOV R0,#30H
RG_SHAN:
SETB R_OUT
SETB G_OUT
CLR B_OUT
LCALL DELAYMS
LCALL DELAYMS
CLR R_OUT
CLR G_OUT
CLR B_OUT
LCALL DELAYMS
LCALL DELAYMS
DJNZ R0,RG_SHAN
MOV R0,#30H
RB_SHAN:
SETB R_OUT
SETB B_OUT
CLR G_OUT
LCALL DELAYMS
LCALL DELAYMS
CLR R_OUT
CLR G_OUT
CLR B_OUT
LCALL DELAYMS
LCALL DELAYMS
DJNZ R0,RB_SHAN
MOV R0,#30H
GB_SHAN:
SETB G_OUT
SETB B_OUT
CLR R_OUT
LCALL DELAYMS
LCALL DELAYMS
CLR R_OUT
CLR G_OUT
CLR B_OUT
LCALL DELAYMS
LCALL DELAYMS
DJNZ R0,GB_SHAN
MOV R0,#30H
RGB_SHAN:
SETB R_OUT
SETB G_OUT
SETB B_OUT
LCALL DELAYMS
LCALL DELAYMS
CLR R_OUT
CLR G_OUT
CLR B_OUT
LCALL DELAYMS
LCALL DELAYMS
DJNZ R0,RGB_SHAN
SETB EA */
RET
;===================================
;红色渐变,红色增加
JIANBAIN_R:
MOV DIM_COUNT,#00H ;PWM基本延时
MOV MS_COUNT,#00H
JIANBAIN_R_1: ;
; LCALL DELAY20US
LCALL DELAY20US
MOV A,MS_COUNT ;
CJNE A,SPEED,JIANBAIN_R_1
MOV MS_COUNT,#00H
INC R_LUM
MOV A,R_LUM
CJNE A,#0FFH,JIANBAIN_R_1
RET
;红色减少,
MOV DIM_COUNT,#00H ;PWM基本廷时计数
MOV MS_COUNT,#00H
JIANBAIN_R_2:
; LCALL DELAY20US
LCALL DELAY20US
MOV A,MS_COUNT
CJNE A,SPEED,JIANBAIN_R_2
MOV MS_COUNT,#00H
DEC R_LUM
MOV A,R_LUM
CJNE A,#03H,JIANBAIN_R_2
; JNZ JIANBAIN_R_2
; CLR R_OUT ;
RET
;========================================================
;2.绿色渐变 绿色增加,
JIANBAIN_G:
MOV DIM_COUNT,#00H ;PWM基本廷时计数
MOV MS_COUNT,#00H ;
JIANBAIN_G_1:
; LCALL DELAY20US
LCALL DELAY20US
MOV A,MS_COUNT
CJNE A,SPEED,JIANBAIN_G_1
MOV MS_COUNT,#00H
INC G_LUM
; DEC R_LUM
; MOV A,R_LUM
; JNZ TEMP
; CLR R_OUT
TEMP: MOV A,G_LUM
CJNE A,#0FFH,JIANBAIN_G_1
RET
;--------------------------------------
;绿色减少,
JIANBAIN_G0:
MOV DIM_COUNT,#00H ;PWM基本廷时计数
MOV MS_COUNT,#00H
JIANBAIN_G_2:
; LCALL DELAY20US
LCALL DELAY20US
MOV A,MS_COUNT
CJNE A,SPEED,JIANBAIN_G_2
MOV MS_COUNT,#00H
DEC G_LUM
MOV A,G_LUM
; CJNE A,#03H,JIANBAIN_G_2
JNZ JIANBAIN_G_2
CLR G_OUT ;
RET
;////////////////////////////////
JIANBAIN_R0_B1:
MOV DIM_COUNT,#00H ;PWM基本廷时计数
MOV MS_COUNT,#00H
JIANBAIN_R0_B1_1:
; LCALL DELAY20US
LCALL DELAY20US
MOV A,MS_COUNT
CJNE A,SPEED,JIANBAIN_R0_B1_1
MOV MS_COUNT,#00H
INC B_LUM
DEC R_LUM
MOV A,R_LUM
JNZ JIANBAIN_R0_B1_1
CLR R_OUT ;
RET
;//////////////////////////////////
;===========================================================
;3.兰色渐变,兰色增加,
JIANBAIN_B:
MOV DIM_COUNT,#00H ;PWM基本廷时计数
MOV MS_COUNT,#00H ;
JIANBAIN_B_1:
; LCALL DELAY20US
LCALL DELAY20US
MOV A,MS_COUNT
CJNE A,SPEED,JIANBAIN_B_1
MOV MS_COUNT,#00H
INC B_LUM
DEC G_LUM
MOV A,G_LUM
JNZ TEMP1
CLR G_OUT
TEMP1: MOV A,B_LUM
CJNE A,#0FFH,JIANBAIN_B_1
;.兰色减少,
MOV DIM_COUNT,#00H ;PWM基本廷时计数
MOV MS_COUNT,#00H
JIANBAIN_B_2:
LCALL DELAY20US
LCALL DELAY20US
MOV A,MS_COUNT
CJNE A,SPEED,JIANBAIN_B_2
MOV MS_COUNT,#00H
DEC B_LUM
MOV A,B_LUM
JNZ JIANBAIN_B_2
CLR B_OUT
RET
;================================================
;4.黄色渐变,红色、绿色增加,
JIANBAIN_RG:
MOV DIM_COUNT,#00H ;PWM基本廷时计数
MOV MS_COUNT,#00H ;
JIANBAIN_RG_1:
; LCALL DELAY20US
LCALL DELAY20US
MOV A,MS_COUNT
CJNE A,SPEED,JIANBAIN_RG_1
MOV MS_COUNT,#00H
INC R_LUM
;DEC G_LUM
INC G_LUM
MOV A,G_LUM
CJNE A,#0FFH,JIANBAIN_RG_1
; JNZ JIANBAIN_RG_1
; CLR G_OUT
; RET
;黄色渐变 红、绿色减少,
MOV DIM_COUNT,#00H ;PWM基本廷时计数
MOV MS_COUNT,#00H
JIANBAIN_RG_2:
; LCALL DELAY20US
LCALL DELAY20US
MOV A,MS_COUNT
CJNE A,SPEED,JIANBAIN_RG_2
MOV MS_COUNT,#00H
DEC R_LUM
DEC G_LUM
; INC G_LUM
MOV A,R_LUM
JNZ JIANBAIN_RG_2
CLR R_OUT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -