📄 pda_166p64_v01.asm
字号:
MOVF RX232_CNTH,W
ANDLW 7
BNZ W25X32_READ_PIC_ADDRESS3
;BTG LATD,7
CALL DELAY_64MS
INCF RX232_ADDL
BTFSC RX232_ADDL,3
BRA W25X32_READ_PIC_ADDRESS_END
W25X32_READ_PIC_ADDRESS3:
CALL WRITE_SPI_00
;MOVF SSP1BUF,W
MOVWF TXREG2
MOVLW 0XFF
ADDWF RX232_CNTL
ADDWFC RX232_CNTH
ADDWFC RX232_CNTU
MOVF RX232_CNTL
IORWF RX232_CNTH,W
IORWF RX232_CNTU,W
BZ W25X32_READ_PIC_ADDRESS_END
W25X32_READ_PIC_ADDRESS4:
RCALL WAIT_TX232
BTFSS RCSTA2,OERR
BCF RCSTA2,CREN
BSF RCSTA2,CREN
BTFSS PIR3,RC2IF
BRA W25X32_READ_PIC_ADDRESS2
MOVF RCREG2,W
XORLW 0XFF
BNZ W25X32_READ_PIC_ADDRESS2
CLRF RX232_ADDL ;ERROR COUNT
BRA W25X32_READ_PIC_ADDRESS2
W25X32_READ_PIC_ADDRESS_END:
GOTO CONNECT_PC
;******************************
;******************************
;******************************
;******************************
;******************************
W25X32_BYTE_PROGRAM ;BYTE_PROGRAM
W25X32_PAGEPROGRAM: ;PAGEPROGRAM
MOVLW 0X5F
MOVWF TXREG2
CALL W25X32_WP_DISABLE
W25X32_PAGEPROGRAM2: ;
;********************
MOVLW HIGH 0X300
MOVWF FSR1H
MOVF RX232_ADDL,W
MOVWF FSR1L
MOVLW HIGH 0X300
MOVWF FSR0H
MOVF RX232_ADDL,W
MOVWF FSR0L
BCF W25X32_PAGEPROGRAM_FLAG
W25X32_PAGEPROGRAM_REC_ONE_BYTE:
CLRF TMR3L
CLRF TMR3H
W25X32_PAGEPROGRAM_REC_ONE_BYTE2:
BTFSS W25X32_PAGEPROGRAM_FLAG
BRA W25X32_PAGEPROGRAM_REC_ONE_BYTE4
MOVF POSTINC1,W
MOVWF SSP1BUF
MOVLW 1
ADDWF RX232_ADDL
MOVLW 0
ADDWFC RX232_ADDH
ADDWFC RX232_ADDU
MOVF FSR1L,W
BNZ W25X32_PAGEPROGRAM_REC_ONE_BYTE4
MOVLW HIGH 0X300
MOVWF FSR1H
;MOVLW LOW 0X300
;MOVWF FSR1L
BSF F_CE
BCF W25X32_PAGEPROGRAM_FLAG
W25X32_PAGEPROGRAM_REC_ONE_BYTE4:
BTFSC TMR3H,4 ;>64MS
BRA W25X32_PAGEPROGRAM_ERROR
BTFSC RCSTA2,OERR ;OVER FLOW
BRA W25X32_PAGEPROGRAM_ERROR
BTFSC RCSTA2,FERR ;FRAME ERROR
BRA W25X32_PAGEPROGRAM_ERROR
BTFSS PIR3,RC2IF
BRA W25X32_PAGEPROGRAM_REC_ONE_BYTE2
MOVF RCREG2,W
MOVWF POSTINC0
CLRF TMR3L
CLRF TMR3H
MOVLW 0XFF
ADDWF RX232_CNTL
ADDWFC RX232_CNTH
ADDWFC RX232_CNTU
MOVF RX232_CNTL,W
IORWF RX232_CNTH,W
IORWF RX232_CNTU,W
BZ W25X32_PAGEPROGRAM_LAST
MOVF RX232_CNTH,W
ANDLW 7
IORWF RX232_CNTL,W
MOVLW 0X55
BTFSC STATUS,Z
MOVWF TXREG2
MOVF FSR0L,W
BNZ W25X32_PAGEPROGRAM_REC_ONE_BYTE2
MOVLW HIGH 0X300
MOVWF FSR0H
BSF W25X32_PAGEPROGRAM_FLAG
RCALL W25X32_WR_ENABLE
MOVF RX232_INST,W
CALL WRITE_SPI
MOVF RX232_ADDU,W
CALL WRITE_SPI
MOVF RX232_ADDH,W
CALL WRITE_SPI
MOVF RX232_ADDL,W
CALL WRITE_SPI
BRA W25X32_PAGEPROGRAM_REC_ONE_BYTE2
W25X32_PAGEPROGRAM_LAST:
RCALL W25X32_WR_ENABLE
MOVF RX232_INST,W
CALL WRITE_SPI
MOVF RX232_ADDU,W
CALL WRITE_SPI
MOVF RX232_ADDH,W
CALL WRITE_SPI
MOVF RX232_ADDL,W
CALL WRITE_SPI
MOVLW HIGH 0X300
MOVWF FSR1H
MOVF RX232_ADDL,W
MOVWF FSR1L
W25X32_PAGEPROGRAM_LAST2:
MOVF POSTINC1,W
CALL WRITE_SPI
MOVF FSR1L,W
XORWF FSR0L,W
BNZ W25X32_PAGEPROGRAM_LAST2
BSF F_CE
CALL DELAY_16MS
RCALL W25X32_WR_DISABLE
RESET
W25X32_PAGEPROGRAM_END:
;GOTO CHARGE_NOW
W25X32_PAGEPROGRAM_ERROR:
;BCF LATD,7
RCALL W25X32_WR_DISABLE
BRA CONNECT_PC
;------------------
WRITE_24AA02_ALL:
MOVLW 0X25
MOVWF TXREG2
;********************
MOVLW HIGH 0X300
MOVWF FSR0H
MOVF RX232_ADDL,W
MOVWF FSR0L
MOVF RX232_CNTL,W
MOVWF RX232_CNTH
WRITE_24AA02_REC_ONE_BYTE:
CLRF TMR3L
CLRF TMR3H
WRITE_24AA02_REC_ONE_BYTE2:
BTFSC TMR3H,4 ;>64MS
BRA WRITE_24AA02_ERROR
BTFSC RCSTA2,OERR ;OVER FLOW
BRA WRITE_24AA02_ERROR
BTFSC RCSTA2,FERR ;FRAME ERROR
BRA WRITE_24AA02_ERROR
BTFSS PIR3,RC2IF
BRA WRITE_24AA02_REC_ONE_BYTE2
MOVF RCREG2,W
MOVWF POSTINC0
CLRF TMR3L
CLRF TMR3H
DECFSZ RX232_CNTL
BRA WRITE_24AA02_REC_ONE_BYTE2
WRITE_24AA02_LAST:
MOVLW HIGH 0X300
MOVWF FSR0H
MOVF RX232_ADDL,W
MOVWF FSR0L
MOVWF ADDR_24AA
WRITE_24AA02_LAST2:
MOVF RX232_CNTH,W
BZ WRITE_24AA02_LAST4
ADDLW 256-8
BC WRITE_24AA02_LAST4
MOVF RX232_CNTH,W
CALL WRITE_24AA02_PAGE
BRA WRITE_24AA02_END
WRITE_24AA02_LAST4:
CALL WRITE_24AA02_8B
MOVLW 8
ADDWF ADDR_24AA
MOVLW 256-8
ADDWF RX232_CNTH
BNZ WRITE_24AA02_LAST2
WRITE_24AA02_END:
WRITE_24AA02_ERROR:
BRA CONNECT_PC
;------------------
;----------------
;----------------
W25X32_WP_DISABLE
RCALL W25X32_WR_ENABLE
MOVLW 0X01
BSF F_CE
CALL WRITE_SPI
MOVLW 0X80
CALL WRITE_SPI
BSF F_CE
CALL DELAY_16MS
;---------------------
W25X32_WR_ENABLE:
MOVLW 0X06
W25X32_WR_ENABLE2:
BSF F_WP
W25X32_WR_ENABLE4:
CALL WRITE_SPI
BSF F_CE
RETURN
;---------------------
W25X32_WR_DISABLE:
RCALL W25X32_WR_ENABLE
MOVLW 0X01
BSF F_CE
CALL WRITE_SPI
MOVLW 0X9C
CALL WRITE_SPI
BSF F_CE
BCF F_WP
GOTO DELAY_16MS
;---------------
;---------------
W25X32_GET_STATUS:
MOVLW 0X05
BSF F_CE
CALL WRITE_SPI
CALL WRITE_SPI_00
BSF F_CE
RETURN
;---------------
W25X32_WAKE_UP:
BSF F_CE
CLRWDT
BSF F_VCC
RETURN
;*******************************
READ_24AA02_ALL:
MOVLW HIGH 0X300
MOVWF FSR0H
MOVLW LOW 0X300
MOVWF FSR0L
CLRF ADDR_24AA
MOVLW 0XFF
CALL READ_24AA02_16B1
MOVLW HIGH 0X300
MOVWF FSR0H
MOVLW LOW 0X300
MOVWF FSR0L
READ_24AA02_B:
MOVF POSTINC0,W
RCALL WAIT_TX232A
MOVF FSR0L ,W
BNZ READ_24AA02_B
BRA CONNECT_PC
;******************
WAIT_TX232A:
MOVWF TXREG2
;---------------
WAIT_TX232:
CLRWDT
BTFSS TXSTA2,TRMT
BRA WAIT_TX232
RETURN
;---------------
;---------------
;**********************************
;**********************************
;**********************************
;*****************************
;*****************************
;*****************************
;*****************************
;*****************************
;*****************************
PAGE_ONE0:
BCF VEHICLE_STATUS,7 ;TRIGGER FLAG
BCF REC_TRIGGER_F
CLRF NOTICEFLAG
BCF MOTO_PIN
PAGE_ONE0_AA:
CALL CPU_CLOCK_32M
CALL HIDE_TOPBAR
CALL DISPLAY_TOP_BAR
CALL DISPLAY_BATT2
CLRF KEY_BAK
CALL HIDE_KEYPAD
MOVLW 1
PAGE_ONE0B:
MOVWF PAGE_CNT
PAGE_ONE:
;CALL CPU_CLOCK_32M
CALL DISPLAY_PAGE2
PAGE_ONE00:
MOVF PAGE_CNT,W
XORLW 0X3
BNZ PAGE_ONE1
CALL GET_TIME_UPID
CALL DISPLAY_LOGO2
;CALL GET_TONE_UPID
;CALL DISPLAY_LOGO2
PAGE_ONE1:
CALL READ_6KEY
MOVF KEY,W
BZ PAGE_ONE1A
CALL DISPLAY_KEY6_DOWN00
BRA PAGE_ONE1B
PAGE_ONE1A:
MOVLW BACKWORD_ID
CALL DISPLAY_LOGO2
MOVLW FORWORD_ID
CALL DISPLAY_LOGO2
PAGE_ONE1B:
BSF TOUCHDOWN_FLAG
CALL PRESET_LIGHT_DELAY
CALL DISPLAY_TIME
;*****************************
CALL CPU_CLOCK_8M
;**************************
PAGE_ONE2:
CALL DISPLAY_BATT
CALL DISPLAY_TIME00
;BTFSS SECOND2_FLAG
;BRA PAGE_ONE3
CALL DO_2_SECOND
BTFSC REC_TRIGGER_F
GOTO PAGE_ZERO
BTFSC REC_ONE_OK_FLAG
CALL DISPLAY_TOP_BAR
BCF REC_ONE_OK_FLAG
;-----------------------------------??2????????
;------------------------------------
PAGE_ONE3:
;-----------DO TOUCH-----------------------
BTFSC KEY_PRESS_FG
BRA PAGE_ONE_TOUCH
BTFSC TOUCHDOWN_FLAG
CALL DISPLAY_KEY6_UP
BCF TOUCHDOWN_FLAG ;BRA PAGE_ONE_NO_TOUCH
BRA PAGE_ONE_TOUCH_BAK
PAGE_ONE_TOUCH:
;---------------TOUCH
BTFSC TOUCHDOWN_FLAG
BRA PAGE_ONE_TOUCH_BAK
CALL READ_6KEY
MOVF KEY,W
BZ PAGE_ONE_TOUCH_BAK
MOVF KEY,W
MOVWF KEY_BAK
MOVF PAGE_CNT,W
MOVWF PAGE_BAK
CALL DISPLAY_KEY6_DOWN
CALL PRESET_LIGHT_DELAY_LONG
CALL SPEECH_KEY
MOVF KEY,W
XORLW 06
BZ PAGE_ONE_KEY6_DOWN
MOVF KEY,W
XORLW 05
BZ PAGE_ONE_KEY5_DOWN
;BRA PAGE_ONE
GOTO PAGE_ONE_KEY_SUB
;--------------------------
PAGE_ONE_TOUCH_BAK:
;**************************
;--------DO IKEY
BTFSC IKEY
GOTO IKEY_CLOSE;BRA PAGE_ONE32
;**************************
;----DO BACKLIGHT**********
MOVF LIGHT_CNT
BTFSC STATUS,Z
PAGE_ONE32:
GOTO BACKLIGHT_TIME_OUT
;***************************
PAGE_ONE_SLEEP:
;CALL DELAY_16MS
;****************************
PAGE_ONE_TRIGGER:
BRA PAGE_ONE2
;*****************************
PAGE_ONE_KEY5_DOWN
MOVF PAGE_CNT,W
ADDLW 0XFF
BTFSC STATUS,Z
MOVLW 7
MOVWF PAGE_CNT
XORLW 5
BNZ PAGE_ONE_KEY5_DOWN2
MOVLW 4
MOVWF PAGE_CNT
PAGE_ONE_KEY5_DOWN2:
BRA PAGE_ONE
PAGE_ONE_KEY6_DOWN
MOVF PAGE_CNT,W
XORLW 7
BZ PAGE_ONE_KEY6_DOWN1
MOVF PAGE_CNT,W
ADDLW 0X1
ANDLW 0X7
BTFSC STATUS,Z
PAGE_ONE_KEY6_DOWN1:
MOVLW 1
MOVWF PAGE_CNT
XORLW 5
BNZ PAGE_ONE_KEY6_DOWN2
MOVLW 6
MOVWF PAGE_CNT
PAGE_ONE_KEY6_DOWN2:
BRA PAGE_ONE
;PAGE_ONE_KEY6_DOWN4:
;BRA PAGE_ZERO
;*****************************
;*****************************
;*****************************
;*****************************
;*****************************
;*****************************
;*****************************
;*****************************
;*****************************
;*****************************
;*****************************
;*****************************
;********************
PAEG_TWO_1KEY:;PAGE21
PAGE_TWOONE0:
PAGE_TWOONE:
CALL HIDE_TOPBAR
MOVLW 8
CALL DISPLAY_PAGE
PAGE_TWOONE1:
CALL READ_6KEY
MOVF KEY,W
BZ PAGE_TWOONE1A
CALL DISPLAY_KEY6_DOWN00
PAGE_TWOONE1A:
CALL PRESET_LIGHT_DELAY_LONG
;*****************************
PAGE_TWOONE1D:
MOVF PARKH,W
MOVWF SETHOUR
MOVF PARKM,W
MOVWF SETMINUTE
CALL DISPLAY_SET_TIME
;**************************
PAGE_TWOONE2:
RCALL DO_2_SECOND
BTFSC REC_TRIGGER_F
GOTO PAGE_ZERO
;-----------------------------------??2????????
;------------------------------------
PAGE_TWOONE3:
;-----------DO TOUCH-----------------------
BTFSC KEY_PRESS_FG
BRA PAGE_TWOONE_TOUCH
CALL DISPLAY_KEY6_UP
BCF TOUCHDOWN_FLAG ;BRA PAGE_TWOONE_NO_TOUCH
BRA PAGE_TWOONE_TOUCH_BAK
PAGE_TWOONE_TOUCH:
;---------------TOUCH
BTFSC TOUCHDOWN_FLAG
BRA PAGE_TWOONE_TOUCH_BAK
CALL READ_6KEY
MOVF KEY,W
BZ PAGE_TWOONE_TOUCH_BAK
MOVF KEY,W
MOVWF KEY_BAK
MOVF PAGE_CNT,W
MOVWF PAGE_BAK
CALL DISPLAY_KEY6_DOWN
CALL PRESET_LIGHT_DELAY_LONG
CALL SPEECH_KEY
GOTO PAGE_TWOONE_KEY_SUB
;--------------------------
;--------------------------
PAGE_TWOONE_TOUCH_BAK:
;**************************
;--------DO IKEY
BTFSC IKEY
GOTO IKEY_CLOSE;BRA PAGE_TWOONE32
;**************************
;----DO BACKLIGHT**********
MOVF LIGHT_CNT
BTFSC STATUS,Z
PAGE_TWOONE32:
GOTO BACKLIGHT_TIME_OUT
;***************************
PAGE_TWOONE_SLEEP:
;CALL DELAY_64MS
;****************************
PAGE_TWOONE_TRIGGER:
BRA PAGE_TWOONE2
;*****************************
PAEG_TWOONE_1KEY
MOVF PARKM,W
ADDLW 0X10
DAW
MOVWF PARKM
ADDLW 0X100-0X59
BTFSS STATUS,C
BRA PAGE_TWOONE1D
CLRF PARKM
INCF PARKH,W
DAW
MOVWF PARKH
BRA PAGE_TWOONE1D
PAEG_TWOONE_2KEY
MOVF PARKM,W
ADDLW 0X90
DAW
MOVWF PARKM
ADDLW 0X100-0X59
BTFSS STATUS,C
BRA PAGE_TWOONE1D
MOVLW 0XC0
ADDWF PARKM
MOVLW 0X99
ADDWF PARKH,W
DAW
MOVWF PARKH
BRA PAGE_TWOONE1D
PAEG_TWOONE_3KEY
MOVLW 1
BRA PAGE_TWOONE_KEY4_DOWN2
PAEG_TWOONE_4KEY
MOVLW 2
PAGE_TWOONE_KEY4_DOWN2:
MOVWF PARKH
BRA PAGE_TWOONE_KEY5_DOWN2
PAEG_TWOONE_5KEY
CLRF PARKH
PAGE_TWOONE_KEY5_DOWN2
CLRF PARKM
BRA PAGE_TWOONE1D
PAEG_TWOONE_6KEY
CALL HIDE_TOPBAR
CALL DISPLAY_TOP_BAR
CALL DISPLAY_FORWORD_KEY
MOVLW 0X2;PAGE_BAK,W
BRA PAGE_ONE0B
;*****************************
;*****************************
;*****************************
;*****************************
;*****************************
PAEG_THREE_3KEY:
PAGE_THREETHREE0:
PAGE_THREETHREE:
CALL HIDE_TOPBAR
MOVLW 9
CALL DISPLAY_PAGE
PAGE_THREETHREE1:
CALL READ_6KEY
MOVF KEY,W
BZ PAGE_THREETHREE1A
CALL DISPLAY_KEY6_DOWN00
PAGE_THREETHREE1A:
CALL PRESET_LIGHT_DELAY_LONG
;*****************************
PAGE_THREETHREE1D:
MOVLW 44
MOVWF DISPLAY_D0
MOVWF DISPLAY_D1
MOVWF DISPLAY_D2
MOVWF DISPLAY_D3
MOVWF DISPLAY_D4
MOVWF DISPLAY_D5
BTFSS VIBR_FLAG
BRA PAGE_THREETHREE_VIBR_OFF
MOVLW 'V'+10-'A'
MOVWF DISPLAY_D1
MOVLW 'I'+10-'A'
MOVWF DISPLAY_D2
PAGE_THREETHREE_VIBR_OFF:
BTFSS MELODY_FLAG
BRA PAGE_THREETHREE_MELODY_OFF
MOVLW 'M'+10-'A'
MOVWF DISPLAY_D4
MOVLW 'E'+10-'A'
MOVWF DISPLAY_D5
PAGE_THREETHREE_MELODY_OFF:
CALL DISPLAY_TOP_6BIT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -