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

📄 zt0519.asm

📁 DVD的PROTABLE(7寸屏)的CODE,PIC写的ASM,OSD通过协议来显示,电池电量的显示,TFT屏的控制.
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	BSF	STATUS,C
	RRF	IR_RECEIVE_DATA2,F
	GOTO	SHIFT_DATA_RETURN
SHIFT_DATA_TO_ADD1
	BCF	STATUS,C
	BTFSC	IR_RECEIVE_FLAG,RECEIVE_IR_DATA_BIT
	BSF	STATUS,C
	RRF	IR_RECEIVE_DATA1,F
SHIFT_DATA_RETURN
	BSF	STATUS,RP0
	BSF	OPTION_REG,INTEDG		
	BCF	STATUS,RP0
	CLRF	TMR1L
	CLRF	TMR1H
	BSF	IR_RECEIVE_FLAG,RECEIVE_IR_LOW_FLAG
	BCF	IR_RECEIVE_FLAG,RECEIVE_IR_HIGH_FLAG
	GOTO	RETURN_FR_INT
RECEIVE_IR_BAD
	CLRF	IR_RECEIVE_FLAG
	BSF	STATUS,RP0
	BCF	OPTION_REG,INTEDG	
	BCF	STATUS,RP0
	GOTO	RETURN_FR_INT

;-----------------------------------------------	       
MCLR_RESET
	       BCF	      STATUS,RP0
	       BCF	      STATUS,RP1
	GOTO	CLEAR_RAM
	MOVLW   20
	MOVWF   FSR
	MOVLW   11
	MOVWF   30
COMPARE_WDT_DATA
	MOVF    INDF,W
	XORWF   30,W
	BTFSS   STATUS,Z
	GOTO    WDT_INT
	INCF    FSR,F
	INCF    30,F
	MOVLW   2A
	XORWF   FSR,W
	BTFSS   STATUS,Z
	GOTO    COMPARE_WDT_DATA
	GOTO    RESET_DATA_SETUP

WDT_INT
	MOVLW   20
	MOVWF   FSR
	MOVLW   11
	MOVWF   30
WDT_INT_DATA
	MOVF    30,W
	MOVWF   INDF
	INCF    FSR,F
	INCF    30,F
	MOVLW   2A
	XORWF   FSR,W
	BTFSS   STATUS,Z
	GOTO    WDT_INT_DATA
WDT_RESET
	BCF	PCLATH,3
	BCF	PCLATH,4
	GOTO    WDT_RESET

CLEAR_RAM
	MOVLW   0X1F
	MOVWF   FSR
CLR_RAM0_LP
	INCF    FSR,F
	CLRF    INDF
	MOVLW   0X7F
	XORWF   FSR,W 
	BTFSS   STATUS,Z
	GOTO    CLR_RAM0_LP

	BSF     STATUS,RP0
	MOVLW   0X9F
	MOVWF   FSR
CLR_RAM1_LP1
	CLRWDT
	INCF    FSR,F
	CLRF    INDF
	MOVLW   0XBF
	XORWF   FSR,W
	BTFSS   STATUS,Z
	GOTO    CLR_RAM1_LP1
	BCF	STATUS,RP0
DEFINE_INT
	MOVLW	B'11010000'
	MOVWF	INTCON
	MOVLW	B'00000001'
	MOVWF	T1CON
	BSF	STATUS,RP0
	MOVLW	B'10001000'
	MOVWF	OPTION_REG
	BSF	PIE1,TMR1IE
	BCF	STATUS,RP0
;-----------------------------------------------
RESET_DATA_SETUP

               MOVLW          B'11001111'
               MOVWF          PORTA
               MOVLW          B'11001101'
               MOVWF          PORTB
               MOVLW          B'11000110'
               MOVWF          PORTC
               BSF            STATUS,RP0
               MOVLW          B'11011011'
               MOVWF          TRISA
               MOVLW          B'10001101'
	       MOVWF          TRISB  
               MOVLW          B'10000000'
               MOVWF          TRISC
	       BCF            STATUS,RP0

	BSF     STATUS,RP0
	BSF     PCON,NOT_POR


	BCF	STATUS,RP0
SHUT_OFF_AD
	MOVLW   B'00000000'
	MOVWF   ADCON0
	BSF	STATUS,RP0
	MOVLW	B'00000111'
	MOVWF	ADCON1
	BCF	STATUS,RP0      

                                

               MOVLW          7FH         
               MOVWF          EEROM_ADDR
               CALL           R_24C01
               MOVF           REEROM_DATA,W
               XORLW          0AAH
          
               BTFSS          STATUS,Z
               CALL           INIT_EEROM

                   BSF      PORTB,LED
                   CALL     DELAY_1S
                   BCF      PORTB,LED
   
              
               GOTO           ANORMAL_MODE


;******************************************************************************************************* 
ASTANDBY_MODE  
               CLRF           COMM_FLAG
               CLRF           FLAG
              
 
               BSF            VOL_FLAG,STANDBY
               
               CLRF           T2CON                        
 
               BSF            PORTC,MUTE                      ;开启静音,关机静噪
               CALL           DELAY50MS
               CALL           DELAY50MS                       ;静音延迟
               BCF            PORTC,MUTE 
               
               BCF            PORTA,CONTROL_POWER             ;关闭电源
               BSF            PORTA,RESET_MAINBOARD           ;关闭主板

               BCF            PORTB,LED
               BTFSS          VOL_FLAG,NO_POWER
               BSF            PORTB,LED                       ;点亮LED

               BCF            PORTC,CONTROL_TFT               ;关闭TFT
;----------------------------------------------------------------------------------------------
ASTANDBY_MAIN         ;standby_mode主循环
               CLRWDT

               CALL           TEST_SW_POWER                
               BTFSC          FLAG,SW_POWER
               GOTO           ANORMAL_MODE
               
               BTFSS          COMM_FLAG,RX_IR_SUCCESS         
               GOTO           ASTANDBY_MAIN
               CALL           TEST_IR_POWER                   
               BTFSC          FLAG,IR_POWER
               GOTO           ANORMAL_MODE                    ;是,跳到normal模式
               BCF            COMM_FLAG,RX_IR_SUCCESS                  
               GOTO           ASTANDBY_MAIN
;******************************************************************************************************
ANORMAL_MODE       
                   
               CLRF           COMM_FLAG
               CLRF           FLAG
               BCF            VOL_FLAG,STANDBY
               CALL           GET_VOL
               
               ;BSF            FLAG,NORMAL
               MOVLW          .10
               MOVWF          S10_COUNT 
               MOVLW          .6
               MOVWF          MINUTE              
	         ;设置10s定时 10×244×256×16=9994240
	       MOVLW          .244
	       MOVWF          TMR2_COUNT0
	       BCF            PIR1,TMR2IF
               BSF            STATUS,RP0
               BSF            PIE1,TMR2IE              
               BCF            STATUS,RP0      
               MOVLW          B'00000111'         
               MOVWF          T2CON

                     ;进入normal_mode初始化
               BCF            PORTB,LED                          ;关闭LED
               
               MOVLW          MUTE_DELAY_NUM
               MOVWF          MUTE_COUNT
               BSF            VOL_FLAG,NEED_MUTE             
               BSF            PORTC,MUTE                         ;启动静音,开机静噪
	       
	       BTFSS          PORTC,CTR_MAINBOARD                ;检测in/out切换
	       GOTO           $+3
	       BSF            FLAG,RC7_STATUS 
	       GOTO           $+3
	       BCF            FLAG,RC7_STATUS
	       GOTO           TEST_TFT
	                                     	       
               BSF            PORTA,CONTROL_POWER                ;启动电源
               
               BSF            PORTA,RESET_MAINBOARD              ;reset主板
               CALL           DELAY50MS
               BCF            PORTA,RESET_MAINBOARD
               CALL           DELAY50MS
               BSF            PORTA,RESET_MAINBOARD
TEST_TFT                              
               BTFSS          PORTA,TFT_SWITCH                  ;检测TFT开关
               GOTO           $+3
               BSF            PORTC,CONTROL_TFT                  ;启动TFT 
               CALL           TFT_INTI                          ;初始化TFT
               
              ; CALL           MUTE_DELAY                         ;静音延迟 
              ; BCF            PORTC,MUTE                         ;关闭静音
;----------------------------------------------------------------------------------	       
                              
ANORMAL_MAIN              ;NORMAL状态主循环
          	CLRWDT
               CALL           ARX_DSP                           ;测试DSP传来的信号
               BTFSC          COMM_FLAG,RX_DSP_SUCCESS        
               GOTO           ADO_DSP_CMMAND                  
               
               BTFSS          COMM_FLAG,RX_IR_SUCCESS          
               GOTO           CONTINUE_NORMAL_1
               CALL           TEST_IR_POWER                   
               BTFSC          FLAG,IR_POWER                  
               GOTO           ASTANDBY_MODE                     ;是,跳到standby模式
               CALL           IR_PIC_DSP                        ;否,将接收的红外数据转发给DSP
CONTINUE_NORMAL_1                
               BTFSS          PORTB,SW_SCREEN
               CALL           MANAGE_SW_SCREEN
                              

               BTFSS          PORTA,SW_EARPHONE                 ;耳机插入否?
               GOTO           $+6
               BTFSC          FLAG,EARPHONE
               GOTO           CONTINUE_NORMAL_2 
               BSF            FLAG,EARPHONE
               BSF            PORTC,AMP_MUTE
               GOTO           CONTINUE_NORMAL_2 
               BTFSS          FLAG,EARPHONE
               GOTO           CONTINUE_NORMAL_2 
               BCF            FLAG,EARPHONE
               BCF            PORTC,AMP_MUTE                              
               
CONTINUE_NORMAL_2                               
               CALL           TEST_SW_POWER                     ;有按键开关机信号吗?
               BTFSC          FLAG,SW_POWER
               GOTO           ASTANDBY_MODE 
               
CONTINUE_NORMAL_3               
               BTFSC          VOL_FLAG,ONE_S                  
               GOTO           DO_1S
CONTINUE_NORMAL_4
               NOP
               BTFSC          PORTA,TFT_SWITCH                  ;检测TFT开关
               GOTO           $+3
               BCF            PORTC,CONTROL_TFT                 ;关闭TFT
               GOTO           $+2
               BSF            PORTC,CONTROL_TFT                 ;开启TFT
               
               BTFSS          PORTC,CTR_MAINBOARD               ;RC7当前的状态是?
               GOTO           TURNOFF_POWER                     ;是low,关闭电源
               BTFSC          FLAG,RC7_STATUS               ;是high,检查RC7上次的状态是?
               GOTO           ANORMAL_MAIN                      ;RC7上次状态也是高,返回normal主循环
                  ;RC7上次的状态是low,即RC7有上升沿产生
               BSF            FLAG,RC7_STATUS               ;置1 RC7状态标志
                          
               MOVLW          MUTE_DELAY_NUM
               MOVWF          MUTE_COUNT
               BSF            VOL_FLAG,NEED_MUTE                 
               BSF            PORTC,MUTE                         ;启动静音,开机静噪
                  ;开启电源,主板复位
               BSF            PORTA,CONTROL_POWER
	       BCF            PORTA,RESET_MAINBOARD
               CALL           DELAY50MS
               BSF            PORTA,RESET_MAINBOARD
	       CALL           TFT_INTI                          ;初始化TFT
	       GOTO           ANORMAL_MAIN	       
;-------------------------------------------------------
TURNOFF_POWER  ;RC7当前状态是low,关闭电源
               BTFSS          FLAG,RC7_STATUS          
               GOTO           ANORMAL_MAIN

               BSF            PORTC,MUTE
               CALL           DELAY50MS
               CALL           DELAY50MS
               BCF            PORTA,CONTROL_POWER         
               BSF            PORTA,RESET_MAINBOARD
               BCF            PORTC,MUTE

               BCF            FLAG,RC7_STATUS       
               GOTO           ANORMAL_MAIN                        
;-------------------------------------------------------- 

;==================================================================
;响应DSP命令跳转程序
;=================================================================
ADO_DSP_CMMAND
               MOVF           RX_BUFF0,W
               XORLW          0B1H
               BTFSC          STATUS,Z
               GOTO           DO_DSP_B1
               
               MOVF           RX_BUFF0,W
               XORLW          0B2H
               BTFSC          STATUS,Z
               GOTO           DO_DSP_B2
               
               MOVF           RX_BUFF0,W
               XORLW          0B3H
               BTFSC          STATUS,Z
               GOTO           DO_DSP_B3
               
               MOVF           RX_BUFF0,W
               XORLW          0B6H
               BTFSC          STATUS,Z
               GOTO           DO_DSP_B6
               
               MOVF           RX_BUFF0,W
               XORLW          0B7H
               BTFSC          STATUS,Z
               GOTO           DO_DSP_B7
               
               MOVF           RX_BUFF0,W
               XORLW          0B8H
               BTFSC          STATUS,Z
               GOTO           DO_DSP_B8               
                                            
               BCF            COMM_FLAG,RX_DSP_SUCCESS

⌨️ 快捷键说明

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