📄 auto10.asm
字号:
;******************************************************************************
; Filename: zhuhainobel *
; Date: 2004.10.06 *
; File Version: 1.001 *
; *
; Author:zhanghuirong *
; Company:nobel *
; *
;******************************************************************************
; *
LIST P=18F6720, F=INHX32 ;directive to define processor and file format
#include <P18F6720.INC> ;processor specific variable definitions
;******************************************************************************
TABLADDR EQU 04000H
BUF0 EQU 0D0H
REG_TEMP EQU 70H ;variable used for context saving
STATUS_TEMP EQU 71H ;variable used for context saving
BSR_TEMP EQU 72H ;variable used for context saving
BWREG EQU 73H ;variable used for context saving
BSTATUS EQU 74H ;variable used for context saving
BBSR EQU 75H ;variable used for context saving
WREG_TEMP EQU 76H
R0_TEMP EQU 77H
R1_TEMP EQU 78H
R2_TEMP EQU 79H
H_BYTT EQU 7AH
L_BYTT EQU 7BH
TEMPT EQU 7CH
COUNTT EQU 7DH
FSR0LT EQU 7EH
FSR0HT EQU 7FH
FAG0 EQU 00H
;FAG0.0 USE BUT1
;FAG0.1 USE BUT2
;FAG0.2 USE BUT3
;FAG0.3 USE BUT4
;FAG0.4 USE SETB
;FAG0.5 USE ON_OFF
;FAG0.6 USE 0.25ms
;FAG0,7 USE SET TIME
FAG1 EQU 01H
;FAG1,0 USE FALUT,I PASS,TEMPH.
;FAG1,1 USE OVER CURRENT
;FAG1,2 USE I<10%Imax
;FAG1,3 USE I<10%Imax,time over 30minute
;FAG1,4 USE I>=10%Imax
;FAG1,5 USE I>=10%Imax,time over 30minute
COUNT3 EQU 02H
COUNT4 EQU 03H
FUN EQU 04H;8632944
FMS EQU 05H;83308246
;FMS,0 USE
;FMS,1 USE
;FMS,2 USE
;FMS,3 USE
;FMS,4 USE ;Communation Start
;FMS,5 USE
;FMS,6 USE ; send 55h after
;FMS,7 USE ;RECEIVE RIGHT DATA
FMK EQU 06H
FMK1 EQU 07H
LIMIT EQU 08H
DELT EQU 09H
RPT EQU 0AH
;ADRL EQU 0BH MIN4
;ADRH EQU 0CH TIME4
FLAG2 EQU 0EH
;FLAG2,0 USE 1
;FLAG2,1 USE 2
;FLAG2,2 USE 3
;FLAG2,4 USE save 1
;FLAG2,5 USE save 2
;FLAG2,6 USE save 3
FLAG3 EQU 0FH
;FLAG3,0 USE TURN OFF DISPLAY
;FLAG3,1 USE 1S
VEIL EQU 10H
VEIH EQU 11H
LONL EQU 12H
LONH EQU 13H
RBUF EQU 14H
DANG EQU 15H
FOURB EQU 16H
R4 EQU 17H
R5 EQU 18H
R3 EQU 19H
DELMIN EQU 1AH
DEL20 EQU 1BH
DEL21 EQU 1CH
DIS1 EQU 20H ;display low bit
DIS2 EQU 21H ;
DIS3 EQU 22H ;
DIS4 EQU 23H ;
DIS5 EQU 24H ;
DIS6 EQU 25H ;
DIS7 EQU 26H ;
DIS8 EQU 27H ;display high bit
COUNT1 EQU 28H ;dely counter 1
COUNT2 EQU 29H ;dely counter
DISBUF EQU 2AH
DISID EQU 2BH
SET04 EQU 2CH
SET03 EQU 2DH
SET02 EQU 2EH
SET01 EQU 2FH
TURN0 EQU 30H
TURN1 EQU 31H
TURN2 EQU 32H
NFBUF1 EQU 33H
WRDA EQU 34H
ADRS EQU 35H
WRL EQU 36H
RGA EQU 37H
RGB EQU 38H
COUNT EQU 39H
NFBUF2 EQU 3AH
NFBUF3 EQU 3BH
NFBUF4 EQU 3CH
YEARH EQU 40H
YEARL EQU 41H
MONTH EQU 42H
DAY EQU 43H
TIME0 EQU 44H
MIN0 EQU 45H
TIME1 EQU 46H
MIN1 EQU 47H
TIME2 EQU 48H
MIN2 EQU 49H
TIME3 EQU 4AH
MIN3 EQU 4BH
TIME4 EQU 4CH
MIN4 EQU 4DH
ARMC010 EQU 4EH
ARMC011 EQU ARMC010+4
HUANG EQU ARMC011+3
EEROMH EQU HUANG+8
EEROML EQU EEROMH+1
EEVAL EQU EEROML+1
GENR1 EQU EEVAL+1
ADRES58 EQU GENR1+1
DAFR581 EQU ADRES58+1
DAFR582 EQU DAFR581+1
DAFR583 EQU DAFR582+1
RES0 EQU DAFR583+1
RES1 EQU RES0+1
RES2 EQU RES1+1
RES3 EQU RES2+1
ARG1L EQU RES3+1 ;K1
ARG1H EQU ARG1L+1 ;K2
ARG2L EQU ARG1H+1
ARG2H EQU ARG2L+1
DCOUNT EQU ARG2H+1
UAL EQU 80H
UAH EQU UAL +1
UBL EQU UAH +1
UBH EQU UBL +1
UCL EQU UBH +1
UCH EQU UCL +1
IAL EQU UCH +1
IAH EQU IAL +1
IBL EQU IAH +1
IBH EQU IBL +1
ICL EQU IBH +1
ICH EQU ICL +1
BUA EQU ICH+1
BUB EQU BUA+3
BUC EQU BUB+3
BIA EQU BUC+3
BIB EQU BIA+3
BIC EQU BIB+3
BTIME EQU BIC+3
BUAL EQU BTIME+1
BUAH EQU BUAL +1
BUBL EQU BUAH +1
BUBH EQU BUBL +1
BUCL EQU BUBH +1
BUCH EQU BUCL +1
BIAL EQU BUCH +1
BIAH EQU BIAL +1
BIBL EQU BIAH +1
BIBH EQU BIBL +1
BICL EQU BIBH +1
BICH EQU BICL +1
NB EQU BICH +1
H_BYTE EQU NB+1
L_BYTE EQU H_BYTE+1
R0 EQU L_BYTE+1
R1 EQU R0+1
R2 EQU R1+1
TEMP EQU R2+1
STIME EQU TEMP+1
RB23 EQU STIME+3
STTIME EQU RB23+3
;******************************************************************************
SCL1 EQU 3
SDA1 EQU 4
#DEFINE ADDOUT PORTA,0
#DEFINE ADSCLK LATA,1
#DEFINE ADDIN LATA,2
#DEFINE ADCS LATA,3
#DEFINE LED7 LATD,7
#DEFINE LED6 LATD,6
#DEFINE LED5 LATD,5
#DEFINE LED4 LATD,4
#DEFINE LED3 LATD,3
#DEFINE LED2 LATD,2
#DEFINE LED1 LATD,1
#DEFINE LED0 LATD,0
#DEFINE KEY4 PORTB,1
#DEFINE KEY3 PORTB,2
#DEFINE KEY2 PORTB,3
#DEFINE KEY1 PORTB,4
#DEFINE BZ LATB,0
#DEFINE WDOG LATC,2
; #DEFINE SCL1 LATC,3
; #DEFINE SDA1 LATC,4
#DEFINE CTRL LATC,5
#DEFINE TXD LATC,6
#DEFINE RXD LATC,7
#DEFINE KLED1 LATE,0
#DEFINE KLED2 LATE,1
#DEFINE KLED3 LATE,2
#DEFINE KLED4 LATE,3
#DEFINE KLED5 LATE,4
#DEFINE KLED6 LATE,5
#DEFINE DG0 LATG,0
#DEFINE DG1 LATG,3
#DEFINE DG2 LATG,4
#DEFINE TEMP_H PORTG,2
org 0x0000
goto Main ;go to start of main code
;************************************************************************
;High priority interrupt vector
; This code will start executing when a high priority interrupt occurs or
; when any interrupt occurs if interrupt priorities are not enabled.
;************************************************************************
org 0x0008
bra HighInt ;go to high priority interrupt routine
;************************************************************************
;Low priority interrupt vector
; This code will start executing when a low priority interrupt occurs.
; This code can be removed if low priority interrupts are not used.
org 0x0018
bra LowInt ;go to low priority interrupt routine
;******************************************************************************
;Low priority interrupt routine
; The low priority interrupt code is placed here.
; This code can be removed if low priority interrupts are not used.
LowInt:
movff STATUS,STATUS_TEMP ;save STATUS register
movff WREG,WREG_TEMP ;save working register
movff BSR,BSR_TEMP ;save BSR register
NOP
NOP
movff BSR_TEMP,BSR ;restore BSR register
movff WREG_TEMP,WREG ;restore working register
movff STATUS_TEMP,STATUS ;restore STATUS register
retfie
;**********************************************************************
HighInt:
BTFSS PIR2, TMR3IF
GOTO INTTIM0
MOVFF STATUS,BSTATUS ;save STATUS register
MOVFF WREG,BWREG ;save working register
MOVFF BSR,BBSR
BCF PIR2,TMR3IF
MOVLW 47H ;
MOVFF WREG, TMR3L ;
MOVLW 0F4H ; Timers 0.1 ms
MOVFF WREG, TMR3H ;
DISPLAY0:
MOVF COUNT1,W
SUBLW 0
BTFSS STATUS,Z
GOTO DISPLAY1
INCF COUNT1,F
MOVFF DIS1,WREG
ADDWF DIS1,0
MOVFF WREG, DISBUF ;disp low bit
CALL LEDTABLE
BSF DG0
BSF DG1
BSF DG2 ;disp 1 bit
GOTO DISPLAY8
DISPLAY1:
MOVF COUNT1,W
SUBLW 1
BTFSS STATUS,Z
GOTO DISPLAY2
INCF COUNT1,F
MOVFF DIS2,WREG
ADDWF DIS2,0
MOVFF WREG, DISBUF
CALL LEDTABLE ;disp 2 bit
BCF DG0
GOTO DISPLAY8
DISPLAY2:
MOVF COUNT1,W
SUBLW 2
BTFSS STATUS,Z
GOTO DISPLAY3
INCF COUNT1,F
MOVFF DIS3,WREG
ADDWF DIS3,0
MOVFF WREG, DISBUF
CALL LEDTABLE ;disp 3 bit
BSF DG0
BCF DG1
GOTO DISPLAY8
DISPLAY3:
MOVF COUNT1,W
SUBLW 3
BTFSS STATUS,Z
GOTO DISPLAY4
INCF COUNT1,F
MOVFF DIS4,WREG
ADDWF DIS4,0
MOVFF WREG, DISBUF
CALL LEDTABLE ;disp 4 bit
BCF DG0
GOTO DISPLAY8
DISPLAY4:
MOVF COUNT1,W
SUBLW 4
BTFSS STATUS,Z
GOTO DISPLAY5
INCF COUNT1,F
MOVFF DIS5,WREG
ADDWF DIS5,0
MOVFF WREG, DISBUF
CALL LEDTABLE ;disp 5 bit
BCF DG2
BSF DG0
BSF DG1
GOTO DISPLAY8
DISPLAY5:
MOVF COUNT1,W
SUBLW 5
BTFSS STATUS,Z
GOTO DISPLAY6
INCF COUNT1,F
MOVFF DIS6,WREG
ADDWF DIS6,0
MOVFF WREG, DISBUF
CALL LEDTABLE ;disp 6 bit
BCF DG0
GOTO DISPLAY8
DISPLAY6:
MOVF COUNT1,W
SUBLW 6
BTFSS STATUS,Z
GOTO DISPLAY7
INCF COUNT1,F
MOVFF DIS7,WREG
ADDWF DIS7,0
MOVFF WREG, DISBUF
CALL LEDTABLE
BSF DG0
BCF DG1
GOTO DISPLAY8
DISPLAY7:
MOVF COUNT1,W
SUBLW 7
BTFSS STATUS,Z
GOTO DISPLAY8
MOVLW 0
MOVWF COUNT1
MOVFF DIS8,WREG
ADDWF DIS8,0
MOVFF WREG, DISBUF
CALL LEDTABLE
BCF DG0
DISPLAY8:
INCF TURN0,F
MOVF TURN0,W
SUBLW D'250'
BTFSS STATUS,Z
GOTO DTURND
MOVLW 0H
MOVWF TURN0 ;0.25S
BSF FAG0,6 ; 1s
INCF FOURB,F
MOVF FOURB,W
SUBLW D'4'
BTFSS STATUS,Z
GOTO DTURND
MOVLW 0H
MOVWF FOURB
BSF FLAG3,1 ; 1s
; BTFSC FLAG3,0
; GOTO DTURN88
; BTFSC FAG0,4
; GOTO DTURN2
; INCF TURN1,F
; MOVF TURN1,W
; SUBLW D'10' ;10S
; BTFSS STATUS,Z
; GOTO DTURND
; MOVLW 0H
; MOVWF TURN1
; MOVF DISID,W
; SUBLW 0CH
; BTFSS STATUS,Z
; GOTO DTURN1
; MOVLW 00H
; MOVWF DISID
; GOTO DTURN11
;DTURN1:
; INCF DISID,F
;DTURN11:
; INCF STTIME,F
; MOVF STTIME,W
; SUBLW D'60' ;10S*60/60=10MIN
; BTFSS STATUS,Z
; GOTO DTURND
; BCF FAG0,4
; BSF FLAG3,0
; MOVLW 1
; MOVWF STTIME
INCF DELMIN,F
MOVF DELMIN,W
SUBLW D'60'
BTFSS STATUS,Z
GOTO DTURND
MOVLW 0H
MOVWF DELMIN ; 1 MIN
BTFSS FAG1,2
GOTO DETWO
INCF DEL20,F
MOVF DEL20,W
SUBLW D'10'
BTFSS STATUS,Z
GOTO DETWO
MOVLW 0H
MOVWF DEL20 ; 10 MIN
BSF FAG1,3
BCF FAG1,2
BCF FAG1,5
GOTO DTURND
DETWO:
BTFSS FAG1,4
GOTO DTURND
INCF DEL21,F
MOVF DEL21,W
SUBLW D'10'
BTFSS STATUS,Z
GOTO DTURND
MOVLW 0H
MOVWF DEL21 ; 10 MIN
BSF FAG1,5
BCF FAG1,4
BCF FAG1,3
GOTO DTURND
;----------------------------
;----------------------------
DTURN2:
MOVF TURN2,W
SUBLW 0
BTFSS STATUS,Z
GOTO DTURN3
BTFSC FAG0,5
GOTO DTURN20
MOVLW 1AH
MOVWF SET01
BSF FAG0,5
GOTO DTURN60
DTURN20:
MOVFF NFBUF1,SET01
BCF FAG0,5
GOTO DTURN60
DTURN3:
MOVF TURN2,W
SUBLW 1
BTFSS STATUS,Z
GOTO DTURN4
BTFSC FAG0,5
GOTO DTURN30
MOVLW 1AH
MOVWF SET02
BSF FAG0,5
GOTO DTURN60
DTURN30:
MOVFF NFBUF2,SET02
BCF FAG0,5
GOTO DTURN60
DTURN4:
MOVF TURN2,W
SUBLW 2
BTFSS STATUS,Z
GOTO DTURN5
BTFSC FAG0,5
GOTO DTURN40
MOVLW 0AH
MOVWF SET03
BSF FAG0,5
GOTO DTURN60
DTURN40:
MOVFF NFBUF3,SET03
BCF FAG0,5
GOTO DTURN60
DTURN5:
MOVF TURN2,W
SUBLW 3
BTFSS STATUS,Z
GOTO DTURND
BTFSC FAG0,5
GOTO DTURN50
MOVLW 1AH
MOVWF SET04
BSF FAG0,5
GOTO DTURN60
DTURN50:
MOVFF NFBUF4,SET04
BCF FAG0,5
DTURN60:
INCF STTIME,F
MOVF STTIME,W
SUBLW D'30' ;0.25*60/60=10S
BTFSS STATUS,Z
GOTO DTURND
BCF FAG0,4 ;CLEAR SAVE FLAG
BSF FLAG3,0
MOVLW 1
MOVWF STTIME
GOTO DTURND
DTURN88:
MOVLW 0FFH
MOVWF DISID
DTURND:
MOVFF BBSR,BSR ;restore BSR register
MOVFF BWREG,WREG ;restore working register
MOVFF BSTATUS,STATUS ;restore STATUS register
RETFIE FAST
;*************************************************
;*************************************************
INTTIM0:
BTFSS INTCON, TMR0IF
GOTO INTTX
MOVFF STATUS,BSTATUS ;save STATUS register
MOVFF WREG,BWREG ;save working register
MOVFF BSR,BBSR
BCF INTCON,TMR0IF
MOVLW 0C5H
MOVFF WREG,TMR0H
MOVLW 067H
MOVFF WREG,TMR0L
IN0T1:
BTFSS FMS,7 ; receive right data flag
GOTO IN0T2
IN0T10: ; receive right data
DECFSZ DELT,1 ; receive all data last 3*15ms and send data
GOTO IN0T2
BCF FMS,7
BCF PIE1,RC1IE ; Disable SCI Recevice interrupt;
BSF PIE1,TX1IE ; Enable SCI Transmit interrupt
MOVFF RCREG1,WREG ; Clear RCIF
BCF RCSTA1,CREN ; Disable reception (Clear OERR FERR)
BCF TXSTA1,TXEN ; Disable Transmit
MOVLW 55H
MOVFF WREG, TXREG1
BSF TXSTA1,TXEN ; Enaable Transmit
CLRF FMK1
CLRF FMK
GOTO INT02D
IN0T2:
BTFSS FMS,4 ; Communation Start Flag=1
GOTO INT02D
DECFSZ LIMIT ; 100 * 15MS
GOTO INT02D
CLRF DELT
CLRF FMS
CLRF FMK
CLRF FMK1
BCF PIE1,TX1IE ; Disable SCI Transmit interrupt
BSF PIE1,RC1IE ; Enable SCI Recevice interrupt
MOVFF WREG,TXREG1 ; Clear TXIF
BCF TXSTA1,TXEN ; Disable Transmit
BCF RCSTA1,CREN ; Disable reception (Clear OERR FERR)
MOVFF RCREG1,WREG ; Clear RCIF
BSF RCSTA1,CREN ; Enable reception
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -