📄 gwdvp_m1.asm
字号:
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
CLR P0.6 ; SEL0 : 读标准频率数
CLR P0.5 ; SEL1
CLR P0.4 ; SEL2
MOV A,P2
MOV 24H,A ; 读标准频率最底8位数
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 ; 读标准频率最高8位数
; LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
; 高电平脉宽加低电平脉宽 27H/26H/25H/24H + 23H/22H/21H/20H = 27H/26H/25H/24H
CLR C
MOV A,24H
ADDC A,20H
MOV 24H,A
MOV A,25H
ADDC A,21H
MOV 25H,A
MOV A,26H
ADDC A,22H
MOV 26H,A
MOV A,27H
ADDC A,23H
MOV 27H,A
MOV R1,#4AH
LCALL NL0
MOV 4EH,#03H
MOV 4FH,#0E8H ; X 1000 = 3E8H
LCALL H5A23
LCALL MULNM
LCALL SEND8
LCALL H5A27
LCALL DIVD1
MOV R0,#30H
MOV R1,#4FH
LCALL RRQ10
MOV 36H,#00H
LCALL HEXBCD
MOV R0,#40H
LCALL DIS_A
MOV 0AH,#02H
RET
; JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
TESTFF:
MOV 1BH,#0C5H
MOV 1CH,#17H
MOV 0DH,#0CH ; z
MOV 0EH,#0BH ; H
MOV 0FH,#0AH ;
MOV 0CH,#0AH
MOV A,0AH
CJNE A,#01H,POIN1
BASE: MOV B,#0CDH
SJMP POI8 ; LCALL DISP2
POIN1: CJNE A,#02H,POIN2
MOV B,#0CCH
SJMP POI8 ;
POIN2: CJNE A,#04H,POIN3
MOV B,#0CBH
SJMP POI8 ;
POIN3: CJNE A,#08H,POIN4
MOV B,#0CAH
SJMP POI8 ;
POIN4: CJNE A,#10H,POIN5
MOV B,#0C9H
SJMP POI8 ;
POIN5: CJNE A,#20H,POIN6
MOV B,#0C8H
SJMP POI8 ;
POIN6: CJNE A,#40H,POIN7
MOV B,#0C7H
SJMP POI8 ;
POIN7: CJNE A,#60H,POIN8
MOV B,#0C8H
SJMP POI8 ;
POIN8: CJNE A,#70H,POIN9
MOV B,#0C9H
SJMP POI8 ;
POIN9: RET
POI8: MOV A,#2EH
MOV 1AH,B
LCALL DISP2
MOV R7,#0BH
RRD1: MOV A,1BH ; 1BH中装地址
INC A
CJNE A,1AH,NOEQ
INC A
NOEQ: MOV 1BH,A
MOV R1,1CH ; 1CH装数据
DEC R1
MOV 1CH,R1
MOV A,R1
CJNE A,#0FH,NOTX6
MOV A,0AH
ANL A,#60H
CJNE A,#60H,NOTX6
MOV 0FH,#0DH
NOTX6: MOV A,@R1
LCALL ASC
MOV B,1BH
LCALL DISP2
DJNZ R7,RRD1
RET
; KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
TESTPW: MOV 1BH,#0C5H
MOV 1CH,#17H
MOV 0DH,#0FH ; z
MOV 0EH,#0EH ; H
MOV 0FH,#0AH ;
MOV 0CH,#0AH
MOV A,0AH
CJNE A,#01H,POI1
BASE1: MOV B,#0CDH
SJMP POI8 ; LCALL DISP2
POI1: CJNE A,#02H,POI2
MOV B,#0CCH
SJMP POI8 ;
POI2: CJNE A,#04H,POI3
MOV B,#0CBH
POI3: MOV A,#2EH ; 小数点
MOV 1AH,B
LCALL DISP2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -