📄 频率计.asm
字号:
ORG 0000H
AJMP MAIN
ORG 000BH
LJMP ZD
ORG 0030H
MAIN:
MOV SP,#70H
MOV P1,#00H
MOV P2,#0FH
MOV 30H,#02H
MOV 31H,#00H
MOV 32H,#00H
MOV 33H,#05H
MOV 34H,#00H
MOV 35H,#09H
MOV 36H,#00H
MOV 37H,#07H ;显示扫描
MOV 38H,#37H
MOV 39H,#00H
MOV 3AH,#00H
MOV 3BH,#00H ;存放频率
MOV TMOD,#01010001B ;中断,16位计数模式
MOV TH1,#HIGH(65536-100)
MOV TL1,#LOW(65536-100)
SETB TR1 ; 开计数器1
MOV TH0,#HIGH(65536-55000)
MOV TL0,#LOW(65536-55000)
MOV IE,#10000010B
MOV 40H,#20
;*********************************
XS_SM: LCALL XS_SMZ ;显示扫描
;*********************************
;选择所测通道
JB P2.0,XZ00 ;电阻
MOV P1,#00H
SETB P1.4
SETB P1.0
SETB P2.4
CLR P2.5
CLR P2.6
XZ10:LCALL XS_SMZ
JNB P2.0,XZ10
AJMP C_PL
XZ00:JB P2.1,XZ01 ;电容
MOV P1,#00H
SETB P1.5
SETB P1.2
SETB P2.5
CLR P2.4
CLR P2.6
XZ_11:LCALL XS_SMZ
JNB P2.1,XZ_11 ;电感
AJMP C_PL
XZ01:JB P2.2,TC_XZ
MOV P1,#00H
SETB P1.6
SETB P2.6
CLR P2.4
CLR P2.5
XZ_12:LCALL XS_SMZ
JNB P2.2,XZ_12
TC_XZ:NOP
;**********************************
;开一秒中断测频率
C_PL: JBC TF1,C_PL0
LJMP XS_SM
C_PL0:
CLR TR1
MOV TH1,#00H
MOV TL1,#00H
SETB TR1
SETB TR0 ;中断
LJMP XS_SM
;**********************************
;显示扫描 8次
XS_SMZ:
MOV R1,38H ; 0011 0111
MOV A,39H ; 0
SWAP A
ORL A,@R1
MOV P0,A
LCALL DELAY10
MOV A,39H
INC A
MOV 39H,A
MOV R1,38H
DEC R1
MOV 38H,R1
CJNE R1,#2FH,TC_XS
MOV 38H,#37H
MOV 39H,#00H
TC_XS:NOP
RET
;**********************************
;中断
ZD: PUSH ACC
PUSH PSW
MOV TH0,#HIGH(65536-55000)
MOV TL0,#LOW(65536-55000)
DJNZ 40H,TC_ZD0
AJMP ZD0
TC_ZD0:AJMP TC_ZD
ZD0: MOV 40H,#20
CLR TR0
CLR TR1
MOV 30H,#00H
MOV 31H,#00H
MOV 50H,TH1
MOV 51H,TL1
LCALL SL_BCD
MOV A,52H
SWAP A
ANL A,#0FH
MOV 32H,A
MOV A,52H
ANL A,#0FH
MOV 33H,A
MOV A,53H
SWAP A
ANL A,#0FH
MOV 34H,A
MOV A,53H
ANL A,#0FH
MOV 35H,A
MOV A,54H
SWAP A
ANL A,#0FH
MOV 36H,A
MOV A,54H
ANL A,#0FH
MOV 37H,A ; 显示所测频率
MOV TMOD,#01010001B
MOV TH1,#HIGH(65536-100)
MOV TL1,#LOW(65536-100)
SETB TR1
TC_ZD:POP PSW
POP ACC
RETI
;********************************************
;双字节二进制数转换成三字节BCD码子程式序
;11H 10H 变换后存放 14H13H12H
SL_BCD:
MOV 11H,50H;H
MOV 10H,51H;L
SBIN_BCD:
MOV R1,#12H
MOV R5,#03H
CLR A
LOOP1:MOV @R1,A
INC R1
DJNZ R5,LOOP1
MOV R7,#10H
LOOP4:MOV R0,#10H
MOV R6,#02H
CLR C
LOOP2:MOV A,@R0
RLC A
MOV @R0,A
INC R0
DJNZ R6,LOOP2
MOV R1,#12H
MOV R5,#03H
LOOP3:MOV A,@R1
ADDC A,@R1
DA A
MOV @R1,A
INC R1
DJNZ R5,LOOP3
DJNZ R7,LOOP4
MOV 54H,12H
MOV 53H,13H
MOV 52H,14H
RET
;显示扫描延时
DELAY10:
MOV R7,#6
DL:MOV R6,#250
DL1:DJNZ R6,DL1
DJNZ R7,DL
RET
END
10111010
39 00 01 00 00 00 00 |00 00 00| 00 00 00 00 00 00 00
1 2 3 4 5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -