📄 ckcl.asm
字号:
org 0000h
AVSET1 EQU P1.5
CMPIN EQU P1.6
ALERT EQU P1.4
ADDJUST EQU 02H
AVTB DATA 40H ;BACK OF AVT
AVI DATA 4BH ;ADDR OF DISP EXIST COMPRESS BCD
AVL DATA 4AH
DISPD DATA 30H ;ADDR OF DISP EXIST AS BCD
HI8 DATA 6AH ;ADDRESS OF D/A DATA
LOW4 DATA 6BH
SHIFT DATA 70H ;"SHIFT" KEY FLAG
AVB DATA 60H ; ADDRESS OF AV1 BIN MODE
AVT DATA 50H ;THE OFFSET ADDRESS OF" 4096 OR 4096*61"
DISPD2 DATA 72H ;THE BACKUP OF DISPD
ajmp start
org 0100h
start: MOV SHIFT,#00H ;SHIFT KEY SET TO BE NO WORKING
CLR P1.4
LCALL CON1 ;CLEAR DISPD RAM
LCALL B_DISPD
LCALL SET_DEFT
JNB CMPIN,CON ;Vi>100mV TO "CON"
LCALL SAMPSET ;set AV1=61
LJMP MAIN
CON: LCALL DISP_1
MAIN: LCALL KEY
mov dptr,#plo
MOV A,58H
MOV B,#03H
MUL AB
jmp @a+dptr
j11: MOV A,#00H
CJNE A,SHIFT,ADD_1
LCALL DISP_M
mov DISPD,#01h
LCALL DISP
ljmp dd
ADD_1: LCALL ADD1DISP
LCALL DISPB
LCALL INCRESE ;"+1"AND DO D/A WORK
LCALL BCD_BIN
LCALL AVTB_AVT
LCALL BHDIV
LCALL OUTH8L4
LCALL DACONV
LCALL CON1
LJMP DD
j12: MOV A,#00H
CJNE A,SHIFT,DEC_1
LCALL DISP_M
MOV DISPD,#02h
LCALL DISP
ljmp dd
DEC_1: LCALL DEC1DISP
LCALL DISPB
LCALL DECRESE ;"-1"AND DO D/A WORK
LCALL BCD_BIN
LCALL AVTB_AVT
LCALL BHDIV
LCALL OUTH8L4
LCALL DACONV
LJMP DD
j13: MOV A,#00H
CJNE A,SHIFT,DI3
LCALL DISP_M
mov DISPD,#03h
LCALL DISP
DI3: ljmp dd
j14: MOV A,#00H
CJNE A,SHIFT,DI4
LCALL DISP_M
mov DISPD,#04h
LCALL DISP
DI4: ljmp dd
j15: MOV A,#00H
CJNE A,SHIFT,DI5
LCALL DISP_M
mov DISPD,#05h
LCALL DISP
DI5: ljmp dd
j16: MOV A,#00H
CJNE A,SHIFT,DI6
LCALL DISP_M
mov DISPD,#06h
LCALL Disp
DI6: ljmp dd
j21: MOV A,#00H
CJNE A,SHIFT,DI21
LCALL DISP_M
mov DISPD,#07h
LCALL Disp
DI21: ljmp dD
j22: MOV A,#00H
CJNE A,SHIFT,DI22
LCALL DISP_M
mov DISPD,#08h
LCALL Disp
DI22: ljmp dd
j23: MOV A,#00H
CJNE A,SHIFT,DI23
LCALL DISP_M
mov DISPD,#09h
LCALL Disp
DI23: ljmp dd
j24: MOV A,#00H
CJNE A,SHIFT,DI24
LCALL DISP_M
mov DISPD,#00h
LCALL Disp
DI24: ljmp dd
j25: INC SHIFT ;"SHIFT KEY"
MOV A,#02H
CJNE A,SHIFT,ED25
MOV SHIFT,#00H
ED25: ljmp dd
j26: LCALL B_DISPD
LCALL READ_D ;READ KEY CODE "ENTER KEY FOUCTION"
LCALL CMP_90
LCALL BCD_BIN
LCALL AVTB_AVT
LCALL BHDIV
LCALL OUTH8L4
LCALL DACONV
LCALL CON1
LJMP DD
ADD1DISP:LCALL IF1000
JC ADD1END
MOV R3,#3
MOV R1,#DISPD2
MOV A,@R1
RE: ADD A,#1
MOV B,A
MOV R4,#0AH
SUBB A,R4
JNZ AEND
MOV @R1,#00H
INC R1
MOV A,@R1
DJNZ R3,RE
MOV @R1,#01H
AJMP ADD1END
AEND: MOV A,B
MOV @R1,A
ADD1END: RET
DEC1DISP:LCALL IF1
JC DEC1END
CLR C
MOV R1,#DISPD2
MOV A,@R1
SUBB A,#1
JNC DEND
MOV @R1,#09H
INC R1
MOV A,@R1
SUBB A,#00H
JNC DEND
MOV @R1,#09H
INC R1
MOV A,@R1
SUBB A,#00H
JNC DEND
MOV @R1,#09H
INC R1
MOV A, @R1
SUBB A,#00H
DEND: MOV @R1,A
DEC1END: RET
IF1: MOV A,#00H ; "IF DATA=1 Y/N=C:1/0 "
CJNE A,AVI,IFJ
MOV A,#01H
CJNE A,AVL,IFJ
SETB C
AJMP IFEND
IFJ: CLR C
IFEND: RET
IF1000: MOV A,#10H
CJNE A,AVI,IFBJ
SETB C
AJMP IFBEND
IFBJ: CLR C
IFBEND: RET
INCRESE:CLR C
MOV A,#10H
CJNE A,AVI,CT1
SETB ALERT ;SHOW ALERT LED
AJMP ED1
CT1: CLR ALERT
MOV R3,AVL
MOV A,#01H
ADDC A,R3
DA A
MOV AVL,A
MOV A,#00H
MOV R3,AVI
ADDC A,R3
DA A
MOV AVI,A
ED1: RET
DECRESE:CLR C
MOV A,#00H ; "-1 "
CJNE A,AVI,CT2
MOV A,#01H
CJNE A,AVL,CT2
SETB ALERT ;SHOW ALERT LED
LJMP ED2
CT2: MOV A,AVL
ADD A,#99H
MOV AVL,A
CJNE A,#99,ED2
MOV A,AVI
ADD A,#99H
MOV AVI,A
ED2: RET
CMP_90: MOV A,AVI
JNZ C9END1
MOV A,AVL
CLR C
SUBB A,#90
JNC C9END1 ;AV>90 THEN GO
CLR AVSET1 ;AV1=1
MOV R0,#AVT ;AVT IS THE HEAD ADDR OF
MOV R1,#AVTB ;4096 OR 4096*61 3 BYTE
MOV @R0,#0DH
MOV @R1,#0DH
INC R0
INC R1
MOV @R0,#80H
MOV @R1,#80H
INC R0
INC R1
MOV @R0,#00H
MOV @R1,#00H
AJMP C9END
C9END1: SETB AVSET1 ;AV1=61
MOV R0, #AVT
MOV R1, #AVTB
MOV @R0,#12H
MOV @R1,#12H
INC R0
INC R1
MOV @R0,#0F4H
MOV @R1,#0F4H
INC R0
INC R1
MOV @R0,#00H
MOV @R1,#00H
C9END: RET
BCD_BIN: MOV R0,#DISPD2
INC R0
INC R0
INC R0
MOV R2,#3
MOV R3,#0
MOV A,@R0
MOV R4,A
BBLOOP: MOV A,R4
MOV B,#10
MUL AB
MOV R4,A
MOV A,#10
XCH A,B
XCH A,R3
MUL AB
ADD A,R3
XCH A,R4
DEC R0
ADD A,@R0
XCH A,R4
ADDC A,#0
MOV R3,A
DJNZ R2,BBLOOP
MOV AVB,R4 ;BIN DATA ADDRESS
MOV R1,#AVB
INC R1
MOV A,R3
MOV @R1,A
MOV R1,#00H
MOV R3,#00H
MOV R4,#00H
RET
dd: ajmp MAIN
key: clr p3.3
mov a,#00h
mov sbuf,a
kl0: jnb ti,kl0
clr ti
kl1: jnb p1.0,pk1
jb p1.1,kl1
pk1: LCALL d10ms
jnb p1.0,pk2
jb p1.1,kl1
pk2: mov r7,#06h
mov r6,#07fh
mov r3,#00h
mov a,r6
kl5: mov sbuf,a
kl2: jnb ti,kl2
clr ti
jnb p1.0,pk0
jb p1.1,net
mov r4,#06h
ajmp pk3
pk0: mov r4,#00h
pk3: mov a,#00h
mov sbuf,a
kl3: jnb ti,kl3
clr ti
kl4: jnb p1.0,kl4
jnb p1.1,kl4
mov a,r4
add a,r3
mov 58h,a
ret
net: mov a,r6
rr a
mov r6,a
inc r3
djnz r7,kl5
ret
disp: SETB p3.3
step1: mov scon,#00h
show: mov r7,#05h
MOV R1,#DISPD
INC R1
INC R1
INC R1
MOV A,#00H
MOV @R1,A
mov r0,#DISPD
loop1: mov a,@r0
dir0: mov dptr,#desg
movc a,@a+dptr
mov 20h,a
dir1: mov sbuf,a
wait: jbc ti,loop2
sjmp wait
loop2: inc r0
clr ti
djnz r7,loop1
CLR p3.3
ret
dispB: SETB p3.3
stepB1: mov scon,#00h
showB: mov r7,#05h
MOV R1,#DISPD2
INC R1
INC R1
INC R1
MOV A,#00H
MOV @R1,A
mov r0,#DISPD2
loopB1: mov a,@r0
dirB0: mov dptr,#desg
movc a,@a+dptr
mov 20h,a
dirB1: mov sbuf,a
waitB: jbc ti,loopB2
sjmp waitB
loopB2: inc r0
clr ti
djnz r7,loopB1
CLR p3.3
ret
d10ms: mov r7,#15h
dl: mov r6,#0ffh
dl6: djnz r6,dl6
djnz r7,dl
ret
AA: MOV SBUF,A
AA1: JNB TI,AA1
CLR TI
RET
plo: ljmp j11
ljmp j12
ljmp j13
ljmp j14
ljmp j15
ljmp j16
ljmp j21
ljmp j22
ljmp j23
ljmp j24
ljmp j25
ljmp j26
set_deft:CLR AVSET1
MOV HI8,#0FFH
MOV LOW4,#0FH
LCALL DACONV
RET
DACONV: MOV DPTR,#7FFFH ;D/A CONVERT
MOV A,HI8
MOVX @DPTR,A
MOV A,LOW4
MOV DPTR,#3FFFH
MOVX @DPTR,A
MOV DPTR,#1FFFH
MOVX @DPTR,A
RET
SAMPSET: SETB AVSET1 ;JUDGE Vi<100mV
MOV AVI,#00H
MOV AVL,#61H
mov scon,#00h
LCALL DISP61
RET
DISP61: SETB P3.3
mov scon,#00h
MOV R7,#05H
MOV R0,#00H
MOV DPTR,#TAB1
DL0: MOV A,R0
MOVC A,@A+DPTR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -