⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 back.asm

📁 LED灯光变化控制
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	       CLR      G_OUT
	       RET
;-------------回控-----------------------------------
;青色, 兰、绿色增加, 
JIANBAIN_GB:
	       MOV	DIM_COUNT,#00H         ;PWM基本廷时计数	
	       MOV	MS_COUNT,#00H			;

JIANBAIN_GB_1:
	       LCALL	DELAY20US
	       MOV	A,MS_COUNT
	       CJNE	A,SPEED,JIANBAIN_GB_1
	       MOV	MS_COUNT,#00H
	       INC	G_LUM
	       INC      B_LUM
	      ; DEC	B_LUM
	       MOV	A,B_LUM
	       CJNE    A,#0FFH,JIANBAIN_GB_1
	      ; JNZ	JIANBAIN_GB_1
	      ; CLR	B_OUT
	    ;   RET
;兰、绿色减少,
	       MOV	DIM_COUNT,#00H        ;PWM基本廷时计数
	       MOV	MS_COUNT,#00H
JIANBAIN_GB_2:
	       LCALL	DELAY20US
	       MOV	A,MS_COUNT
	       CJNE	A,SPEED,JIANBAIN_GB_2
	       MOV	MS_COUNT,#00H
	       DEC	G_LUM
	       DEC      B_LUM
	      ; INC	B_LUM
	       MOV	A,G_LUM
	       JNZ	JIANBAIN_GB_2
	       CLR	G_OUT
	       CLR      B_OUT
	       RET
;------------回控------------------------------------------
;粉红,红色\兰色增加
JIANBAIN_RB:
	       MOV	DIM_COUNT,#00H          ;PWM基本廷时计数	
	       MOV	MS_COUNT,#00H			;

JIANBAIN_RB_1:
	       LCALL	DELAY20US
	       MOV	A,MS_COUNT
	       CJNE	A,SPEED,JIANBAIN_RB_1
	       MOV	MS_COUNT,#00H
	       INC	R_LUM
	       INC      B_LUM
	      ; DEC	B_LUM
	       MOV	A,B_LUM
	       CJNE     A,#0FFH,JIANBAIN_RB_1
	     ;  JNZ	JIANBAIN_RB_1
	      ; CLR	B_OUT
	    ;   RET
;红色\兰色减少,
	       MOV	DIM_COUNT,#00H           ;PWM基本廷时计数
	       MOV	MS_COUNT,#00H
JIANBAIN_RB_2:
	       LCALL	DELAY20US
	       MOV	A,MS_COUNT
	       CJNE	A,SPEED,JIANBAIN_RB_2
	       MOV	MS_COUNT,#00H
	       DEC	R_LUM
	       DEC      B_LUM
	    ;   INC	B_LUM
	       MOV	A,R_LUM
	       JNZ	JIANBAIN_RB_2
	       CLR	R_OUT
	       CLR      B_OUT
	       RET
;-------------回控------------------------------------
;红、绿、兰增加,
JIANBAIN_RGB:
	       MOV	DIM_COUNT,#00H               ;PWM基本廷时计数	
	       MOV	MS_COUNT,#00H			;

JIANBAIN_RGB_1:
	       LCALL	DELAY20US
	       MOV	A,MS_COUNT
	       CJNE	A,SPEED,JIANBAIN_RGB_1
	       MOV	MS_COUNT,#00H
	       INC	R_LUM
	       INC	G_LUM
	       INC      B_LUM          ;ADD
	       MOV	A,R_LUM
	       CJNE	A,#0FFH,JIANBAIN_RGB_1
	    ;   RET
;红、绿、兰减少,
	       MOV	DIM_COUNT,#00H            ;PWM基本廷时计数
	       MOV	MS_COUNT,#00H
JIANBAIN_RGB_2:
	       LCALL	DELAY20US
	       MOV	A,MS_COUNT
	       CJNE	A,SPEED,JIANBAIN_RGB_2
	       MOV	MS_COUNT,#00H
	       DEC	R_LUM
	       DEC	G_LUM
	       DEC      B_LUM          ;ADD
	       MOV	A,R_LUM
	       JNZ	JIANBAIN_RGB_2
	       CLR	R_OUT
	       CLR	G_OUT
	       CLR      B_OUT          ;ADD
	       RET
;-------------回控---------------------------------------
/***RUBU***/;15.红增加,兰增加,绿不变
RU_G_BU:
	       MOV	DIM_COUNT,#00H             ;PWM基本廷时计数
	       MOV	MS_COUNT,#00H			;

RU_G_BU_1:
	       LCALL	DELAY20US
	       MOV	A,MS_COUNT
	       CJNE	A,SPEED,RU_G_BU_1
	       MOV	MS_COUNT,#00H
	       INC	R_LUM
	       INC	B_LUM
	       MOV	A,B_LUM
	       CJNE	A,#0FFH,RU_G_BU_1
	     ;  RET
;-------------回控-------------------------------------
/***RDBD***/;16.红减少,兰减少,绿不变
RD_G_BD:
	       MOV	DIM_COUNT,#00H              ;PWM基本廷时计数
	       MOV	MS_COUNT,#00H
RD_G_BD_1:
	       LCALL	DELAY20US
	       MOV	A,MS_COUNT
	       CJNE	A,SPEED,RD_G_BD_1
	       MOV	MS_COUNT,#00H
	       DEC	R_LUM
	       DEC	B_LUM
	       MOV	A,R_LUM
	       JNZ	RD_G_BD_1
	       CLR	R_OUT
	       CLR	B_OUT
	       RET
;------------回控---------------------------------------
/***BUGU***/;17.红不变,绿增加,兰增加
R_GU_BU:
	       MOV	DIM_COUNT,#00H               ;PWM基本廷时计数
	       MOV	MS_COUNT,#00H			;

R_GU_BU_1:
	       LCALL	DELAY20US
	       MOV	A,MS_COUNT
	       CJNE	A,SPEED,R_GU_BU_1
	       MOV	MS_COUNT,#00H
	       INC	G_LUM
	       INC	B_LUM
	       MOV	A,G_LUM
	       CJNE	A,#0FFH,R_GU_BU_1
	   ;    RET
;------------回控----------------------------------------
/***BDGD***/;18.红不变,绿减少,兰减少
R_GD_BD:
	       MOV	DIM_COUNT,#00H               ;PWM基本廷时计数
	       MOV	MS_COUNT,#00H
R_GD_BD_1:
	       LCALL	DELAY20US
	       MOV	A,MS_COUNT
	       CJNE	A,SPEED,R_GD_BD_1
	       MOV	MS_COUNT,#00H
	       DEC	G_LUM
	       DEC	B_LUM
	       MOV	A,G_LUM
	       JNZ	R_GD_BD_1
	       CLR	G_OUT
	       CLR	B_OUT
	       RET
;------------回控------------------------------------------
;/***RUGDBD***/;19红增加,绿减少,兰减少
RU_GD_BD:
	      MOV	DIM_COUNT,#00H             ;PWM基本廷时计数
	       MOV	MS_COUNT,#00H			;

RU_GD_BD_1:
	       LCALL	DELAY20US
	       MOV	A,MS_COUNT
	       CJNE	A,SPEED,RU_GD_BD_1
	       MOV	MS_COUNT,#00H
	       INC	R_LUM
	       DEC	G_LUM
	       DEC	B_LUM
	       MOV	A,G_LUM
	       JNZ	RU_GD_BD_1
	       CLR	G_OUT
	       CLR	B_OUT
	    ;   RET
;------------回控--------------------------------------
/***RDGUBU***/;20.红减少,绿增加,兰增加
RD_GU_BU:
	       MOV	DIM_COUNT,#00H             ;PWM基本廷时计数
	       MOV	MS_COUNT,#00H
RD_GU_BU_1:
	       LCALL	DELAY20US
	       MOV	A,MS_COUNT
	       CJNE	A,SPEED,RD_GU_BU_1
	       MOV	MS_COUNT,#00H
	       DEC	R_LUM
	       INC	G_LUM
	       INC	B_LUM
	       MOV	A,R_LUM
	       JNZ	RD_GU_BU_1
	       CLR	R_OUT
	       RET
;------------回控--------------------------------------
;/***RDGUBD***/;21.红减少,绿增加,兰减少
RD_GU_BD:
	       MOV	DIM_COUNT,#00H             ;PWM基本廷时计数
	       MOV	MS_COUNT,#00H			;

RD_GU_BD_1:
	       LCALL	DELAY20US
	       MOV	A,MS_COUNT
	       CJNE	A,SPEED,RD_GU_BD_1
	       MOV	MS_COUNT,#00H
	       DEC	R_LUM
	       INC	G_LUM
	       DEC	B_LUM
	       MOV	A,R_LUM
	       JNZ	RD_GU_BD_1
	       CLR	R_OUT
	       CLR	B_OUT
	     ;  RET
;-----------回控---------------------------------------
/***RUGDBU***/;22
RU_GD_BU:
	       MOV	DIM_COUNT,#00H
	       MOV	MS_COUNT,#00H
RU_GD_BU_1:
	       LCALL	DELAY20US
	       MOV	A,MS_COUNT
	       CJNE	A,SPEED,RU_GD_BU_1
	       MOV	MS_COUNT,#00H
	       INC	R_LUM
	       DEC	G_LUM
	       INC	B_LUM
	       MOV	A,G_LUM
	       JNZ	RU_GD_BU_1
	       CLR	G_OUT
	       RET
;-----------回控----------------------------------------
/***RDGDBU***/;23
RD_GD_BU:
	       MOV	DIM_COUNT,#00H
	       MOV	MS_COUNT,#00H			;

RD_GD_BU_1:
	       LCALL	DELAY20US
	       MOV	A,MS_COUNT
	       CJNE	A,SPEED,RD_GD_BU_1
	       MOV	MS_COUNT,#00H
	       DEC	R_LUM
	       DEC	G_LUM
	       INC	B_LUM
	       MOV	A,R_LUM
	       JNZ	RD_GD_BU_1
	       CLR	R_OUT
	       CLR	G_OUT
	    ;   RET
;-----------回控--------------------------------------
/***RUGUBD***/;24
RU_GU_BD:
	       MOV	DIM_COUNT,#00H
	       MOV	MS_COUNT,#00H
RU_GU_BD_1:
	       LCALL	DELAY20US
	       MOV	A,MS_COUNT
	       CJNE	A,SPEED,RU_GU_BD_1
	       MOV	MS_COUNT,#00H
	       INC	R_LUM
	       INC	G_LUM
	       DEC	B_LUM
	       MOV	A,B_LUM
	       JNZ	RU_GU_BD_1
	       CLR	B_OUT
	       RET
 
;-----------回控-------------------------------------
/***RUGUBU***/;25定色闪烁,色增加

RU_GU_BU:
	      ; MOV	DIM_COUNT,#0AFH
	       MOV	MS_COUNT,#00H			;

RU_GU_BU_1:
;	      LCALL	DELAY20US
	       MOV	A,MS_COUNT
	       CJNE	A,SPEED,RU_GU_BU_1
	       MOV	MS_COUNT,#00H
	       INC	R_LUM
	       INC	G_LUM
	       INC	B_LUM
	       MOV	A,R_LUM
	       CJNE	A,#08H,RU_GU_BU_1
;	      JNZ	RD_GD_BU_1
	       RET
;----------回控-------------------------------------
/***RDGDBD***/;26. 定色闪烁,色减少

RD_GD_BD:
	  ;     MOV	DIM_COUNT,#2EH
	       MOV	MS_COUNT,#00H
RD_GD_BD_1:
	;      LCALL	DELAY20US
	       MOV	A,MS_COUNT
	       CJNE	A,SPEED,RD_GD_BD_1
	       MOV	MS_COUNT,#00H
	       DEC	R_LUM
	       DEC	G_LUM
	       DEC	B_LUM
	       MOV	A,B_LUM
	       JNZ	RD_GD_BD_1
	       CLR	R_OUT
	       CLR	G_OUT
	       CLR	B_OUT
	       RET 
/***RUGD***/;4.紫色渐变,红色增加,绿色减少,兰不变
RU_GD_B:
	       MOV	DIM_COUNT,#00H            ;PWM基本廷时计数
	       MOV	MS_COUNT,#00H			;

RU_GD_B_1:
	       LCALL	DELAY20US
	       LCALL	DELAY20US
	       MOV	A,MS_COUNT
	       CJNE	A,SPEED,RU_GD_B_1
	       MOV	MS_COUNT,#00H
	       INC	R_LUM
	       DEC	G_LUM
	       MOV	A,G_LUM
	       JNZ	RU_GD_B_1
	       CLR	G_OUT
        	RET	       
;回控操作用T0定时器
T0_INT:
	       PUSH	ACC
	       PUSH    PSW
	       INC	DIM_COUNT       ;PWM基本廷时计数
	       MOV	A,DIM_COUNT
	       JNZ	T0INT_1		;不为0时直接跳到
					;;为0时作以下处理
	       MOV	A,R_LUM
	       JZ	T0INT_6
	       SETB	R_OUT		;如果存有恢度,则要先置1

	       SJMP	T0INT_7
T0INT_6:
	       CLR	R_OUT	;如果是0恢度,则要置为0,以消除余辉

T0INT_7:			;如果不在意这余辉,定时中断子可以更短。
	       MOV	A,G_LUM
	       JZ	T0INT_8
	       SETB	G_OUT
	       SJMP	T0INT_9
T0INT_8:
	       CLR	G_OUT

T0INT_9:
	       MOV	A,B_LUM
	       JZ	T0INT_10
	       SETB	B_OUT
	       SJMP	T0INT_11
T0INT_10:
	       CLR	B_OUT
T0INT_11:
	       INC	MS_COUNT			;按25MS加1

	       SJMP	T0INT_5				;直接退出

T0INT_1:
	       MOV	A,DIM_COUNT               ;PWM基本廷时计数
	       CJNE	A,#0FFH,T0INT_2
	       SJMP	T0INT_5		;为FF时不做比较,是因为FF代表全亮
T0INT_2:
	       MOV	A,DIM_COUNT          ;PWM基本廷时计数
	       CJNE	A,R_LUM,T0INT_3
	       CLR 	R_OUT

T0INT_3:
	      MOV	A,DIM_COUNT
	       CJNE	A,G_LUM,T0INT_4
	       CLR      G_OUT
T0INT_4:
	      MOV	A,DIM_COUNT
	       CJNE	A,B_LUM,T0INT_5
	       CLR	B_OUT
T0INT_5:        POP     PSW
	       POP	ACC
	       RETI
;*****/
;===============================================	       
;这段程序要保证小于两个中断之间*/
DELAY20US:
                MOV      R7,#10H
DELAY20US_1:    NOP
                DJNZ     R7,DELAY20US_1	        	        
	        RET
DELAY05S:
                MOV   R5, #0AH
DELAY05S_1:     MOV   R6, #78H
DELAY05S_2:     MOV   R7, #78H
DELAY05S_3:     DJNZ  R7, DELAY05S_3
                DJNZ  R6, DELAY05S_2
                DJNZ  R5, DELAY05S_1
                RET	       	  
DELAY5S:
                MOV  R5,#32H
DELAY5S_1:
                MOV  R6,#0FEH           
DELAY5S_2:  
                MOV  R7,#0FEH
DELAY5S_3:
                DJNZ R7,DELAY5S_3
                DJNZ R6,DELAY5S_2
                DJNZ R5,DELAY5S_1
                RET     
DELAYMS:
                MOV   R5,#0AFH
DELAYMS_1:                
                MOV     R6,#0AFH
DELAYMS_2:                
                NOP
                DJNZ    R6,DELAYMS_2
                DJNZ    R5,DELAYMS_1 
                RET           
	       END 
       
       

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -