📄 kx1.asm
字号:
; 2005-12-22 'LCD
RS EQU P3.0
RW EQU P3.1
E EQU P3.2
DAT EQU 30H
DAT1 EQU 31H
ORG 0000H
MOV 0FFH,#0FFH
SJMP START1
ORG 000BH
JMP T0INT
ORG 0023H
JMP SIOINT
ORG 0030H
GOTO1: LJMP GPS
START1: MOV SP,#60H
NOP
JNB P0.0, GOTO1
MOV DAT,#01H ; CLEAR 液晶显示初始化
LCALL ENABLE ; 如果使用LCD液晶显示,在程序开头必须加上这句
LCALL DISP3
MOV DAT,#01H ; CLEAR
LCALL ENABLE
MOV R5,#80H
MOV DPTR,#KONX
LCALL FB6
MOV DPTR,#TC1
MOV R5,#0C0H
LCALL FB1
MOV DAT,#0CH ; 关闭光标
LCALL ENABLE
MOV 7AH,#00H
MOV 7BH,#00H
MOV 7CH,#00H
MOV 7DH,#00H
KKE1: LCALL KKEYI ;键盘信号搜索
KCACOM: LCALL KCOM1 ; A > 9 执行键盘命令
LJMP KKE1
;lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
KCOM1: CJNE A,#00H,KN88 ; 键1 (04): ---------------------------(1)
; 键13(K34)控制----测频率-------
LCALL CLR88
MOV DAT,#01H ; CLEAR
LCALL ENABLE
; -----------------------------------------------测频率-------------------------------------
MOV DPTR,#FN_A ;以上程序显示液晶设置
MOV R5,#80H
LCALL FCN9
RRRV: LCALL TESTF ; 测频率子程序
LCALL TESTFF ; 数据显示调整子程序
SJMP RRRV
KN88 : CJNE A,#01H,KF14 ; 键14(K35)控制----测脉宽-------
MOV DAT,#01H ; CLEAR
LCALL ENABLE
RRRC: MOV DPTR,#FN_B
MOV R5,#81H
LCALL FCN9
MOV 0BH,#00H
MOV 0AH,#00H
LCALL WITH ; 测脉宽子程序
LCALL TESTPW ; 数据显示调整子程序
SJMP RRRC
RET
KF14: CJNE A,#02H,KF15 ; 键15(K36)控制----测占空比-------
MOV DAT,#01H ; CLEAR
LCALL ENABLE
MOV DPTR,#FN_C
MOV R5,#81H
LCALL FCN9
MOV 0BH,#00H
MOV 0AH,#00H
RRRN: LCALL RATO ; 测占空比子程序
LCALL TESTD ; 数据显示调整子程序
SJMP RRRN
KF15: ; 键16(K37)控制
MOV A,#49H
MOV B,#80H
LCALL DISP2
MOV A,#43H
MOV B,#80H
LCALL DISP2
LJMP CCC
RET
RET
;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
;
;KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
DIVD1: NOP ; 2N BYTE / N BYTE = N BYTE ,HERE N=3 IN 31H
MOV 30H,#0CH ; (4A,4B,4C,4D,4E,4FH)/(5D,5E,5FH)=(4D,4E,4FH)
MOV 31H,#06H ; 除法程序,30H放置被除数字节数,31H放置除数字节数
DIVPP: MOV A,AD1
MOV R2,A
RL A
RL A
RL A
MOV R3,A
CLR 0F0H
CLR C
MOV A,#ADA
SUBB A,R2
MOV AD3,A
MOV R1,#ADB
DIVMB2B: MOV A,@R1
JNZ DIVM2B
DEC R1
DJNZ R2,DIVMB2B
SETB 0F0H
RET
DIVM2B: MOV R2,AD1
MOV R1,#ADB
MOV R0,AD3
DIVM2L: MOV A,@R0
SUBB A,@R1
DEC R0
DEC R1
DJNZ R2,DIVM2L
JNC DIVM20
DIVM2D: LCALL SHIL1
JC DIVM2S
DIVM2C: MOV R0,AD3
MOV R1,#ADB
MOV R2,AD1
DIVM2CL: MOV A,@R0
SUBB A,@R1
DEC R0
DEC R1
DJNZ R2,DIVM2CL
JC DIVM2E
DIVM2S: INC ADA
MOV R2,AD1
MOV R0,AD3
MOV R1,#ADB
LCALL SUBMBB
DIVM2E: DJNZ R3,DIVM2D
RET
DIVM20: SETB 0F0H
RET
DB 02H,12H
SHIL1: MOV R2,AD0
MOV R0,#ADA
SHIL1B: CLR C
SHILL: MOV A,@R0
RLC A
MOV @R0,A
DEC R0
DJNZ R2,SHILL
RET
SUBMBB: CLR C
SUBMB1: MOV A,@R0
SUBB A,@R1
MOV @R0,A
DEC R0
DEC R1
DJNZ R2,SUBMB1
RET
AD0 EQU 30H
AD1 EQU 31H
AD2 EQU 32H
AD3 EQU 33H
AD4 EQU 34H
AD5 EQU 35H
AD6 EQU 36H
ADA EQU 4FH
ADB EQU 5FH
ADC EQU 4DH
ADDV EQU 5DH
MULNM: NOP ; N BYTES X M BYTES = N+M BYTES HERE N=3;M=3
MOV 30H,#06H ; (4D,4E,4FH)*(5D,5E,5FH)=(5A--5FH)
MOV 31H,#06H ; 乘法程序,30H放置被乘数字节数,31H放置乘数字节数
MULTT: MOV A,AD0
MOV R3,AD1
MOV R2,A
ADD A,R3
INC A
MOV AD2,A
MOV A,#ADB
CLR C
SUBB A,R3
MOV AD6,A
MOV R1,A
SUBB A,R2
MOV AD5,A
INC R2
MULNMZ: MOV @R1,#00H
DEC R1
DJNZ R2,MULNMZ
MULNMB: MOV R2,AD0
MOV R1,AD6
MOV R0,#ADA
CLR 00H
MULNML: MOV A,ADB
JZ MULNMD
MOV B,@R0
MUL AB
ADD A,@R1
MOV @R1,A
JNB 00H,MULNM1
INC B
MULNM1: MOV A,B
DEC R1
ADDC A,@R1
MOV @R1,A
MOV 00H,C
DEC R0
DJNZ R2,MULNML
MULNMD: MOV R0,AD5
CLR A
MOV R2,AD2
MULNMS: XCH A,@R0
INC R0
DJNZ R2,MULNMS
DJNZ R3,MULNMB
RET
; LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
KKEYI: LCALL KKS1 ; KEY SCANNING PROG
JNZ KLK1 ; 有键盘, 转跳 KLK1
KN1: LCALL DELAY
LCALL DELAY
LCALL DELAY
SJMP KKEYI ; 无键,转跳 KKEYI 继续测键
KLK1: LCALL DELAY
LCALL DELAY
LCALL KKS1
JNZ KLK2 ; 确实有键,转跳至 KLK2
LCALL DELAY
SJMP KKEYI
KLK2: NOP ; THERE IS KEYI
JB P1.0,NOK1
MOV A,#00H
LJMP GOHM
NOK1: NOP
JB P1.1,NOK2
MOV A,#01H
LJMP GOHM
NOK2: NOP
JB P1.2,NOK3
MOV A,#02H
LJMP GOHM
NOK3: NOP
JB P1.3,NOK4
MOV A,#03H
LJMP GOHM
NOK4: NOP
JB P1.4,NOK5
MOV A,#04H
LJMP GOHM
NOK5: NOP
JB P1.5,NOK6
MOV A,#05H
LJMP GOHM
NOK6: NOP
JB P1.6,NOK7
MOV A,#06H
LJMP GOHM
NOK7: NOP
JB P1.7,KLK1
MOV A,#07H
GOHM: PUSH ACC
KLK3: LCALL DELAY
LCALL KKS1
JNZ KLK3
LCALL DELAY
LCALL KKS1
JNZ KLK3
POP ACC
RET
KKS1:
MOV A,P1
CPL A
RET ; IF THERE IS KEYING THEN A =/= 0
;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
; TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
BCDHEX : NOP ; N BYTES COMPRESSED BCD CODES TO M BYTES HEX CODES
MOV 30H,#07H ; HERE N=M=7 BCD(49,4A,4B,4C,4D,4E,4FH)--HEX(59,5A,5B,5C,5D,5E,5FH)
MOV 31H,#07H ; BCD码向16进制HEX码转换程序
MOV R1,#ADB
MOV R2,AD1
MOV R3,AD0
MOV A,#ADA
CLR C
SUBB A,R3
INC A
MOV R0,A
DBNZ: MOV @R1,#00H
DEC R1
DJNZ R2,DBNZ
SJMP DBNB
DBNJ: MOV R1,#ADB
MOV R2,AD1
CLR 00H
CLR A
DBNM: XCH A,@R1
MOV B,#64H
MUL AB
MOV C,00H
ADDC A,@R1
MOV @R1,A
MOV 00H,C
MOV A,B
DEC R1
DJNZ R2,DBNM
DBNB: CLR A
XCHD A,@R0
XCH A,@R0
SWAP A
MOV B,#0AH
MUL AB
ADD A,@R0
INC R0
DBNA: MOV R2,AD1
DEC R2
MOV R1,#ADB
ADD A,@R1
MOV @R1,A
DBNL: DEC R1
CLR A
ADDC A,@R1
MOV @R1,A
DJNZ R2,DBNL
DJNZ R3,DBNJ
RET
DB 02H,12H
; llllllllllllllllllllllllllllllllllllllllllll
HEXBCD : NOP ; 7 BYTE HEX TO 8 BYTE BCD : HEX(3XH-30H)-->BCD(4XH-40H)
MUBTD: MOV R0,#40H
MOV R7,#08H
CLR A
LOPP1: MOV @R0,A
INC R0
DJNZ R7,LOPP1
MOV R7,#38H
LOOP4: MOV R1,#30H
MOV R6,#07H
CLR C
LOPP2: MOV A,@R1
RLC A
MOV @R1,A
INC R1
DJNZ R6,LOPP2
MOV R5,#08H
MOV R0,#40H
LOOP3: MOV A,@R0
ADDC A,@R0
DA A
MOV @R0,A
INC R0
DJNZ R5,LOOP3
DJNZ R7,LOOP4
RET
;
;llllllllllllllllllllllllllllllllllllll
DSP1: MOV R1,40H
INC R1
MOV 40H,R1
MOV A,@R1 ; DAT1
MOV P1,A
SETB RS
CLR RW
nop
CLR E
NOP
NOP
SETB E
LCALL DDT9
DJNZ R2,DSP1
RET
ENABLE: CLR RS
CLR RW
MOV P1,DAT
CLR E
nop
SETB E
LCALL DDT9
RET
ASC1: MOV DPTR,#TAJ
MOVC A,@A+DPTR
RET
TAJ: DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H,46H
; KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
ASC: MOV DPTR,#TA6
MOVC A,@A+DPTR
RET
TA6: DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,20H,48H,7AH,4DH
DB 0E4H,73H,2EH ; 0EH- u ; 0FH- s ;10H ->.
DISP3: MOV DAT,#38H ;8bit 2 Rol 5*7
LCALL ENABLE
MOV DAT,#0FH ;OPEN LCD : 00001DCB
LCALL ENABLE
MOV DAT,#06H ;LEFT TO RIGHT:
LCALL ENABLE
RET
;
;
FB1: MOV R4,#14H
MOV R6,#00H
RC5: MOV A,R6
INC R6
MOVC A,@A+DPTR
MOV B,R5
INC R5
LCALL DISP2
DJNZ R4,RC5
RET
TC1: DB 20H,20H,53H,49H,47H,4EH,41H,4CH,20H,54H,65H,73H,74H,73H,20H,20H
; SIGNAL_TESTS
;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
FB6: MOV R4,#0AH ; SQUARE: ,SAWTOOTH , TRIANGLE, LADDER
MOV R6,#00H
RCV: MOV A,R6
INC R6
MOVC A,@A+DPTR
MOV B,R5
INC R5
LCALL DISP2
DJNZ R4,RCV
RET
KONX: DB 20H,20H,20H,20H,4BH,4FH,4EH,58H,49H,4EH ; KONXIN
;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
FCN9: MOV R4,#05H ;
MOV R6,#00H
RCT9: MOV A,R6
INC R6
MOVC A,@A+DPTR
MOV B,R5
INC R5
LCALL DISP2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -