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

📄 back.asm

📁 LED灯光变化控制
💻 ASM
📖 第 1 页 / 共 2 页
字号:
; 本程序为回路控制器专用程式,内有闪烁、跳变、渐变三种完整的模式。
;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 + -