📄 zt0519.asm
字号:
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 + -