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

📄 zt0519.asm

📁 DVD的PROTABLE(7寸屏)的CODE,PIC写的ASM,OSD通过协议来显示,电池电量的显示,TFT屏的控制.
💻 ASM
📖 第 1 页 / 共 5 页
字号:
RE_IS_TFT_BRIGHT                
               MOVLW          0A3H                    
               MOVWF          TX_BUFF0
               MOVF           TFT_BRIGHT,W  
               MOVWF          TX_BUFF1
               CALL           ATX_DSP
               BTFSC          COMM_FLAG,TX_DSP_SUCCESS
               GOTO           IS_TFT_BRIGHT_END
               DECFSZ         TEMP,F
               GOTO           RE_IS_TFT_BRIGHT 
IS_TFT_BRIGHT_END
               BCF            COMM_FLAG,TX_DSP_SUCCESS
               RETLW          00H  
;------------------------------------------------
TX_A6_DSP
               MOVLW          03H                     
               MOVWF          TEMP
               
RE_IS_SCREEN_MODE                
               MOVLW          0A6H                    
               MOVWF          TX_BUFF0
               MOVF           SCREEN_MODE,W  
               MOVWF          TX_BUFF1
               CALL           ATX_DSP
               BTFSC          COMM_FLAG,TX_DSP_SUCCESS
               GOTO           IS_SCREEN_MODE_END
               DECFSZ         TEMP,F
               GOTO           RE_IS_SCREEN_MODE 
IS_SCREEN_MODE_END
               BCF            COMM_FLAG,TX_DSP_SUCCESS
               RETLW          00H  
;------------------------------------------------
;===================================================================
DO_1S         
               BCF           VOL_FLAG,ONE_S

               
               BTFSC         FLAG,CONFIG_CHANGE
               GOTO          W_ALL_CONFIG 

               BTFSS         VOL_FLAG,NEED_MUTE    
               GOTO          DO_1S_1               
               DECFSZ        MUTE_COUNT,F
               GOTO          DO_1S_1
               BCF           PORTC,MUTE            
               BCF           VOL_FLAG,NEED_MUTE    
DO_1S_1
               DECFSZ        S10_COUNT,F
               GOTO          DO_1S_END
               MOVLW         .10
               MOVWF         S10_COUNT
DO_10S                          
       
               BTFSC         VOL_FLAG,NO_POWER
               GOTO          ASTANDBY_MODE                      
               BTFSS         VOL_FLAG,LOW_POWER
               GOTO          DO_10S_2
               BCF           VOL_FLAG,LOW_POWER       
               CALL          GET_VOL
               BTFSC         VOL_FLAG,NO_POWER     
               GOTO          ASTANDBY_MODE         
               
DO_10S_1       BTFSS         VOL_FLAG,LOW_POWER
               GOTO          DO_10S_2               
               MOVLW         0A5H       
               MOVWF         TX_BUFF0
               CLRF          TX_BUFF1
               CALL          ATX_DSP
               GOTO          DO_1S_END
DO_10S_2       
               DECFSZ        MINUTE,F
               GOTO          DO_1S_END
                
               MOVLW         .6
               MOVWF         MINUTE             
               CALL          GET_VOL
               MOVLW         0A4H        
               MOVWF         TX_BUFF0
               MOVF          VOL,W
               MOVWF         TX_BUFF1
               CALL          ATX_DSP
               

DO_1S_END               
               NOP
               BCF           VOL_FLAG,ONE_S
               GOTO          CONTINUE_NORMAL_4  
                
                
STANDBY_DO_10S     ;standby模式下静音,即关机静音

               BTFSS         VOL_FLAG,NEED_MUTE    ;需要静音吗
               GOTO          DO_1S_END            ;不需要
               DECFSZ        MUTE_COUNT,F
               GOTO          DO_1S_END
               BCF           PORTC,MUTE            ;结束静音
               BCF           VOL_FLAG,NEED_MUTE    ;清需要静音标志
                              
               BCF            PORTA,CONTROL_POWER             ;关闭电源
               BSF            PORTA,RESET_MAINBOARD           ;关闭主板
               BSF            PORTB,LED                       ;点亮LED
               BCF            PORTC,CONTROL_TFT               ;关闭TFT  
               
               CLRF           T2CON                           ;关闭TMR2
               
               GOTO           ASTANDBY_MAIN           
