📄 ht1621.asm
字号:
KEYBUFF DATA 30H
UP_DN_CNT DATA 31H
LCDMM DATA 23H
DATAB EQU P3.3
WRPIN EQU P3.4
CSPIN EQU P3.5
SDAAT BIT P1.0
SCLAT BIT P1.1
JIYI_ADD EQU 01H
/////////////////////
ORG 0000H
LJMP MAIN
///////////////////////
ORG 0030H
MAIN:
MOV PSW,#00H
MOV SP,#70H
MOV P0,#00H
MOV P2,#00H
MOV KEYBUFF,#0FFH
SETB DATAB
SETB WRPIN
SETB CSPIN
SETB SDAAT
SETB SCLAT
LCALL DLY50
MOV LCDMM,#01H
LCALL LCDCM
MOV LCDMM,#03H
LCALL LCDCM
MOV LCDMM,#29H
LCALL LCDCM
MOV LCDMM,#04H
LCALL LCDCM
LCALL CLRLCD1
NOP
NOP
MOV DPTR, #TABINIT
LCALL WRCOM
NOP
NOP
LCALL DLY50
MOV A,#JIYI_ADD
LCALL RD24
CJNE A,#0FFH,INIT_1
MOV UP_DN_CNT,#1
MOV DPTR, #TAB_1
LCALL WRCOM
JMP LOOP3
INIT_1:
MOV UP_DN_CNT,A
LJMP UP1
LOOP3:
LCALL KEYSCAN
MOV A,KEYBUFF
CJNE A,#0FFH,WORK
LJMP LOOP3
WORK:
MOV A,KEYBUFF
MOV B,#2
MUL AB
MOV KEYBUFF,#0FFH
MOV DPTR,#TABKEY
NOP
NOP
JMP @A+DPTR
TABKEY:
AJMP LOOP3
AJMP UP
AJMP DN
UP:
INC UP_DN_CNT
MOV A,UP_DN_CNT
CJNE A,#0BH,UP1
MOV UP_DN_CNT,#1
UP0:
MOV DPTR, #TAB_1
LCALL WRCOM
LCALL IN_JIYI
MOV P0,#00H
MOV P2,#00H
LCALL DLY50
SETB P0.0
LJMP LOOP3
UP1:
CJNE A,#1H,UP2
MOV DPTR, #TAB_1
LCALL WRCOM
LCALL IN_JIYI
MOV P0,#00H
MOV P2,#00H
LCALL DLY50
SETB P0.0
LJMP LOOP3
UP2:
CJNE A,#2H,UP3
MOV DPTR, #TAB_2
LCALL WRCOM
LCALL IN_JIYI
MOV P0,#00H
MOV P2,#00H
LCALL DLY50
SETB P0.1
LJMP LOOP3
UP3:
CJNE A,#3H,UP4
MOV DPTR, #TAB_3
LCALL WRCOM
LCALL IN_JIYI
MOV P0,#00H
MOV P2,#00H
LCALL DLY50
SETB P0.2
LJMP LOOP3
UP4:
CJNE A,#4H,UP5
MOV DPTR, #TAB_4
LCALL WRCOM
LCALL IN_JIYI
MOV P0,#00H
MOV P2,#00H
LCALL DLY50
SETB P0.3
LJMP LOOP3
UP5:
CJNE A,#5H,UP6
MOV DPTR, #TAB_5
LCALL WRCOM
LCALL IN_JIYI
MOV P0,#00H
MOV P2,#00H
LCALL DLY50
SETB P0.4
LJMP LOOP3
UP6:
CJNE A,#6H,UP7
MOV DPTR, #TAB_6
LCALL WRCOM
LCALL IN_JIYI
MOV P0,#00H
MOV P2,#00H
LCALL DLY50
SETB P2.3
LJMP LOOP3
UP7:
CJNE A,#7H,UP8
MOV DPTR, #TAB_7
LCALL WRCOM
LCALL IN_JIYI
MOV P0,#00H
MOV P2,#00H
LCALL DLY50
SETB P2.4
LJMP LOOP3
UP8:
CJNE A,#8H,UP9
MOV DPTR, #TAB_8
LCALL WRCOM
LCALL IN_JIYI
MOV P0,#00H
MOV P2,#00H
LCALL DLY50
SETB P2.5
LJMP LOOP3
UP9:
CJNE A,#9H,UP10
MOV DPTR, #TAB_9
LCALL WRCOM
LCALL IN_JIYI
MOV P0,#00H
MOV P2,#00H
LCALL DLY50
SETB P2.6
LJMP LOOP3
UP10:
CJNE A,#0AH,UP_EXT
MOV DPTR, #TAB_10
LCALL WRCOM
MOV P0,#00H
MOV P2,#00H
LCALL DLY50
SETB P2.7
LCALL IN_JIYI
UP_EXT:
LJMP LOOP3
DN:
MOV A,UP_DN_CNT
CJNE A,#0,DN1
MOV UP_DN_CNT,#0AH
MOV DPTR, #TAB_10
LCALL WRCOM
LCALL IN_JIYI
LJMP LOOP3
DN1:
DEC UP_DN_CNT
MOV A,UP_DN_CNT
LJMP UP1
IN_JIYI:
MOV A,#JIYI_ADD
MOV B,UP_DN_CNT
LCALL WT24
RET
KEYSCAN:
SETB P3.6
SETB P3.7
LCALL DLY50
JB P3.6,K1
MOV KEYBUFF,#1
RET
K1:
JB P3.7,KEY_EXT
MOV KEYBUFF,#2
KEY_EXT:
RET
;;;;;;;;;;;;;;;;清屏 ;;;;;;;;;;;;;;;;;;;
CLRLCD:
CLRLCD1:
MOV DPTR, #TABC
LCALL WRCOM
ret
;;;;;;;;;;;; 写100类命令ID ;;;;;;;;;;;;;;;;;;;;
LCDCM: CLR CSPIN
MOV A, #80H ;100类
MOV R7, #03H
LCM1: RLC A
MOV DATAB,C
NOP
CLR WRPIN
NOP
NOP
NOP
SETB WRPIN
DJNZ R7, LCM1
MOV R7, #08H
MOV A, LCDMM
LCM2: RLC A
MOV DATAB,C
NOP
CLR WRPIN
NOP
NOP
NOP
NOP
SETB WRPIN
NOP
NOP
NOP
DJNZ R7, LCM2
NOP
NOP
NOP
NOP
CLR DATAB
NOP
CLR WRPIN
NOP
NOP
NOP
NOP
SETB WRPIN
NOP
NOP
NOP
NOP
SETB CSPIN
NOP
NOP
NOP
NOP
SETB DATAB
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 写101命令
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WRCOM:
CLR CSPIN
MOV R7, #03H ;101
MOV A, #0A0H
LWR1:
RLC A
MOV DATAB,C
NOP
CLR WRPIN
NOP
NOP
NOP
SETB WRPIN
NOP
NOP
DJNZ R7, LWR1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 连写模式,发送6位ADDRES数据
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV R7, #06H ;6 addres
MOV A, #00H
LWR2: RLC A
MOV DATAB, C
NOP
NOP
NOP
NOP
NOP
CLR WRPIN
NOP
NOP
NOP
NOP
NOP
SETB WRPIN
NOP
NOP
DJNZ R7, LWR2
LCALL WR_LOOP
RET
;;;;;;;;;;; 发送表数据,9个字节,8位;;;;;;;;;;;;;;;;;;;;;;;
WR_LOOP:
MOV R2, #10H
LOOP7: MOV A, #00H ;
MOVC A, @A+DPTR
MOV R7, #08H
INC DPTR
LCM3: RRC A ;
MOV DATAB, C
NOP
CLR WRPIN
NOP
NOP
NOP
NOP
lcall DLY50
SETB WRPIN
NOP
DJNZ R7, LCM3
DJNZ R2, LOOP7
NOP
SETB CSPIN
NOP
SETB DATAB
NOP
RET
;;;;;;;;;;;;;;;;;;;; 延时;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DLY50:MOV R3,#01H
DL511:MOV R4,#0AH
DL522:MOV R6,#0A0H
DL533:DJNZ R6,DL533
DJNZ R4,DL522
DJNZ R3,DL511
RET
RD24: PUSH ACC
LCALL STARTAT
MOV A,#0A0H
LCALL SENDDATE
LCALL ASKWAT
POP ACC
LCALL SENDDATE
LCALL ASKWAT
LCALL STARTAT
MOV A,#0A1H
LCALL SENDDATE
LCALL ASKWAT
SETB SDAAT
MOV R7,#8
CLR A
SETB SDAAT
RD000:
RL A
SETB SCLAT
NOP
NOP
MOV C,SDAAT
MOV ACC.0,C
CLR SCLAT
NOP
NOP
DJNZ R7,RD000
LCALL NOASK
LCALL STOPAT
RET
WT24: PUSH ACC
LCALL STARTAT
MOV A,#0A0H
LCALL SENDDATE
LCALL ASKWAT
POP ACC
LCALL SENDDATE
LCALL ASKWAT
MOV A,B
LCALL SENDDATE
LCALL ASKWAT
LCALL STOPAT
LCALL DELAY
RET
SENDDATE:
MOV R2,#8
LOOPW: RLC A
MOV SDAAT,C
LCALL DELAY
SETB SCLAT
LCALL DELAY
CLR SCLAT
LCALL DELAY
DJNZ R2,LOOPW
SETB SDAAT
RET
DELAY: NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RET
ASKWAT: LCALL DELAY
SETB SDAAT
LCALL DELAY
SETB SCLAT
WAITASKW:
MOV C,SDAAT
; JC WAITASKW
LCALL DELAY
CLR SCLAT
SETB SDAAT
RET
NOASK:
SETB SDAAT
NOP
NOP
NOP
SETB SCLAT
LCALL DELAY
CLR SCLAT
LCALL DELAY
RET
STARTAT: SETB SCLAT
SETB SDAAT
LCALL DELAY
CLR SDAAT
LCALL DELAY
CLR SCLAT
RET
STOPAT: CLR SCLAT
LCALL DELAY
CLR SDAAT
LCALL DELAY
SETB SCLAT
LCALL DELAY
SETB SDAAT
LCALL DELAY
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LINT0:NOP
NOP
NOP
NOP
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
tabINIT:
DB 00h,00h,00h,00h,0B0H,40h,0DH,23H//2DH
DB 45H,60H,15H,29H,0A0H,40H,00h,80h
tabC :
DB 00H,00H,00H,00H,00H,00H,00H,00H ;
DB 00H,00H,00H,00H,00H,00H,00H,00H
TAB_1:
DB 15h,69h,0A0h,00h,0B0H,40h,0DH,23H
DB 45H,60H,15H,29H,0A0H,40H,00h,80h
TAB_2:
DB 15h,69h,51h,60h,0B0H,40h,0DH,23H
DB 45H,60H,15H,29H,0A0H,40H,00h,80h
TAB_3:
DB 15h,69h,50h,61h,0B0H,40h,0DH,23H
DB 45H,60H,15H,29H,0A0H,40H,00h,80h
TAB_4:
DB 15h,69h,44h,21h,0B0H,40h,0DH,23H
DB 45H,60H,15H,29H,0A0H,40H,00h,80h
TAB_5:
DB 15h,69h,54h,41h,0B0H,40h,0DH,23H
DB 45H,60H,15H,29H,0A0H,40H,00h,80h
TAB_6:
DB 15h,69h,55h,41h,0B0H,40h,0DH,23H
DB 45H,60H,15H,29H,0A0H,40H,00h,80h
TAB_7:
DB 15h,69h,00h,61h,0B0H,40h,0DH,23H
DB 45H,60H,15H,29H,0A0H,40H,00h,80h
TAB_8:
DB 15h,69h,55h,61h,0B0H,40h,0DH,23H
DB 45H,60H,15H,29H,0A0H,40H,00h,80h
TAB_9:
DB 15h,69h,54h,61h,0B0H,40h,0DH,23H
DB 45H,60H,15H,29H,0A0H,40H,00h,80h
TAB_10:
DB 0A0h,00h,15h,61h,0B0H,40h,0DH,23H
DB 45H,60H,15H,29H,0A0H,40H,00h,80h
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -