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

📄 zt0519.asm

📁 DVD的PROTABLE(7寸屏)的CODE,PIC写的ASM,OSD通过协议来显示,电池电量的显示,TFT屏的控制.
💻 ASM
📖 第 1 页 / 共 5 页
字号:

                      
               MOVLW          0AH
               MOVWF          TEMP_COUNT2
TEST_SW_5                                 
               CLRF           TEMP_COUNT0         
TEST_SW_4
               CLRWDT
               CLRF           TEMP_COUNT1
TEST_SW_3                   
               BTFSC          PORTA,POWER_SWITCH        
               GOTO           IS_SW_POWER
               DECFSZ         TEMP_COUNT1,F
	       GOTO           TEST_SW_3
	       DECFSZ         TEMP_COUNT0,F
	       GOTO           TEST_SW_4
	       DECFSZ         TEMP_COUNT2,F
	       GOTO           TEST_SW_5
               RETLW          00H
IS_SW_POWER              
               BSF            FLAG,SW_POWER
	       RETLW          00H
;-----------------------------------------------------------------------------------------

              
;===============================================================================
;判断是否接收到遥控开关机命令子程序                                            =
;入口:IR_RECEIVE_DATA3                                                         =
;出口:FLAG,IR_POWER标志位                                                      =
;局部变量:无                                                                   =
;===============================================================================       
;-----------------------------------------------------------------------------------------               
TEST_IR_POWER
               BCF            FLAG,IR_POWER              
                              
               MOVLW          IR_POWER_CODE              
               XORWF          IR_RECEIVE_DATA3,W
               BTFSS          STATUS,Z
               GOTO           $+2                        
               BSF            FLAG,IR_POWER              

               RETLW          00H
;----------------------------------------------------------------------------------------- 
              
               
;===============================================================================
;接收dsp信号子程序                                                             =
;入口: 无                                                                      =
;出口:1,如果接收成功置标志位COMM_FLAG,RX_DSP_SUCCESS                           =
;        接收数据放入RX_BUFF0,RX_BUFF1                                         =
;     2,如果是DSP接收PIC数据失败,DSP申请PIC重发,置标志位COMM_FLAG,RE_TX_DSP    =
;局部变量:RX_POINTER 接收数据存放地址指针                                      =
;===============================================================================
;----------------------------------------------------------------------------------------------------------------------
ARX_DSP               
INQ_DSP_HAND
               MOVLW          .240                  
               MOVWF          COMM_COUNT
               
		NOP
		NOP
		NOP
		NOP
		NOP     
               BTFSC          PORTB,SCLK            
               RETLW          00H                   
               DECFSZ         COMM_COUNT,F
               GOTO           $-8  		;2.4ms low level sclk 
                                                    
               
               BCF            PORTC,STB          ;low the stb   

               MOVLW          .240
               MOVWF          COMM_COUNT   
               
               NOP
               NOP
               NOP
               NOP
               NOP            
               BTFSC          PORTB,SCLK            
               GOTO           $+4                   
               DECFSZ         COMM_COUNT,F
               GOTO           $-8
               GOTO           AHAND_DSP_ERROR       
               
               BSF            PORTC,STB             
;握手成功,开始接收DSP传来的数据              

ARX_DSP_DATA               
               MOVLW          RX_INDEX
               MOVWF          RX_POINTER           ;
                             
               MOVLW          02H                  ;
               MOVWF          BYTE_COUNT       
               
               MOVLW          08H
               MOVWF          BIT_COUNT            ;
                   GOTO          WAIT_SCLK_L



WAIT_SCLK_H                           
               MOVLW          .240
               MOVWF          COMM_COUNT
               BTFSC          PORTB,SCLK           
               GOTO           $+4
               DECFSZ         COMM_COUNT,F
               GOTO           $-3   
               GOTO           ARX_DSP_ERROR        
               
               MOVF           RX_POINTER,W
               MOVWF          FSR
               BSF            INDF,BIT7            
               BTFSS          PORTB,SDATA
               BCF            INDF,BIT7
                 
               DECFSZ         BIT_COUNT,F          
               GOTO           R_RX_BUFF
               INCF           RX_POINTER,F         
               MOVLW          08H                  
               MOVWF          BIT_COUNT            
               DECFSZ         BYTE_COUNT,F         
               GOTO           WAIT_SCLK_L 
RX_END                                             
               CALL           DELAY2MS 
               BSF            COMM_FLAG,RX_DSP_SUCCESS   
               RETLW          00H                 
                                                   
R_RX_BUFF                                          
               RRF            INDF,F              

WAIT_SCLK_L            
               
               MOVLW          .240
               MOVWF          COMM_COUNT
		NOP
		NOP
		NOP
		NOP
		NOP
               BTFSS          PORTB,SCLK           
               GOTO           WAIT_SCLK_H
               DECFSZ         COMM_COUNT,F
               GOTO           $-8   
               GOTO           ARX_DSP_ERROR                                  
;----------------------------------------------------------------------------
AHAND_DSP_ERROR    
                     NOP
               BSF            PORTC,STB            
               
               MOVLW          07H
               MOVWF          MS_COUNT
               CLRWDT
               MOVLW          .200
               MOVWF          COMM_COUNT
               BTFSC          PORTB,SCLK            
               RETLW          00H                 
               DECFSZ         COMM_COUNT,F
               GOTO           $-3
               DECFSZ         MS_COUNT,F
               GOTO           $-8
               
                
               MOVLW          05H
               MOVWF          MS_COUNT
               CLRWDT
               MOVLW          .200
               MOVWF          COMM_COUNT
               BTFSC          PORTB,SCLK           
               GOTO           IS_RE_TX
               DECFSZ         COMM_COUNT,F
               GOTO           $-3
               DECFSZ         MS_COUNT,F
               GOTO           $-8
               GOTO           $+2 
IS_RE_TX                            
          ;     BSF            COMM_FLAG,RE_TX_DSP  
               RETLW          00H
;-------------------------------------------
ARX_DSP_ERROR
               NOP               
               RETLW          00H

;-----------------------------------------------------------------------------------------------------------------------


;===============================================================================
;传输数据给DSP子程序                                                           =
;入口:TX_BUFF0,TX_BUFF1                                                        =
;出口:COMM_FLAG,TX_DSP_SUCCESS  标志位                                         =
;局部变量:TX_POINTER 发送数据存放地址指针                                      =
;===============================================================================
;--------------------------------------------------------------------------------------------------------------
ATX_DSP
APIC_ASK_HAND             
               MOVLW          .240
               MOVWF          COMM_COUNT
               NOP
               NOP
               NOP
	       NOP
               NOP
               BTFSS          PORTB,SCLK            
               RETLW          00H                   
               DECFSZ         COMM_COUNT,F
               GOTO           $-8     
               
               ;SCLK HIGH 超过1.2MS,可认为DSP没有控制总线
               BCF            PORTC,STB             
               
               MOVLW          .240
               MOVWF          COMM_COUNT
               BTFSS          PORTB,SCLK            
               GOTO           $+4                   
               DECFSZ         COMM_COUNT,F
               GOTO           $-3
               GOTO           ATX_DSP_ERROR                
               
               BSF            PORTC,STB             

               MOVLW          .240
               MOVWF          COMM_COUNT
               BTFSC          PORTB,SCLK
               GOTO           $+4
               DECFSZ         COMM_COUNT,F
               GOTO           $-3
               GOTO           ATX_DSP_ERROR
                                      
               BSF            STATUS,RP0
	       BCF            TRISB,SDATA  
	       BCF            STATUS,RP0            

               MOVLW          TX_INDEX
               MOVWF          TX_POINTER            
                             
               MOVLW          02H                   
               MOVWF          BYTE_COUNT       
               
               MOVLW          08H
               MOVWF          BIT_COUNT                
               
TX_WAIT_SCLK_L         
               MOVLW          .240
               MOVWF          COMM_COUNT
               BTFSS          PORTB,SCLK  
               GOTO           $+4
               DECFSZ         COMM_COUNT,F
               GOTO           $-3      
               GOTO           ATX_DSP_ERROR         
               
               MOVF           TX_POINTER,W
               MOVWF          FSR
               BTFSC          INDF,BIT0             
               BSF            PORTB,SDATA
               BTFSS          INDF,BIT0        
               BCF            PORTB,SDATA
               
               RRF            INDF,F                
               DECFSZ         BIT_COUNT,F           
               GOTO           TX_WAIT_SCLK_H        
              ; INCF           TX_POINTER,F         
                 DECF           TX_POINTER,F
               MOVLW          08H
               MOVWF          BIT_COUNT
               DECFSZ         BYTE_COUNT,F          
               GOTO           TX_WAIT_SCLK_H        
               
                                                    
                                                    
                   
TX_END                             
               CALL           DELAY2MS           
               BSF            STATUS,RP0
	       BSF            TRISB,SDATA  
	       BCF            STATUS,RP0             
	       
	       BSF            COMM_FLAG,TX_DSP_SUCCESS 
	       
	       RETLW          00H
               
TX_WAIT_SCLK_H                         
               MOVLW          .240
               MOVWF          COMM_COUNT
               BTFSC          PORTB,SCLK
               GOTO           TX_WAIT_SCLK_L
               DECFSZ         COMM_COUNT,F
               GOTO           $-3
               GOTO           ATX_DSP_ERROR
;------------------------------------------------
ATX_DSP_ERROR
               NOP
               BSF            STATUS,RP0
	       BSF            TRISB,SDATA  
	       BCF            STATUS,RP0            
               RETLW          00H
;------------------------------------------------------------------------------------------------------------


;==========================================================================
;传输数据给TFT子程序                                                      =
;入口:TFT_BUFF0,TFT_BUFF1                                                 =
;出口:无                                                                  =
;局部变量:TFT_POINTER  发送数据存放地址指针                               =
;========================================================================== 
;--------------------------------------------------------------------------
TRANS_TFT                 
               CLRWDT
               NOP
               BCF            PORTB,CTR_TFT

	BSF     STATUS,RP0
	BCF	TRISC,EEPROM_SDATA
	BCF	TRISC,EEPROM_SCL
	BCF     STATUS,RP0
               
               MOVLW          02H
               MOVWF          BYTE_COUNT
               MOVLW          08H
               MOVWF          BIT_COUNT
               
               MOVLW          TFT_INDEX          
               MOVWF          TFT_POINTER
TFT_LOOP 
               ;CLRWDT              
               BCF            PORTC,TFT_SCL

               MOVF           TFT_POINTER,W
               MOVWF          FSR
               
               BTFSS          INDF,BIT0
               BCF            PORTC,TFT_SDA
               BTFSC          INDF,BIT0
               BSF            PORTC,TFT_SDA
               NOP
               NOP
               NOP
               NOP

               BSF            PORTC,TFT_SCL

               NOP
               NOP
               NOP
               NOP
               NOP               
               RRF            INDF,F
               DECFSZ         BIT_COUNT,F
               GOTO           TFT_LOOP
               MOVLW          08H
               MOVWF          BIT_COUNT
               INC

⌨️ 快捷键说明

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