📄 kx1.asm
字号:
DJNZ R4,RCT9
RET
;
FN_A : DB 46H,52H,45H,51H,3AH ; FREQ:
FN_B : DB 50H,57H,20H,20H,3AH ; PW :
FN_C : DB 44H,55H,54H,59H,3AH ; DUTY:
;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
;
WW45: MOV A,20H
SJMP OOLK
DISP2: MOV 20H,A
CJNE A,#3AH,NNO3A
SJMP OOLK
NNO3A: ANL A,#0F0H
CJNE A,#30H,WW45
MOV A,20H
ANL A,#0FH
OOLK: MOV R0,B
MOV @R0,A
MOV DAT,B ; B是地址;A是显示数据
MOV A,20H
LCALL ENABLE
MOV P1,A
SETB RS
CLR RW
nop
CLR E
nop
SETB E
LCALL DDT9
RET
DISPV: MOV DAT,B ; B是地址;A是显示数据
LCALL ENABLE
MOV P1,A
SETB RS
CLR RW
nop
CLR E
nop
SETB E
LCALL DDT9
RET
;
;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
DELAY: MOV R1,#0FH ; 9H
WWW: MOV R0,#0FFH
NMN: DJNZ R0,NMN
DJNZ R1,WWW
RET
WWA: MOV R0,#0F0H
NMA: DJNZ R0,NMA
DJNZ R1,WWA
RET
DDT9: MOV R3,#1FH
DDT8: MOV R2,#0FFH
DDT7: DJNZ R2,DDT7
DJNZ R3,DDT8
RET
H4F20: MOV 4FH,20H
MOV 4EH,21H
MOV 4DH,22H
MOV 4CH,23H
MOV 4BH,24H
MOV 4AH,#00H
MOV 49H,#00H
RET
H5AT4A: MOV 4AH,5AH
MOV 4BH,5BH
MOV 4CH,5CH
MOV 4DH,5DH
MOV 4EH,5EH
MOV 4FH,5FH
RET
; hhhhhhhhhhhhJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
; PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
H5A27: MOV 5AH,#00H
MOV 5BH,#00H
MOV 5CH,27H
MOV 5DH,26H
MOV 5EH,25H
MOV 5FH,24H
RET
H5A23: MOV 5AH,#00H
MOV 5BH,#00H
MOV 5CH,23H
MOV 5DH,22H
MOV 5EH,21H
MOV 5FH,20H
RET
; JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
NL0: MOV R2,#05H
NL1: CLR A
MOV @R1,A
INC R1
DJNZ R2,NL1
RET
;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
SEND8: MOV R2,#0CH
SEND7: MOV R0,#44H
MOV R1,#54H
RRQ9: MOV A,@R1
INC R1
MOV @R0,A
INC R0
DJNZ R2,RRQ9
RET
RRQ10: MOV R2,#07H
WWE4: MOV A,@R1
DEC R1
MOV @R0,A
INC R0
DJNZ R2,WWE4
RET
DDD: MOV 30H,#07H
GNN: LCALL DDX
DJNZ 30H,GNN
RET
DDX: MOV 21,#0FFH
WWWA: MOV 20,#0FFH
NMNA: DJNZ 20,NMNA
DJNZ 21,WWWA
RET
;---------------------------------------------------------------
DPTR1: CLR C
MOV A,DPL
SUBB A,#01H
MOV DPL,A
MOV A,DPH
SUBB A,#00H
MOV DPH,A
RET
; KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK 测频率 LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
;KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
; 测频率
; F = {(TCLK X 50MHz ) X 1000000} / BCLK
TESTF: SETB P0.7 ; START 口预备
CLR P0.1 ; CL
SETB P0.7 ; EEND:
SETB P0.2 ; SPUL:选择CL为预置门控信号
CLR P0.0
SETB P0.0
CLR P0.0 ; 清零
SETB P0.1 ; CL : 预置门打开
WWTT: JNB P0.7,WWTT ; 测START口,为1,表明已经开始计数,否则继续等待
MOV R1,#9FH
MOV A,09H
JZ FIRS1
LCALL WWA ; ; DELAY1 ; 已经开始计数,设置计数时间
SJMP FIRS2
FIRS1: LCALL WWW
FIRS2: CLR P0.1 ; 设置CL为0,关闭预置门
WWTT1: JB P0.7,WWTT1 ; 测START口,若为1,表明仍在计数,继续等待
SETB P0.1 ; 计数结束,可以读出计数结果
SETB P0.1
CLR P0.6 ; SEL0 : 读标准频率数
CLR P0.5 ; SEL1
CLR P0.4 ; SEL2
MOV P2,#0FFH
NOP
NOP
NOP
MOV A,P2
MOV 20H,A ; 读标准频率最底8位数
SETB P0.4 ; SEL0
CLR P0.5 ; SEL1
MOV A,P2
MOV 21H,A
CLR P0.4 ; SEL0
SETB P0.5 ; SEL1
MOV A,P2
MOV 22H,A
SETB P0.4 ; SEL0 23H,22H,21H,20H 标准频率计数
SETB P0.5 ; SEL1
MOV A,P2
MOV 23H,A ; 读标准频率最高8位数
; IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
CLR P0.4 ; SEL0
CLR P0.5 ; SEL1
SETB P0.6 ; SEL2 读待测频率数
MOV A,P2
MOV 24H,A
SETB P0.4 ; SEL0
CLR P0.5 ; SEL1
MOV A,P2
MOV 25H,A
CLR P0.4 ; SEL0
SETB P0.5 ; SEL1
MOV A,P2
MOV 26H,A
SETB P0.4 ; SEL0 27H,26H,25H,24H 待测频率计数
SETB P0.5 ; SEL1
MOV A,P2
MOV 27H,A
CLR P0.1
; KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK计算
MOV 4AH,#24H ;16H ; 50MHZ X 1000000 = 2D79883D2000H
MOV 4BH,#61H ;0BCH ; 40MHZ X 1000000 = 246139CA8000H
MOV 4CH,#39H ;0C4H ; 250MHZ X 1000000 = E3 5F A9 31 A0 00H
MOV 4DH,#0CAH ;23H
MOV 4EH,#80H ;90H
MOV 4FH,#00H ;#00H
SEC2: LCALL H5A27
LCALL MULNM ; 50MHZ X 1000000 = 2D79883D2000H
LCALL SEND8
LCALL H5A23
LCALL DIVD1
MOV R0,#30H
MOV R1,#4FH
LCALL RRQ10
MOV 36H,#00H
LCALL HEXBCD
MOV 16H,#0FH
MOV A,47H
ANL A,#0FH
JNZ JB47
MOV A,46H
ANL A,#0F0H
JNZ H46N
MOV A,46H
ANL A,#0FH
JNZ L46N ;
MOV A,45H
ANL A,#0F0H
JNZ H45N
MOV A,45H
ANL A,#0FH
JNZ L45N
MOV A,44H
ANL A,#0F0H
JNZ H44N
MOV A,44H
ANL A,#0FH
JNZ L44N
MOV A,43H
ANL A,#0F0H
JNZ H43N
MOV A,43H
ANL A,#0FH
JNZ L43N
SJMP L43Y
JB47: SJMP JM47
L43Y: MOV R0,#40H ; 0.5HZ
LCALL DIS_A
MOV 16H,#00H
MOV 0AH,#40H
RET
L43N: MOV R0,#40H ; 1HZ,4HZ
LCALL DIS_A
MOV 0AH,#40H
RET
H43N: MOV R0,#40H ; 16H
LCALL DIS_B
MOV 0AH,#20H
RET
L44N: MOV R0,#41H
LCALL DIS_A
MOV 0AH,#10H
RET
H44N: MOV R0,#41H
LCALL DIS_B
MOV 0AH,#08H
RET
L45N: MOV R0,#42H
LCALL DIS_A
MOV 0AH,#04H
RET
H45N: MOV R0,#42H
LCALL DIS_B
MOV 0AH,#02H
RET
L46N: MOV R0,#43H
LCALL DIS_A
MOV 0AH,#01H
RET
H46N: MOV R0,#43H
LCALL DIS_B
MOV 0AH,#60H
RET
JM47: MOV R0,#44H
LCALL DIS_A
MOV 0AH,#70H
RET
; YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY; 测脉宽 LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
; OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 测脉宽 KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
WITH:
SETB P0.3 ; EEND 口预备
CLR P0.2 ; SPUL:选择测脉宽,CL设为测脉宽控制信号
SETB P0.1 ; CL : 设CL为1,则测高电平脉宽
NOP
CLR P0.0
SETB P0.0
CLR P0.0 ; 清零,同时启动脉宽计数
NOP
NOP
NOP
WWTT2: JNB P0.3,WWTT2 ; 测EEND口,为1,表明脉宽计数结束
NOP
SETB P0.1
SETB P0.1
CLR P0.6 ; SEL0 : 读标准频率数
CLR P0.5 ; SEL1
CLR P0.4 ; SEL2
MOV P2,#0FFH
NOP
NOP
NOP
MOV A,P2
MOV 20H,A ; 读标准频率最底8位数
SETB P0.4 ; SEL0
CLR P0.5 ; SEL1
MOV A,P2
MOV 21H,A
CLR P0.4 ; SEL0
SETB P0.5 ; SEL1
MOV A,P2
MOV 22H,A
SETB P0.4 ; SEL0 23H,22H,21H,20H 标准频率计数
SETB P0.5 ; SEL1
MOV A,P2
MOV 23H,A ; 读标准频率最高8位数
; LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
MOV R1,#4AH
LCALL NL0
MOV 4FH,#7DH ; X 40MHZ周期为25nS,X 5 =125 =7DH
THD2: LCALL H5A23 ; X 250MHZ= 4ns, X 5 = 20 =14H
LCALL MULNM
LCALL SEND8
MOV R1,#5AH
LCALL NL0
MOV 5FH,#32H
LCALL DIVD1
MOV R0,#30H
MOV R1,#4FH
LCALL RRQ10
MOV 36H,#00H
LCALL HEXBCD
MOV A,44H
ANL A,#0FH
JNZ LL44 ; CJNE A,#00H,LL44
MOV A,43H
ANL A,#0F0H
JNZ HH43 ; CJNE A,#00H,HH43
SJMP LL43Y
LL44: SJMP LL44N
HH43: SJMP HH43N
; PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
LL43Y: MOV R0,#40H
LCALL DIS_A
MOV 0AH,#04H
RET
; PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
HH43N: MOV R0,#40H
LCALL DIS_B
MOV 0AH,#02H
RET
; PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
LL44N: MOV R0,#41H
LCALL DIS_A
MOV 0AH,#01H
RET
; LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL 测占空比 LLLLLLLLLLLLLLLLLLLLLLLLLLLLL
; 测占空比
RATO:
SETB P0.3 ; EEND 口预备
CLR P0.2 ; SPUL:选择测脉宽,CL设为测脉宽控制信号
SETB P0.1 ; CL : 设CL为1,则测高电平脉宽
NOP
CLR P0.0
SETB P0.0
CLR P0.0 ; 清零,同时启动脉宽计数
NOP
NOP
NOP
WWTT5: JNB P0.3,WWTT5 ; 测EEND口,为1,表明脉宽计数结束
NOP
SETB P0.1
SETB P0.1
CLR P0.6 ; SEL0 : 读标准频率数
CLR P0.5 ; SEL1
CLR P0.4 ; SEL2
MOV P2,#0FFH
NOP
NOP
NOP
MOV A,P2
MOV 20H,A ; 读标准频率最底8位数
SETB P0.4 ; SEL0
CLR P0.5 ; SEL1
MOV A,P2
MOV 21H,A
CLR P0.4 ; SEL0
SETB P0.5 ; SEL1
MOV A,P2
MOV 22H,A
SETB P0.4 ; SEL0 23H,22H,21H,20H 标准频率计数
SETB P0.5 ; SEL1
MOV A,P2
MOV 23H,A ; 读标准频率最高8位数
; HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
SETB P0.3 ; EEND 口预备
CLR P0.2 ; SPUL:选择测脉宽,CL设为测脉宽控制信号
CLR P0.1 ; CL : 设CL为1,则测低高电平脉宽
NOP
CLR P0.0
SETB P0.0
CLR P0.0 ; 清零,同时启动脉宽计数
NOP
NOP
NOP
WWTT4: JNB P0.3,WWTT4 ; 测EEND口,为1,表明脉宽计数结束
NOP
SETB P0.1
SETB P0.1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -