📄 plj100.asm
字号:
MOV A,R6
MOV SBUF,A
JNB TI,$
CLR TI
LCALL DELAY40
MOV A,#0DH
MOV SBUF,A
JNB TI,$
CLR TI
LCALL DELAY40
SETB RECE_BZ
CLR RT485
;SETB ES
RET
;========================================
;=================计数器=================
JSPD: MOV DSPLA_ADD1,#20
MOV A,DSPLA_ADD1
ADD A,FYDIG
ADD A,LBDIG
MOV DSPLA_ADD1,A
MOV A,KEYFUN
CJNE A,#01,JSPDTZ
JNB KEY_BZ,TZ
CLR KEY_BZ
CLR START
SETB CLRD
NOP
CLR CLRD
NOP
SETB CLRD
NOP
CLR CLRD
MOV XSDIG1,#00H
MOV BCJSQ0,#00H
MOV BCJSQ1,#00H
MOV BCJSQ2,#00H
MOV BCJSQ3,#00H
TZ: LCALL BNBCD
LCALL DSPLA
LCALL DSPLA
LCALL DSPLA
LCALL DSPLA
LCALL PFG
CLR CLRD
SETB START
TZ1: MOV DS_TIME,#10
LCALL DSPLA
LCALL DSPLA
LCALL DSPLA
LCALL DSPLA
SETB TR0
LJMP TIM1END
JSPDTZ: CLR START
LJMP TZ1
TIM1END1: LJMP TIM1END
JSPD1: LJMP JSPD
;txd9: ljmp RD_TX;GGGGGGGGGGGGGGGGGGGGGGG
;===============定时1S//标准频率100M
TIM0: PUSH PSW
PUSH ACC
MOV TH0,#0FBH
MOV TL0,#1H
LCALL DSPLA
LCALL DSPLA
DJNZ DS_TIME,TIM1END1
;===================================
;判断键盘
MOV A,KEYFUN
CJNE A,#00,JSPD1
;===================================
CLR START;停止计数
CLR TR0
SETB GK
DENGD: LCAll dspla
JB EEND,DENGD;有停止信号吗??
;====选择1通道====标准频率==
CLR ADRB
CLR ADRA
NOP
MOV A,P0
MOV BZJSQ0,A
MOV A,P2
MOV BCJSQ0,A
;========选择2通道====标准频率==
SETB ADRB
CLR ADRA
NOP
MOV A,P0
MOV BZJSQ1,A
MOV A,P2
MOV BCJSQ1,A
;========选择3通道====标准频率==
CLR ADRB
SETB ADRA
NOP
MOV A,P0
MOV BZJSQ2,A
MOV A,P2
MOV BCJSQ2,A
;========选择4通道====标准频率==
SETB ADRA
SETB ADRB
NOP
MOV A,P0
MOV BZJSQ3,A
MOV A,P2
MOV BCJSQ3,A
;======判断数据是否为0
MOV A,BZJSQ3
JNZ ZX
MOV A,BZJSQ2
JNZ ZX
MOV A,BZJSQ1
JNZ ZX
MOV A,BZJSQ0
JNZ ZX
LJMP TIM1E
;============================
ZX: MOV A,GDIG
CJNE A,#08H,HHHFG
MOV BZDIG0,#00h;#00H;60M*64
MOV BZDIG1,#00h;#00H
MOV BZDIG2,#80h;#80H
MOV BZDIG3,#53h;#0a1H
MOV BZDIG4,#0eeh;#0a7H
MOV BZDIG5,#7bh;#6bH
MOV BZDIG6,#0a8h;#4aH
MOV BZDIG7,#0ah;#35H;
LJMP HJKH
HHHFG: MOV BZDIG0,#00h;#00H;60M
MOV BZDIG1,#00h;#00H
MOV BZDIG2,#4eh;#86H
MOV BZDIG3,#0b9h;#9eH
MOV BZDIG4,#0efh;#0aeH
MOV BZDIG5,#0a1h;#29H
MOV BZDIG6,#2ah;#0d5H
MOV BZDIG7,#00H;
;==========================
HJKH: LCALL DSPLA
LCALL DSPLA
LCALL wdt_dog
LCALL DODIV;48M*100000000///Ns
LCALL DSPLA
LCALL DSPLA
LCALL wdt_dog
LCALL MUL4;*被测频率计数器
;=======================
LCALL DSPLA
LCALL DSPLA
LCALL BMBCD;BCD码转换
LCALL DSPLA
LCALL DATACL;PFG;数据处理
LCALL DSPLA
TIM1E: LCALL DSPLA
MOV DS_TIME,#3 ;60
;=============================
SETB CLRD
NOP
CLR CLRD
NOP
SETB CLRD
NOP
CLR CLRD
;========================
SETB START
TRE: LCALL wdt_dog
LCALL DSPLA
JNB EEND,TRE
SETB TR0
setb ea
TIM1END: POP ACC
POP PSW
RETI
;=========================================
MUL4: MOV R1,#BCJSQ0;被乘数低位指针
MOV R0,#BZDIG0;乘数低位指针
MOV R2,#4;被乘数字节数
MOV R3,#5;乘数字节数
MOV R4,#CJDIG0;乘积低位指针
DOMUL: MOV A,R1
MOV R6,A
MOV A,R0
MOV R5,A
MOV A,R2
ADD A,R3
MOV 26H,A
MOV R7,A
MOV A,R4
MOV R0,A
CLEAR: MOV @R0,#00H
INC R0
DJNZ R7,CLEAR
MOV A,R4
MOV R7,A
MOV 27H,R7
MOV 20H,R2
;=====================
push acc
mov 49h,a
mov 4ah,r6
lcall dspla
mov a,49h
mov r6,4ah
pop acc
;========================
LP31: MOV A,R5
MOV R0,A
MOV A,@R0
MOV B,@R1
MUL AB
ACALL ADDM
INC R1
DJNZ R2,LP31
MOV R2,20H
MOV A,R6
MOV R1,A
MOV A,R7
INC A
MOV R7,A
MOV R4,A
INC R5
DJNZ R3,LP31
MOV R6,27H
MOV R5,26H
RET
ADDM: MOV 21H,A
MOV A,R4
MOV R0,A
MOV A,21H
ADD A,@R0
MOV @R0,A
MOV A,B
INC R0
ADDC A,@R0
MOV @R0,A
INC R0
MOV A,@R0
ADDC A,#00H
MOV @R0,A
DEC R0
MOV A,R0
MOV R4,A
;==================
push acc
mov 49h,a
mov 4ah,r6
lcall dspla
mov a,49h
mov r6,4ah
pop acc
;=====================
RET
;========================================
BMBCD: MOV R0,#BCD1
MOV R6,#40
PLJK1: MOV A,#00H
MOV @R0,A
INC R0
DJNZ R6,PLJK1
;===========================
LCALL wdt_dog
MOV R0,#CJDIG0
MOV A,R5
MOV R7,A
MOV R1,#BCD1
MOV A,R0
MOV R5,A
MOV A,R1
MOV R6,A
MOV A,R7
MOV R3,A
INC R3
CLR A
CLBCD: MOV @R1,A
INC R1
DJNZ R3,CLBCD
MOV A,R7
MOV B,#08
MUL AB
MOV R3,A
LP0: MOV A,R5
MOV R0,A
MOV A,R7
MOV R2,A
CLR C
LP1: MOV A,@R0
RLC A
MOV @R0,A
INC R0
DJNZ R2,LP1
MOV A,R6
MOV R1,A
MOV A,R7
MOV R2,A
INC R2
LP2: MOV A,@R1
ADDC A,@R1
DA A
MOV @R1,A
INC R1
DJNZ R2,LP2
DJNZ R3,LP0
MOV A,R6
MOV R1,A
RET
;===============================
DATACL: MOV R0,#BCDF1
MOV R4,#21
P9: MOV @R0,#0
INC R0
DJNZ R4,P9
MOV R0,#BCD10
MOV R1,#BCDF20
MOV R4,#10
;===============
PLKD: MOV A,BCD10
ANL A,#0F0H
SWAP A
MOV R1,#BCDF20
MOV @R1,A
DEC R1
MOV A,BCD10
ANL A,#0FH
MOV @R1,A
DEC R1
;==================
MOV A,BCD9
ANL A,#0F0H
SWAP A
MOV @R1,A
DEC R1
MOV A,BCD9
ANL A,#0FH
MOV @R1,A
DEC R1
;===============
MOV A,BCD8
ANL A,#0F0H
SWAP A
MOV @R1,A
DEC R1
MOV A,BCD8
ANL A,#0FH
MOV @R1,A
DEC R1
;================
MOV A,BCD7
ANL A,#0F0H
SWAP A
MOV @R1,A
DEC R1
MOV A,BCD7
ANL A,#0FH
MOV @R1,A
DEC R1
;======================
LCALL wdt_dog
MOV A,BCD6
ANL A,#0F0H
SWAP A
MOV @R1,A
DEC R1
MOV A,BCD6
ANL A,#0FH
MOV @R1,A
DEC R1
;====================
MOV A,BCD5
ANL A,#0F0H
SWAP A
MOV @R1,A
DEC R1
MOV A,BCD5
ANL A,#0FH
MOV @R1,A
DEC R1
;=======================
MOV A,BCD4
ANL A,#0F0H
SWAP A
MOV @R1,A
DEC R1
MOV A,BCD4
ANL A,#0FH
MOV @R1,A
DEC R1
;-==========
MOV A,BCD3
ANL A,#0F0H
SWAP A
MOV @R1,A
DEC R1
MOV A,BCD3
ANL A,#0FH
MOV @R1,A
DEC R1
MOV A,BCD2
ANL A,#0F0H
SWAP A
MOV @R1,A
DEC R1
MOV A,BCD2
ANL A,#0FH
MOV @R1,A
DEC R1
MOV A,BCD1
ANL A,#0F0H
SWAP A
MOV @R1,A
DEC R1
MOV A,BCD1
ANL A,#0FH
MOV @R1,A
;=================
MOV R0,#BCDF10 ;小数点
MOV A,@R0
ADD A,#10
MOV @R0,A
;=====================
MOV R1,#00H
MOV R0,#BCDF20
XL: MOV A,@R0
CJNE A,#00H,CCC
DEC R0
INC R1
CJNE R1,#13,XL
CCC: LCALL wdt_dog
MOV DSPLA_ADD9,A
DEC R0
MOV A,@R0
MOV DSPLA_ADD8,A
DEC R0
MOV A,@R0
MOV DSPLA_ADD7,A
DEC R0
MOV A,@R0
MOV DSPLA_ADD6,A
DEC R0
MOV A,@R0
MOV DSPLA_ADD5,A
DEC R0
MOV A,@R0
MOV DSPLA_ADD4,A
DEC R0
MOV A,@R0
MOV DSPLA_ADD3,A
DEC R0
MOV A,@R0
MOV DSPLA_ADD2,A
CLR XS_BZ1
;======================
;判100MHZ
MOV A,#08H
MOV R5,A
MOV R0,#DSPLA_ADD9
EFG: CLR C
MOV A,@R0
SUBB A,#10
JNC ENDF
DEC R0
DJNZ R5,EFG
MOV A,DSPLA_ADD3
ADD A,#10
MOV DSPLA_ADD3,A
MOV DSPLA_ADD1,#32
RET
ENDF: MOV DSPLA_ADD1,#20
RET
;========================================
DODIV: MOV R0,#BZDIG0;被除数低位指针
MOV R1,#BZJSQ0;除数低位指针///非0
MOV R3,#8;字节数
;============
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -