📄 display-g.asm
字号:
list p=16f74 ; list directive to define processor
#include P16f74.inc ; processor specific variable definitions
;**********************************************************************
__CONFIG _PWRTE_ON & _WDT_OFF & _HS_OSC &_BODEN_OFF
DATABUS EQU PORTD
LCD_EN1 EQU H'0007' ;PORTC.7
LCD_EN2 EQU H'0003' ;PORTC.3
LCD_RW EQU H'0005' ;PORTC.5
LCD_DI EQU H'0004' ;PORTC.4
LED_LCD EQU H'0000' ;PORTE.0 BACK LIGHT OF LCD
LED_GZ EQU H'0001' ;PORTE.1 THE LED IS ON WHEN THE DEVICE IS FAULSE
LED_CD EQU H'0002' ;PORTE.2 THE LED IS ON WHEN THE BATTERY IS CHARGING
BUZ EQU H'0004' ;PORTA.4 THE BUZ IS ON WHEN THE DEVICE IS FAULSE
BAT_NUM EQU H'0004'
;define variable
JS1 EQU 0X20
JS2 EQU 0X21
JS3 EQU 0X22
R0 EQU 0x30
R1 EQU 0x31
R2 EQU 0x32
R3 EQU 0x33
R4 EQU 0x2F
cmd_display EQU 0x34
data_display EQU 0x35
TR_CNT EQU 0x36
TEMP EQU 0x37
W_TEMP EQU 0x38
STATUS_TEMP EQU 0x39
PCLATH_TEMP EQU 0x3A
TEMP1 EQU 0x3B
DIS_TABH EQU 0x3D
DIS_TABL EQU 0x3E
DIS_STX EQU 0x3F ;0~61
DIS_STY EQU 0x40 ;0,1,2,3
DIS_MOD EQU 0x41 ;0:8X8 1:8X16 2:16X16 3:16X8
DIS_NUMX EQU 0x42 ;
DIS_NUMY EQU 0x43 ;
DIS_MODX EQU 0x44
DIS_MODY EQU 0x45
DIS_CNTX EQU 0x46
DIS_CNTY EQU 0x47
DIS_TAB1 EQU 0X48
DIS_TAB2 EQU 0X49
DIS_TAB3 EQU 0X4A
DIS_TAB4 EQU 0X4B
DIS_TAB5 EQU 0X4C
DIS_TAB6 EQU 0X4D
DIS_TAB7 EQU 0X4E
DIS_TAB8 EQU 0X4F
DIS_TAB9 EQU 0X50
AD0TEMP EQU 0x23
AD1TEMP EQU 0x24
AD2TEMP EQU 0x58
AD3TEMP EQU 0x59
TEMPB EQU 0x25
AD2TEMPA EQU 0x26
AD0TEMPA EQU 0x27
AD1TEMPA EQU 0x28
AD3TEMPA EQU 0X57
TEMP2 EQU 0X29
TEMP0 EQU 0X2A
TEMP3 EQU 0X2B
DATA0 EQU 0X2C
DATA01 EQU 0X2D
DATA1 EQU 0X2E
DATA11 EQU 0X2F
JRS2 EQU 0X51
JRS1 EQU 0X52
JRS3 EQU 0X5A
JRS4 EQU 0X5B
ADTEMP EQU 0X53
R10 EQU 0X54
R11 EQU 0X55
R12 EQU 0X56
R6 EQU 0X5C
org 0x0000
clrf PCLATH
goto main
ORG 0x0010
main
BCF INTCON,GIE
BCF STATUS,IRP
BCF STATUS,RP1
;set banregister
BSF STATUS,RP0
MOVLW 0x02
MOVWF PCON ;power control
MOVLW 0x07
MOVWF OPTION_REG ;1:256
MOVLW 0x02
MOVWF ADCON1 ;A/D
MOVLW 0xFF
MOVWF TRISA
MOVLW 0x00
MOVWF TRISB
MOVLW 0x00
MOVWF TRISC
MOVLW 0x0F
MOVWF TRISD
MOVLW 0x00
MOVWF TRISE
;set bank register
BCF STATUS,RP0
CLRWDT
MOVLW 0x0F
MOVWF PORTA
MOVLW 0xF0
MOVWF PORTB
MOVLW 0x00
MOVWF PORTC
MOVLW 0X0F
MOVWF PORTD
MOVLW 0x07
MOVWF PORTE
MOVLW 0x00 ;0
MOVWF T1CON ;TMR1 OFF
MOVWF TR_CNT
MOVLW 0x00
MOVWF cmd_display
MOVWF data_display
MOVLW 0xFF
MOVWF TEMP
CLRF AD1TEMPA
CLRF AD2TEMPA
CLRF AD3TEMPA
CLRF AD0TEMPA
CLRF AD1TEMP
CLRF AD2TEMP
CLRF AD3TEMP
CLRF AD0TEMP
CLRF TEMP0
CLRF TEMP1
CLRF TEMP2
CLRF R0
CLRF R1
CLRF R2
CLRF R10
CLRF R11
CLRF R12
CLRF DATA0
CLRF DATA01
CLRF DATA1
CLRF DATA11
CALL clrScreen
PROG_BEG
AD_CHG1
CALL delay
MOVLW 0xC1
MOVWF ADCON0
CALL delay
BSF ADCON0,GO
AD_WAIT1
CALL delay
BTFSC ADCON0,GO
GOTO AD_WAIT1
U0_IN
MOVFW ADRES
ADDWF AD0TEMPA,1
BTFSS STATUS,C
GOTO AD_SET0N
RRF AD0TEMPA,1
BSF AD0TEMPA,7
GOTO U0_END
NOP
AD_SET0N
RRF AD0TEMPA,1
BCF AD0TEMPA,7
U0_END
MOVFW AD0TEMPA
MOVWF JRS1
NOP
CALL DELAY1
MOVFW JRS1
MOVWF AD0TEMP
AD_CHG2
CALL delay
MOVLW 0xC9
MOVWF ADCON0
CALL delay
BSF ADCON0,GO
AD_WAIT2
CALL delay
BTFSC ADCON0,GO
GOTO AD_WAIT2
MOVFW ADRES
U1_IN
MOVFW ADRES
ADDWF AD1TEMPA,1
BTFSS STATUS,C
GOTO AD_SET1N
RRF AD1TEMPA,1
BSF AD1TEMPA,7
GOTO U1_END
NOP
AD_SET1N
RRF AD1TEMPA,1
BCF AD1TEMPA,7
U1_END
MOVFW AD1TEMPA
MOVWF JRS2
NOP
CALL DELAY1
MOVFW JRS2
MOVWF AD1TEMP
AD_CHG3
CALL delay
MOVLW 0xD1
MOVWF ADCON0
CALL delay
BSF ADCON0,GO
AD_WAIT3
CALL delay
BTFSC ADCON0,GO
GOTO AD_WAIT3
U0_IN3
MOVFW ADRES
ADDWF AD2TEMPA,1
BTFSS STATUS,C
GOTO AD_SET3N
RRF AD2TEMPA,1
BSF AD2TEMPA,7
GOTO U3_END
NOP
AD_SET3N
RRF AD2TEMPA,1
BCF AD2TEMPA,7
U3_END
MOVFW AD2TEMPA
MOVWF JRS3
NOP
CALL DELAY1
MOVFW JRS3
MOVWF AD2TEMP
AD_CHG4
CALL delay
MOVLW 0xD9
MOVWF ADCON0
CALL delay
BSF ADCON0,GO
AD_WAIT4
CALL delay
BTFSC ADCON0,GO
GOTO AD_WAIT4
MOVFW ADRES
U4_IN
MOVFW ADRES
ADDWF AD3TEMPA,1
BTFSS STATUS,C
GOTO AD_SET4N
RRF AD3TEMPA,1
BSF AD3TEMPA,7
GOTO U1_END
NOP
AD_SET4N
RRF AD3TEMPA,1
BCF AD3TEMPA,7
U4_END
MOVFW AD3TEMPA
MOVWF JRS4
NOP
CALL DELAY1
MOVFW JRS4
MOVWF AD3TEMP
BTFSC PORTD,3
GOTO ZY2
CALL DELAY1
CALL DELAY1
INCF R6
ZY2
BTFSC R6,0
GOTO G03
ZY4
GOTO PAG2
G03
GOTO PAG1
NOP
PAG1
LINE11
CLRF R0
CLRF R1
CLRF R2
CLRF R3
CLRF R4
CLRF DIS_CNTX
CLRF DIS_CNTY
CLRF DIS_MODX
CLRF DIS_MODY
MOVLW 0x80
MOVWF DIS_TABL
MOVLW 0x05
MOVWF DIS_TABH
MOVLW 0x00 ;0
MOVWF DIS_STX ;place
MOVLW 0x00 ;01
MOVWF DIS_STY
MOVLW 0x2 ;3
MOVWF DIS_MOD
MOVLW 0x02 ;01--area
MOVWF DIS_NUMX
MOVLW 0x01 ;01
MOVWF DIS_NUMY
CALL DISP1 ;输入
CALL DELAY1
CALL DELAY1
LINE12
CLRF R0
CLRF R1
CLRF R2
CLRF R3
CLRF R4
CLRF DIS_CNTX
CLRF DIS_CNTY
CLRF DIS_MODX
CLRF DIS_MODY
MOVFW AD0TEMP
MOVWF DATA0
CALL TO_BCD
MOVFW R10
ANDLW 0X0F
MOVWF R10
ADDWF R10,1
MOVFW R11
ADDWF R11,1
BTFSC STATUS,DC
INCF R10,1
MOVFW R12
ADDWF R12,1
BTFSC STATUS,DC
INCF R11
MOVFW R10
ANDLW 0X0F
MOVWF TEMP2
CALL DATAZH
MOVLW 0x00
MOVWF DIS_STX ;place
MOVLW 0x00 ;01
MOVWF DIS_STY
MOVLW 0x3 ;3
MOVWF DIS_MOD
MOVLW 0x01 ;01--area
MOVWF DIS_NUMX
MOVLW 0x01 ;01
MOVWF DIS_NUMY
CALL DISP2
CALL DELAY1
MOVFW R11
ANDLW 0X0F
MOVWF TEMP2
CALL DATAZH
MOVLW 0x0A
MOVWF DIS_STX ;place
MOVLW 0x00 ;01
MOVWF DIS_STY
MOVLW 0x3 ;3
MOVWF DIS_MOD
MOVLW 0x01 ;01--area
MOVWF DIS_NUMX
MOVLW 0x01 ;01
MOVWF DIS_NUMY
CALL DISP2
CALL DELAY1
MOVFW R12
ANDLW 0X0F
MOVWF TEMP2
CALL DATAZH
MOVLW 0x14
MOVWF DIS_STX ;place
MOVLW 0x00 ;01
MOVWF DIS_STY
MOVLW 0x3 ;3
MOVWF DIS_MOD
MOVLW 0x01 ;01--area
MOVWF DIS_NUMX
MOVLW 0x01 ;01
MOVWF DIS_NUMY
CALL DISP2
CALL DELAY1
LINE13
CLRF R0
CLRF R1
CLRF R2
CLRF R3
CLRF R4
CLRF DIS_CNTX
CLRF DIS_CNTY
CLRF DIS_MODX
CLRF DIS_MODY
MOVLW 0x40
MOVWF DIS_TABL
MOVLW 0x06
MOVWF DIS_TABH
MOVLW 0x30
MOVWF DIS_STX ;place
MOVLW 0x00 ;01
MOVWF DIS_STY
MOVLW 0x3 ;3
MOVWF DIS_MOD
MOVLW 0x01 ;01--area
MOVWF DIS_NUMX
MOVLW 0x01 ;01
MOVWF DIS_NUMY
CALL DISP2
CALL DELAY1
LINE21
CLRF R0
CLRF R1
CLRF R2
CLRF R3
CLRF R4
CLRF DIS_CNTX
CLRF DIS_CNTY
CLRF DIS_MODX
CLRF DIS_MODY
MOVLW 0xC0
MOVWF DIS_TABL
MOVLW 0x05
MOVWF DIS_TABH
MOVLW 0x00
MOVWF DIS_STX ;place
MOVLW 0x02 ;01
MOVWF DIS_STY
MOVLW 0x2 ;3
MOVWF DIS_MOD
MOVLW 0x02 ;01--area
MOVWF DIS_NUMX
MOVLW 0x01 ;01--N WORD
MOVWF DIS_NUMY
CALL DISP1 ;输出
CALL DELAY1
LINE22
CLRF R0
CLRF R1
CLRF R2
CLRF R3
CLRF R4
CLRF DIS_CNTX
CLRF DIS_CNTY
CLRF DIS_MODX
CLRF DIS_MODY
MOVFW AD1TEMP
MOVWF DATA0
CALL TO_BCD
MOVFW R10
ANDLW 0X0F
MOVWF R10
ADDWF R10,1
MOVFW R11
ADDWF R11,1
BTFSC STATUS,DC
INCF R10,1
MOVFW R12
ADDWF R12,1
BTFSC STATUS,DC
INCF R11
MOVFW R10
ANDLW 0X0F
MOVWF TEMP2
CALL DATAZH
MOVLW 0x00
MOVWF DIS_STX ;place
MOVLW 0x02 ;01
MOVWF DIS_STY
MOVLW 0x3 ;3
MOVWF DIS_MOD
MOVLW 0x01 ;01--area
MOVWF DIS_NUMX
MOVLW 0x01 ;01
MOVWF DIS_NUMY
CALL DISP2
CALL DELAY1
MOVFW R11
ANDLW 0X0F
MOVWF TEMP2
CALL DATAZH
MOVLW 0x0A
MOVWF DIS_STX ;place
MOVLW 0x02 ;01
MOVWF DIS_STY
MOVLW 0x3 ;3
MOVWF DIS_MOD
MOVLW 0x01 ;01--area
MOVWF DIS_NUMX
MOVLW 0x01 ;01
MOVWF DIS_NUMY
CALL DISP2
CALL DELAY1
MOVFW R12
ANDLW 0X0F
MOVWF TEMP2
CALL DATAZH
MOVLW 0x14
MOVWF DIS_STX ;place
MOVLW 0x02 ;01
MOVWF DIS_STY
MOVLW 0x3 ;3
MOVWF DIS_MOD
MOVLW 0x01 ;01--area
MOVWF DIS_NUMX
MOVLW 0x01 ;01
MOVWF DIS_NUMY
CALL DISP2
CALL DELAY1
LINE23
CLRF R0
CLRF R1
CLRF R2
CLRF R3
CLRF R4
CLRF DIS_CNTX
CLRF DIS_CNTY
CLRF DIS_MODX
CLRF DIS_MODY
MOVLW 0x40
MOVWF DIS_TABL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -