📄 aaa1-87g1.asm
字号:
list p=16f877A ; list directive to define processor
;_config 0x01
#include P16f877A.inc ; processor specific variable definitions
;**********************************************************************
__CONFIG _PWRTE_ON & _WDT_OFF & _HS_OSC &_BODEN_OFF &_CP_ALL
R0 EQU 0x20
AD1TEMP EQU 0x30
AD2TEMP EQU 0x31
AD3TEMP EQU 0x32
AD4TEMP EQU 0x33
AD5TEMP EQU 0x34
AD6TEMP EQU 0X6A
AD7TEMP EQU 0X6B
AD8TEMP EQU 0X6C
AD9TEMP EQU 0X6D
SR1 EQU 0X6E
SR2 EQU 0X6F
TEMP EQU 0x35
cmd EQU 0x36
dis_data EQU 0x37
Reg1 EQU 0x38
R3 EQU 0x39
R4 EQU 0x3A
R1 EQU 0x3B
R5 EQU 0x3C
DISADDRH EQU 0x3D
DISADDRL EQU 0x3E
AD1TEMPA EQU 0x44
AD2TEMPA EQU 0x45
AD3TEMPA EQU 0x46
AD4TEMPA EQU 0x47
AD5TEMPA EQU 0x48
AD6TEMPA EQU 0x49
AD7TEMPA EQU 0x52
AD8TEMPA EQU 0x53
AD9TEMPA EQU 0x54
DIS_STY EQU 0x40
DIS_STX EQU 0x41
DIS_XNUM EQU 0x42
DIS_YNUM EQU 0x43
YS_KEY1 EQU 0x50
XS_HUAM EQU 0x56
XS_PAGE EQU 0x57
LS_XSN EQU 0x58
LS_XSY EQU 0x59
LS_XSX EQU 0x5A
CHG_N1 EQU 0x5B
CHG_N2 EQU 0x5C
CHG_N3 EQU 0x5D
JS1 EQU 0X5E
JS2 EQU 0X5F
JS3 EQU 0X51
TAB_L0 EQU 0x60
TAB_L1 EQU 0x61
TAB_L2 EQU 0x62
TAB_L3 EQU 0x63
TAB_L4 EQU 0x64
TAB_L5 EQU 0x65
TAB_L6 EQU 0x66
TAB_L7 EQU 0x67
RSY EQU 0X69
BAT_01 EQU 0x70
BAT_02 EQU 0x71
BAT_03 EQU 0x72
BAT_04 EQU 0x73
BAT_01A EQU 0x74
BAT_02A EQU 0x75
BAT_03A EQU 0x76
BAT_04A EQU 0x77
JRS1 EQU 0X78
JRS2 EQU 0X79
JRS3 EQU 0X7A
JRS4 EQU 0X7B
JRS5 EQU 0X7C
JRS6 EQU 0X7D
JRS7 EQU 0X7E
JRS8 EQU 0X7F
JRS9 EQU 0X21
LCD_CS1 EQU H'0003'
LCD_CS0 EQU H'0007'
LCD_DI EQU H'0004'
LCD_E EQU H'0002'
LCD_RW EQU H'0005'
PG0 EQU H'0000'
PG1 EQU H'0001'
PG2 EQU H'0002'
PG3 EQU H'0003'
PG4 EQU H'0004'
PG5 EQU H'0005'
BW EQU H'0004'
K_AJ EQU H'0003'
org 0x0000
clrf PCLATH ; ensure page bits are claared
goto main ; go to beginning of program
ORG 0x0010
main
BCF INTCON,GIE
BCF STATUS,IRP
BCF STATUS,RP1
;set bank 1 register
BSF STATUS,RP0
MOVLW 0x02
MOVWF PCON
MOVLW 0x8F
MOVWF OPTION_REG
MOVLW 0x02
MOVWF ADCON1
MOVLW 0xFF
MOVWF TRISA
MOVLW 0x00
MOVWF TRISB
MOVLW 0x03
MOVWF TRISC
MOVLW 0xF8
MOVWF TRISD
MOVLW 0x00 ; 0X07
MOVWF TRISE
;set bank 0 register
BCF STATUS,RP0
MOVLW 0xEF
MOVWF PORTA
CLRF PORTB
CLRF PORTC
MOVLW 0xF8
MOVWF PORTD
MOVLW 0xF0
MOVWF PORTE
MOVLW 0x31
MOVWF T1CON
CLRF XS_PAGE
MOVLW 0x0F
MOVWF YS_KEY1
CLRF AD1TEMPA
CLRF AD2TEMPA
CLRF AD3TEMPA
CLRF AD4TEMPA
CLRF AD5TEMPA
CLRF AD6TEMPA
CLRF AD7TEMPA
CLRF AD8TEMPA
CLRF AD9TEMPA
CLRF JS1
CLRF AD1TEMP
CLRF AD2TEMP
CLRF AD3TEMP
CLRF AD4TEMP
CLRF AD5TEMP
CLRF AD6TEMP
CLRF AD7TEMP
CLRF AD8TEMP
CLRF AD9TEMP
CLRF SR1
CLRF SR2
MOVLW 0x30
MOVWF BAT_01
MOVLW 0x60
MOVWF BAT_02
MOVLW 0x90
MOVWF BAT_03
MOVLW 0x30
MOVWF BAT_01A
MOVLW 0x30
MOVWF BAT_02A
MOVLW 0x30
MOVWF BAT_03A
;open timer1 interrupt
; BSF STATUS,RP0 ;SET 0 PEGE--IF EFA
; BSF PIE1,TMR1IE
; BSF INTCON,PEIE
; BSF INTCON,GIE
; BCF STATUS,RP0
;************************************
MOVLW 0xE8
MOVWF DISADDRL
MOVLW 0x03
MOVWF DISADDRH
CALL init
CALL DELAY
CALL clearStreen
CLRF XS_PAGE
NOP
NOP
NOP
PROG_BEG
GOTO ZY4 ;TEST USE
BTFSC PORTD,4
GOTO ZY2
CALL DELAY2
CALL DELAY2
BTFSC PORTD,4
GOTO ZY2
GOTO GO1
GO1
BTFSC PORTD,4
GOTO GO2
GOTO GO1 ; at time for test,off;but time for use
GO2
BTFSC PORTD,0 ; must on
GOTO ZY3
ZY1 BSF PORTD,0
GOTO ZY2
ZY3
BCF PORTD,0
GOTO ZY2
NOP
ZY2
BTFSC PORTD,5
GOTO ZY4
CALL DELAY2
CALL DELAY2
BTFSC PORTD,5
GOTO ZY4
GO3
BTFSC PORTD,5
GOTO G04
GOTO GO3 ; at time for test,off;but time for use
G04
BTFSC PORTD,1 ;must on
GOTO ZY5
ZY6 BSF PORTD,1
GOTO ZY4
ZY5
BCF PORTD,1
GOTO ZY4
NOP
ZY4
GOTO AD_CHG1
NOP
NOP
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 ADRESH
ADDWF AD7TEMPA,1
BTFSS STATUS,C
GOTO AD_SET7N
RRF AD7TEMPA,1
BSF AD7TEMPA,7
GOTO U7_END
NOP
AD_SET7N
RRF AD7TEMPA,1
BCF AD7TEMPA,7
U7_END
MOVFW AD7TEMPA
MOVWF JRS7
NOP
CALL DELAY1
MOVFW JRS7
MOVWF AD7TEMP
AD_CHG2
CALL DELAY
MOVLW 0xC9
MOVWF ADCON0
CALL DELAY
BSF ADCON0,GO
AD_WAIT2
CALL DELAY
BTFSC ADCON0,GO
GOTO AD_WAIT2
MOVFW ADRESH
U8_IN
MOVFW ADRESH
ADDWF AD8TEMPA,1
BTFSS STATUS,C
GOTO AD_SET8N
RRF AD8TEMPA,1
BSF AD8TEMPA,7
GOTO U8_END
NOP
AD_SET8N
RRF AD8TEMPA,1
BCF AD8TEMPA,7
U8_END
MOVFW AD8TEMPA
MOVWF JRS8
NOP
CALL DELAY1
MOVFW JRS8
MOVWF AD8TEMP
AD_CHG9
CALL DELAY
MOVLW 0xD1
MOVWF ADCON0
CALL DELAY
BSF ADCON0,GO
AD_WAIT9
CALL DELAY
BTFSC ADCON0,GO
GOTO AD_WAIT9
U0_IN9
MOVFW ADRESH
ADDWF AD9TEMPA,1
BTFSS STATUS,C
GOTO AD_SET9N
RRF AD9TEMPA,1
BSF AD9TEMPA,7
GOTO U9_END
NOP
AD_SET9N
RRF AD9TEMPA,1
BCF AD9TEMPA,7
U9_END
MOVFW AD9TEMPA
MOVWF JRS9
NOP
CALL DELAY1
MOVFW JRS9
MOVWF AD9TEMP
AD_CHG5
CALL DELAY
MOVLW 0xD9
; MOVLW 0XE1
MOVWF ADCON0
CALL DELAY
BSF ADCON0,GO
AD_WAIT5
CALL DELAY
BTFSC ADCON0,GO
GOTO AD_WAIT5
MOVFW ADRESH
NOP
NOP
UA_IN
BCF PORTE,0
BCF PORTE,1
BCF PORTE,2
CALL DELAY
MOVFW ADRESH
ADDWF AD1TEMPA,1
BTFSS STATUS,C
GOTO AD_SETAN
RRF AD1TEMPA,1
BSF AD1TEMPA,7
GOTO UA_END
NOP
AD_SETAN
RRF AD1TEMPA,1
BCF AD1TEMPA,7
UA_END
MOVFW AD1TEMPA
MOVWF JRS1
NOP
; CALL DELAY1
CALL DELAY3
MOVFW JRS1
MOVWF AD1TEMP
UB_IN
BSF PORTE,0
BCF PORTE,1
BCF PORTE,2
CALL DELAY
MOVFW ADRESH
ADDWF AD2TEMPA,1
BTFSS STATUS,C
GOTO AD_SETBN
RRF AD2TEMPA,1
BSF AD2TEMPA,7
GOTO UB_END
NOP
AD_SETBN
RRF AD2TEMPA,1
BCF AD2TEMPA,7
UB_END
MOVFW AD2TEMPA
MOVWF JRS2
NOP
; CALL DELAY1
CALL DELAY3
MOVFW JRS2
MOVWF AD2TEMP
UC_IN
BCF PORTE,0
BSF PORTE,1
BCF PORTE,2
CALL DELAY
MOVFW ADRESH
ADDWF AD3TEMPA,1
BTFSS STATUS,C
GOTO AD_SETCN
RRF AD3TEMPA,1
BSF AD3TEMPA,7
GOTO UC_END
NOP
AD_SETCN
RRF AD3TEMPA,1
BCF AD3TEMPA,7
UC_END
MOVFW AD3TEMPA
MOVWF JRS3
NOP
; CALL DELAY1
CALL DELAY3
MOVFW JRS3
MOVWF AD3TEMP
UA_OUT
BSF PORTE,0
BSF PORTE,1
BCF PORTE,2
CALL DELAY
MOVFW ADRESH
ADDWF AD4TEMPA,1
BTFSS STATUS,C
GOTO AD_OTAN
RRF AD4TEMPA,1
BSF AD4TEMPA,7
GOTO UAO_END
NOP
AD_OTAN
RRF AD4TEMPA,1
BCF AD4TEMPA,7
UAO_END
MOVFW AD4TEMPA
MOVWF JRS4
NOP
CALL DELAY3
; CALL DELAY1
MOVFW JRS4
MOVWF AD4TEMP
UB_OUT
BCF PORTE,0
BCF PORTE,1
BSF PORTE,2
CALL DELAY
MOVFW ADRESH
ADDWF AD5TEMPA,1
BTFSS STATUS,C
GOTO AD_OTBN
RRF AD5TEMPA,1
BSF AD5TEMPA,7
GOTO UBO_END
NOP
AD_OTBN
RRF AD5TEMPA,1
BCF AD5TEMPA,7
UBO_END
MOVFW AD5TEMPA
MOVWF JRS5
NOP
; CALL DELAY1
CALL DELAY3
MOVFW JRS5
MOVWF AD5TEMP
UC_OUT
BSF PORTE,0
BCF PORTE,1
BSF PORTE,2
CALL DELAY
MOVFW ADRESH
ADDWF AD6TEMPA,1
BTFSS STATUS,C
GOTO AD_OTCN
RRF AD6TEMPA,1
BSF AD6TEMPA,7
GOTO UCO_END
NOP
AD_OTCN
RRF AD6TEMPA,1
BCF AD6TEMPA,7
UCO_END
MOVFW AD6TEMPA
MOVWF JRS6
NOP
; CALL DELAY1
CALL DELAY3
MOVFW JRS6
MOVWF AD6TEMP
; BSF PORTE,0
NEXT1
NOP
NOP
BTFSC PORTD,K_AJ
GOTO XS_HM
CALL DELAY3
; BTFSC PORTD,K_AJ
; GOTO XS_HM
GOTO XS_G1
XS_G1
BTFSC PORTD,K_AJ
GOTO XS_G2
GOTO XS_G1
XS_G2
CALL clearStreen
MOVFW XS_PAGE
ANDLW 0X1F
MOVWF XS_PAGE
BCF STATUS,C
RLF XS_PAGE,1
NOP
XS_HM
MOVFW XS_PAGE
ANDLW 0X1F
BTFSC XS_PAGE,PG0
GOTO PG_XS1
NOP
BTFSC XS_PAGE,PG1
GOTO PG_XS2
NOP
BTFSC XS_PAGE,PG2
GOTO PG_XS3
NOP
BTFSC XS_PAGE,PG3
GOTO PG_XS4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -