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