;----------------------------------------------------------------------------------               
W_ALL_CONFIG
               MOVLW         03H                    
               MOVWF         TEMP
               MOVF          TFT_CONFIG0,W
               MOVWF         WEEROM_DATA
               MOVLW         00H
               MOVWF         EEROM_ADDR
               CALL          W_24C01
               CALL          R_24C01
               MOVF          REEROM_DATA,W
               XORWF          WEEROM_DATA,W
               BTFSC         STATUS,Z
               GOTO          $+3
               DECFSZ        TEMP,F
               GOTO          $-0B
               
               MOVLW         03H                    
               MOVWF         TEMP
               MOVF          TFT_COLOR,W
               MOVWF         WEEROM_DATA
               MOVLW         02H
               MOVWF         EEROM_ADDR
               CALL          W_24C01
               CALL          R_24C01
               MOVF          REEROM_DATA,W
               XORWF          WEEROM_DATA,W
               BTFSC         STATUS,Z
               GOTO          $+3
               DECFSZ        TEMP,F
               GOTO          $-0B
               
               MOVLW         03H                 
               MOVWF         TEMP
               MOVF          TFT_CONST,W
               MOVWF         WEEROM_DATA
               MOVLW         04H
               MOVWF         EEROM_ADDR
               CALL          W_24C01
               CALL          R_24C01
               MOVF          REEROM_DATA,W
               XORWF          WEEROM_DATA,W
               BTFSC         STATUS,Z
               GOTO          $+3
               DECFSZ        TEMP,F
               GOTO          $-0B
               
               MOVLW         03H                 
               MOVWF         TEMP
               MOVF          TFT_BRIGHT,W
               MOVWF         WEEROM_DATA
               MOVLW         05H
               MOVWF         EEROM_ADDR
               CALL          W_24C01
               CALL          R_24C01
               MOVF          REEROM_DATA,W
               XORWF          WEEROM_DATA,W
               BTFSC         STATUS,Z
               GOTO          $+3
               DECFSZ        TEMP,F
               GOTO          $-0B
               
               MOVLW         03H                
               MOVWF         TEMP
               MOVF          SCREEN_MODE,W
               MOVWF         WEEROM_DATA
               MOVLW         10H
               MOVWF         EEROM_ADDR
               CALL          W_24C01
               CALL          R_24C01
               MOVF          REEROM_DATA,W
               XORWF          WEEROM_DATA,W
               BTFSC         STATUS,Z
               GOTO          $+3
               DECFSZ        TEMP,F
               GOTO          $-0B
                              
               BCF           FLAG,CONFIG_CHANGE  
               GOTO          DO_10S_1 
;------------------------------------------------


;===================================================================
;AD转换,并获得电压级数                   
;===================================================================
GET_VOL
	BSF	STATUS,RP0            
	MOVLW	B'00000100'		
	MOVWF	ADCON1			
	BCF	STATUS,RP0
	MOVLW	B'00000001'		
	MOVWF	ADCON0
	CLRF	ADRES                 
	CALL	DELAY_35US
	BSF	ADCON0,2              
	CALL	DELAY_35US
	MOVF	ADRES,W
	MOVWF   TURE_VOL
        CLRF    ADCON0
	BSF	STATUS,RP0
	MOVLW	B'00000111'		
	MOVWF	ADCON1			
	BCF	STATUS,RP0
      
	
        MOVF    TURE_VOL,W
	SUBLW   VOL3V                 
	BTFSS   STATUS,C              
	GOTO    $+3                   
	BSF     VOL_FLAG,NO_POWER     
	RETLW   00H

	MOVF    TURE_VOL,W
	SUBLW   VOL3.5V               
	BTFSS   STATUS,C
	GOTO    $+3                   
	BSF     VOL_FLAG,LOW_POWER    
	RETLW   00H 
			
	MOVLW   01H
	MOVWF   VOL
FIND_VOL_LOOP	
	CALL    FIND_VOL_TABLE  
	SUBWF   TURE_VOL,W      
        BTFSS   STATUS,C
        GOTO    RETURN_GET_VOL  
        INCF    VOL,F           
        MOVLW   .16
        SUBWF   VOL,W           
        BTFSC   STATUS,C
        GOTO    $+2             
        GOTO    FIND_VOL_LOOP   
        MOVLW   .16             
        MOVWF   VOL       
RETURN_GET_VOL
        DECF    VOL,F
        RETLW   00        
        
;----------------------------------------------
DELAY_35US             		
	MOVLW	.10
	MOVWF	TEMP_COUNT0
DELAY_35US_LOOP
	DECFSZ	TEMP_COUNT0,F
	GOTO	$-1
      	RETLW   0



;===================================================================
;将ir的数据转发给dsp
;===================================================================
;-------------------------------------------------------------------
IR_PIC_DSP
               MOVLW          03H                      
               MOVWF          TEMP
RE_IR_PIC_DSP                
               MOVLW          0A0H                     
               MOVWF          TX_BUFF0
               MOVF           C_TX_BUFF0,W  
               MOVWF          TX_BUFF1
               CALL           ATX_DSP
               BTFSC          COMM_FLAG,TX_DSP_SUCCESS
               GOTO           IR_PIC_DSP_END
               DECFSZ         TEMP,F
               GOTO           RE_IR_PIC_DSP 
IR_PIC_DSP_END                   
               BCF            COMM_FLAG,TX_DSP_SUCCESS  
               BCF            COMM_FLAG,RX_IR_SUCCESS   
               RETLW          00H
;-------------------------------------------------------------------
                              
            
;====================================================================
;静音延迟子程序                                                     =
;调用50ms延迟子程序                                                 =
;局部变量:TEMP_COUNT2                                               =
;====================================================================
;--------------------------------------------------------------------
DELAY_1S
MUTE_DELAY
               MOVLW          .20              ;60*50MS
               MOVWF          TEMP_COUNT2
               CALL           DELAY50MS
               DECFSZ         TEMP_COUNT2,1
               GOTO           $-2
               RETLW          00H
;--------------------------------------------------------------------- 

DELAY2MS    
               MOVLW          .4
               MOVWF          TEMP_COUNT0
DELAY_2MS_LOOP2
               MOVLW          .220
               MOVWF          TEMP_COUNT1 
	       CLRWDT
DELAY_2MS_LOOP1
	       DECFSZ         TEMP_COUNT1,F
	       GOTO           DELAY_2MS_LOOP1
	       DECFSZ         TEMP_COUNT0,F
	       GOTO           DELAY_2MS_LOOP2
	       RETLW          00H

;=====================================================================
;50ms延迟子程序                                                      =
;入口:无                                                             =
;出口:无                                                             =
;局部变量: TEMP_COUNT0, TEMP_COUNT1                                  =
;=====================================================================
;---------------------------------------------------------------------
DELAY50MS    
               MOVLW          .50
               MOVWF          TEMP_COUNT0
DELAY_50MS_LOOP2
               MOVLW          .200
               MOVWF          TEMP_COUNT1 
	       CLRWDT
DELAY_50MS_LOOP1
	       DECFSZ         TEMP_COUNT1,F
	       GOTO           DELAY_50MS_LOOP1
	       DECFSZ         TEMP_COUNT0,F
	       GOTO           DELAY_50MS_LOOP2
	       RETLW          00H
;---------------------------------------------------------------------


;=====================================================================
;测试是否有按键开关机信号子程序                                      =
;入口:无                                                             =
;出口:FLAG,SW_POWER标志位                                            =
;局部变量:TEMP_COUNT0, TEMP_COUNT1, TEMP_COUNT2                      =
;=====================================================================
;----------------------------------------------------------------------------------------                                              
TEST_SW_POWER                                           
               CLRWDT                      
               BCF            FLAG,SW_POWER                
               MOVLW          .20                  
               MOVWF          TEMP_COUNT0
TEST_SW_2
               CLRWDT
               MOVLW          .200
               MOVWF          TEMP_COUNT1
TEST_SW_1               
               BTFSC          PORTA,POWER_SWITCH
               RETLW          00H
	       DECFSZ         TEMP_COUNT1,F
	       GOTO           TEST_SW_1
	       DECFSZ         TEMP_COUNT0,F
	       GOTO           TEST_SW_2

⌨️ 快捷键说明

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