📄 auto10.asm
字号:
BTFSC STATUS,Z
GOTO K305
MOVF TURN2,W
SUBLW 3
BTFSS STATUS,Z
GOTO K304
BCF INTCON,GIE
MOVLW 0
MOVWF TURN2
MOVFF NFBUF1,SET01 ;RESTORE DISPLAY
MOVFF NFBUF2,SET02
MOVFF NFBUF3,SET03
MOVFF NFBUF4,SET04
BSF INTCON,GIE
RETURN
K304:
BCF INTCON,GIE
INCF TURN2,F
MOVFF NFBUF1,SET01
MOVFF NFBUF2,SET02
MOVFF NFBUF3,SET03
MOVFF NFBUF4,SET04
BSF INTCON,GIE
RETURN
K305:
MOVF TURN2,W
SUBLW 1
BTFSS STATUS,Z
GOTO K306
BCF INTCON,GIE
MOVLW 0
MOVWF TURN2
MOVFF NFBUF1,SET01 ;RESTORE DISPLAY
MOVFF NFBUF2,SET02
MOVFF NFBUF3,SET03
MOVFF NFBUF4,SET04
BSF INTCON,GIE
RETURN
K306:
BCF INTCON,GIE
MOVLW 1
MOVWF TURN2
MOVFF NFBUF1,SET01
MOVFF NFBUF2,SET02
MOVFF NFBUF3,SET03
MOVFF NFBUF4,SET04
BSF INTCON,GIE
RETURN
;********************************
K401:
BTFSS KEY4
GOTO K402
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
BTFSS KEY4
GOTO K403
BCF FAG0,3
RETURN
K402:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CALL DELY1
NOP
NOP
NOP
NOP
BTFSS KEY4
GOTO K403
BCF FAG0,3
RETURN
K403:
MOVLW 1
MOVWF STTIME
BTFSS FLAG3,0
GOTO K4030
MOVLW 1
MOVWF DISID
BCF FLAG3,0
RETURN
K4030:
BTFSC FAG0,3
RETURN
BSF FAG0,3
BCF INTCON,GIE
MOVFF NFBUF1,SET01
MOVFF NFBUF2,SET02
MOVFF NFBUF3,SET03
MOVFF NFBUF4,SET04
BSF INTCON,GIE
MOVF TURN2,W
SUBLW 0
BTFSS STATUS,Z
GOTO K420
MOVF NFBUF1,W
SUBLW 0
BTFSS STATUS,Z
GOTO K411
MOVLW 9
MOVWF NFBUF1
RETURN
K411:
DECF NFBUF1,F
RETURN
K420:
MOVF TURN2,W
SUBLW 1
BTFSS STATUS,Z
GOTO K430
MOVF NFBUF2,W
SUBLW 0
BTFSS STATUS,Z
GOTO K421
MOVLW 9
MOVWF NFBUF2
RETURN
K421:
DECF NFBUF2,F
RETURN
K430:
MOVF TURN2,W
SUBLW 2
BTFSS STATUS,Z
GOTO K440
MOVF NFBUF3,W
SUBLW 0
BTFSS STATUS,Z
GOTO K431
MOVLW 9
MOVWF NFBUF3
RETURN
K431:
DECF NFBUF3,F
RETURN
K440:
MOVF TURN2,W
SUBLW 3
BTFSS STATUS,Z
RETURN
MOVF NFBUF4,W
SUBLW 0
BTFSS STATUS,Z
GOTO K441
MOVLW 9
MOVWF NFBUF4
RETURN
K441:
DECF NFBUF4,F
RETURN
;********************************
SAVE:
BCF FAG0,4
MOVF DISID,W
SUBLW 0
BTFSS STATUS,Z
GOTO SAVE1
MOVLW 0
SWAPF NFBUF2,W
IORWF NFBUF1,W
MOVWF YEARL
BCF STATUS,GIE
MOVWF HUANG
MOVLW HUANG
MOVWF WRDA
MOVLW 60H ;??????
MOVWF ADRS
MOVLW 1
MOVWF WRL
CALL DSWEED
NOP
BSF STATUS,GIE
GOTO SAVED
SAVE1:
MOVF DISID,W
SUBLW 1
BTFSS STATUS,Z
GOTO SAVE2
MOVLW 0
SWAPF NFBUF2,W
IORWF NFBUF1,W
MOVWF DAY
MOVLW 0
SWAPF NFBUF4,W
IORWF NFBUF3,W
MOVWF MONTH
BCF STATUS,GIE
MOVF DAY,W
MOVWF HUANG
MOVF MONTH,W
MOVWF HUANG+1
MOVLW HUANG
MOVWF WRDA
MOVLW 40H
MOVWF ADRS
MOVLW 2
MOVWF WRL
CALL DSWEED
NOP
BSF STATUS,GIE
GOTO SAVED
SAVE2:
MOVF DISID,W
SUBLW 2
BTFSS STATUS,Z
GOTO SAVE3
MOVLW 0
SWAPF NFBUF2,W
IORWF NFBUF1,W
MOVWF MIN0
MOVLW 0
SWAPF NFBUF4,W
IORWF NFBUF3,W
MOVWF TIME0
BCF STATUS,GIE
CLRF HUANG
MOVF MIN0,W
MOVWF HUANG+1
MOVF TIME0,W
MOVWF HUANG+2
MOVLW HUANG
MOVWF WRDA
MOVLW 0H
MOVWF ADRS
MOVLW 3
MOVWF WRL
CALL DSWEED
NOP
BSF STATUS,GIE
GOTO SAVED
;--------------------------
SAVE3:
MOVF DISID,W
SUBLW 9
BTFSS STATUS,Z
GOTO SAVE4
MOVLW 0
SWAPF NFBUF2,W
IORWF NFBUF1,W
MOVWF MIN1
MOVLW 0
SWAPF NFBUF4,W
IORWF NFBUF3,W
MOVWF TIME1
MOVWF EEVAL
MOVLW 1
MOVWF EEROML
CALL EEWRITE
MOVF MIN1,W
MOVWF EEVAL
MOVLW 2
MOVWF EEROML
CALL EEWRITE
GOTO SAVED
SAVE4:
MOVF DISID,W
SUBLW 0AH
BTFSS STATUS,Z
GOTO SAVE5
MOVLW 0
SWAPF NFBUF2,W
IORWF NFBUF1,W
MOVWF MIN2
MOVLW 0
SWAPF NFBUF4,W
IORWF NFBUF3,W
MOVWF TIME2
MOVWF EEVAL
MOVLW 3
MOVWF EEROML
CALL EEWRITE
MOVF MIN2,W
MOVWF EEVAL
MOVLW 4
MOVWF EEROML
CALL EEWRITE
GOTO SAVED
SAVE5:
MOVF DISID,W
SUBLW 0BH
BTFSS STATUS,Z
GOTO SAVE6
MOVLW 0
SWAPF NFBUF2,W
IORWF NFBUF1,W
MOVWF MIN3
MOVLW 0
SWAPF NFBUF4,W
IORWF NFBUF3,W
MOVWF TIME3
MOVWF EEVAL
MOVLW 5
MOVWF EEROML
CALL EEWRITE
MOVF MIN3,W
MOVWF EEVAL
MOVLW 6
MOVWF EEROML
CALL EEWRITE
GOTO SAVED
SAVE6:
MOVF DISID,W
SUBLW 0CH
BTFSS STATUS,Z
GOTO SAVED
MOVLW 0
SWAPF NFBUF2,W
IORWF NFBUF1,W
MOVWF MIN4
MOVLW 0
SWAPF NFBUF4,W
IORWF NFBUF3,W
MOVWF TIME4
MOVWF EEVAL
MOVLW 7
MOVWF EEROML
CALL EEWRITE
MOVF MIN4,W
MOVWF EEVAL
MOVLW 8
MOVWF EEROML
CALL EEWRITE
GOTO SAVED
SAVED:
MOVLW 0H
MOVWF DISID
RETURN
;****************************************************************************
;****************************************************************************
;***************************************************
;===================================================
WRTIME0:
BCF STATUS,GIE
MOVLW 1
MOVWF HUANG+3 ;WEEK
MOVLW 9
MOVWF HUANG+4 ;DATE
MOVLW 2
MOVWF HUANG+5 ;MONTH
MOVLW 4
MOVWF HUANG+6 ;YEAR
MOVLW 0
MOVWF HUANG ;SEC
MOVLW 1
MOVWF HUANG+1 ;MINUTES
MOVLW 1
MOVWF HUANG+2 ;HOUR
MOVLW 00H
MOVWF HUANG+7 ; ??????????????
MOVLW HUANG
MOVWF WRDA
MOVLW 0H
MOVWF ADRS
MOVLW 8
MOVWF WRL
CALL DSWEED
NOP
MOVLW 20H
MOVWF HUANG
MOVLW HUANG ;???????????
MOVWF WRDA
MOVLW 0E0H
MOVWF ADRS
MOVLW 1
MOVWF WRL
CALL DSWEED
BSF STATUS,GIE
RETURN
;=============================
WRTIME:
BTFSS FAG0,7
RETURN
BCF STATUS,GIE
MOVLW STIME
MOVWF WRDA
MOVLW 0H
MOVWF ADRS
MOVLW 3
MOVWF WRL
CALL DSWEED
BCF FAG0,7
BSF STATUS,GIE
RETURN
;------------------------------------------------------------------------
;------------------------------------------------------------------------
RETIME:
BTFSC FAG0,7
RETURN
MOVLW HUANG
MOVWF WRDA
MOVLW 0H
MOVWF ADRS
MOVLW 7
MOVWF WRL
CALL DSREED
MOVF HUANG,W
MOVWF ARMC010 ; SEC
MOVF HUANG+1,W
MOVWF MIN0 ; MIN
MOVF HUANG+2,W
MOVWF TIME0 ; HOUR
MOVF HUANG+3,W
MOVWF YEARH ; WEEK
MOVF HUANG+4,W
MOVWF DAY ; DAY
MOVF HUANG+5,W
MOVWF MONTH ; MONTH
MOVF HUANG+6,W
MOVWF YEARL ; YEAR
RETURN
;******************************************************
; Write BYTE BEGIN ADDRESS ADRS RX8025 D0,D1
; INTPUT DATA ADRES 'WRDA', LENGTH 'WRL'
; Worker Register(WREG),'FSR0','INDF0','RGA','RGB'
;......................................................
DSWEED:
CALL DSWSTA
MOVLW 064H
MOVWF RGA
CALL DSWADS
NOP
NOP
MOVF ADRS,W
MOVWF RGA
CALL DSWADS
NOP
NOP
MOVF WRDA,W
MOVWF FSR0L
MOVLW 00H
MOVWF FSR0H
MOVF WRL,W
MOVWF RGB
DSWEEDG:
MOVF POSTINC0,W
MOVWF RGA
CALL DSWADS
NOP
NOP
DECFSZ RGB,1
GOTO DSWEEDG
CALL DSWSTP
NOP
RETURN
;********************************************************
;********************************************************
; INPUT BYTE BEGIN ADDRESS ADRS
; OUTPUT DATA 'FSR0', LENGTH 'WRL'
; Worker Register(WREG),'FSR0','INDF0','RGA','RGB'
;.......................................................
DSREED:
CALL DSWSTA
MOVLW 064H
MOVWF RGA
CALL DSWADS ; dummy write
NOP
NOP
MOVF ADRS,W
MOVWF RGA
CALL DSWADS ; dummy write
NOP
NOP
CALL DSWSTA
NOP
NOP
MOVLW 065H
MOVWF RGA
CALL DSWADS ; send device address for read
NOP
NOP
MOVF WRDA,W
MOVWF FSR0L
MOVLW 00H
MOVWF FSR0H
MOVF WRL, W
MOVWF RGB
DSREEDG:
CALL DSRADS ; READ DATA
NOP
NOP
MOVF RGA,W
MOVWF POSTINC0
DECFSZ RGB,1
GOTO DSREEDZ
NOP
CALL DSNRACK
NOP
NOP
CALL DSWSTP
NOP
NOP
RETURN
DSREEDZ:
CALL DSRACK
NOP
NOP
GOTO DSREEDG
;***************************************************
;INTPUT ADDRESS OR DATA (RGA) Worker Register(WREG)
;---------------------------------------------------
DSWADS:
BCF TRISC, SDA1 ; 'SDA1' OUTPUT
NOP
MOVLW 8
MOVWF DCOUNT
DSWADSG:
RLCF RGA,F
BTFSC STATUS,C
GOTO DSWADS1
BCF LATC,SDA1 ; 'SDA1' LOW
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
GOTO DSWADSD
DSWADS1:
BSF LATC,SDA1 ; 'SDA1' HIGH
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DSWADSD:
CALL DSSK
DECFSZ DCOUNT,F
GOTO DSWADSG
DSWACK:
BSF TRISC,SDA1 ; 'SDA1' INTPUT
NOP
NOP
NOP
NOP
BSF LATC,SCL1 ; 'SCL1' HIGH
MOVLW 50 ; Wait PORTD.SDA1 ACK signal
MOVWF DCOUNT
DSWACK1:
NOP
NOP
BTFSC PORTC,SDA1
GOTO DSWACK11
BCF LATC,SCL1 ; 'SCL1' LOW
RETURN
DSWACK11:
DECFSZ DCOUNT,F
GOTO DSWACK1
DSWACKD: ; WREG=0
BCF LATC,SCL1 ; 'SCL1' LOW
RETURN
;*******************************************************
;INTPUT ADDRESS OR DATA (RGA) Worker Register(WREG)
;-------------------------------------------------------
DSRADS:
BSF TRISC,SDA1 ; 'SDA1' INTPUT
MOVLW 8
MOVWF DCOUNT
DSRADSG:
BSF LATC,SCL1 ; 'SCL1 ' HIGH
NOP
NOP
NOP
NOP
NOP
NOP
BSF STATUS,C ; SET 'CY'
BTFSS PORTC,SDA1
BCF STATUS,C ; Clear 'CY'
RLCF RGA,1
NOP
BCF LATC,SCL1 ; 'SCL1' LOW
NOP
NOP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -