⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 简易信号测量仪(程序).txt

📁 这个是在参加电子设计大赛时的作品
💻 TXT
📖 第 1 页 / 共 2 页
字号:
JS_A1	DATA	30H		;计算用数据A
JS_A2	DATA	31H	
JS_A3	DATA	32H	
JS_A4	DATA	33H	 
JS_A5	DATA	34H	
JS_A6	DATA	35H	
JS_A7	DATA	36H	
JS_A8	DATA	37H	
;------------------
JS_B1	DATA	38H		;计算用数据B
JS_B2	DATA	39H	
JS_B3	DATA	3AH	
JS_B4	DATA	3BH	
;------------------
JS_C1	DATA	3CH		;计算用数据C
JS_C2	DATA	3DH
JS_C3	DATA	3EH
JS_C4	DATA	3FH
JS_C5	DATA	40H
JS_C6	DATA	41H
JS_C7	DATA	42H
JS_C8	DATA	43H
;------------------
DINSI	DATA	44H
;------------------		;显存设置
DT_A1	DATA	45H
DT_A2	DATA	46H
DT_A3	DATA	47H
DT_A4	DATA	48H
DT_A5	DATA	49H
DT_A6	DATA	4AH
DT_A7	DATA	4BH
DT_B1	DATA	4CH
DT_B2	DATA	4DH
DT_B3	DATA	4EH
DT_B4	DATA	4FH
DT_B5	DATA	50H
DT_B6	DATA	51H
DT_B7	DATA	52H
DT_B8	DATA	53H
DT_B9	DATA	54H
DT_C1	DATA	55H
DT_C2	DATA	56H
DT_C3	DATA	57H
DT_C4	DATA	58H
DT_C5	DATA	59H
DT_C6	DATA	5AH
DT_C7	DATA	5BH
DT_C8	DATA	5CH
DT_D1	DATA	5DH
DT_D2	DATA	5EH
DT_D3	DATA	5FH
DT_D4	DATA	60H
DT_D5	DATA	61H
DT_D6	DATA	62H
DT_D7	DATA	63H
DT_D8	DATA	64H
;--------------------
F_D1	DATA	65H
F_D2	DATA	66H
T_D1	DATA	67H
T_D2	DATA	68H
T_D3	DATA	69H
D_D2	DATA	6AH
W_D1	DATA	6BH
W_D2	DATA	6CH
W_D3	DATA	6DH

D_D1	DATA	6FH
VPP_D1	DATA	70H 
VPP_D2	DATA	71H
F_D3	DATA	72H

X_D1	DATA	74H
X_D2	DATA	75H
X_D3	DATA	76H

;	SP	79H
;-------------------
OVER	EQU	20H	;溢出标志
ZXB	EQU	21H
FB	EQU	22H
;------------------
OVE	BIT	P0.0	;管脚定义
CLER	BIT	P0.1
CS_AD	BIT	P0.2
ZXB_D	BIT	P0.2
IO	BIT	P0.3
CLK	BIT	P0.4
RS	BIT	P0.5
FB_D	BIT	P0.6
E	BIT	P0.7
DD	EQU	P1
PX	EQU	P1
D0	BIT	P1.0
D1	BIT	P1.1
D2	BIT	P1.2
D3	BIT	P1.3
D4	BIT	P1.4	
D5	BIT	P1.5
D6	BIT	P1.6
D7	BIT	P1.7
A12	BIT	P2.0
A11	BIT	P2.1
A2	BIT	P2.2
B2	BIT	P2.3
R11	BIT	P2.4
A34	BIT	P2.5
A1	BIT	P2.6
B1	BIT	P2.7
GATE10	BIT	P3.0
A81	BIT	P3.1
GATE2	BIT	P3.2
A80	BIT	P3.3
OUT2	BIT	P3.4
CS_	BIT	P3.5
RD_	BIT	P3.6
WR_	BIT	P3.7
;=============================================================================================
	ORG	0000H
	AJMP	START
	ORG	000BH 
	LJMP	INTT0  
	ORG	001BH
	AJMP	INTT1
	ORG	0030H
START:	LCALL	INIT	;初始化
	JMP	MAIN
;--------------------
INIT:	MOV	SP,#079H
	MOV	A,#00H	;清内存单元
	MOV	R0,#4CH	;开发、始单元
CL1:	MOV	@R0,A
	INC	R0
	CJNE	R0,#72H,CL1;结束单元
	MOV	P0,#0FFH
	MOV	P1,#0FFH
	MOV	P2,#0FFH
	MOV	P3,#0FFH
	CLR	GATE10	
	MOV 	P1,#01H ;清除屏幕
	ACALL 	ENABLE 
	MOV 	P1,#38H ;8位点阵
	ACALL 	ENABLE 
	MOV 	P1,#0FH ;开显示
	ACALL 	ENABLE 
	MOV 	P1,#06H ;移动光标
	ACALL 	ENABLE 
	MOV	TMOD,#1DH;
	MOV	TH1,#03CH
	MOV	TL1,#0B0H
	MOV	TL0,#0
	MOV	TH0,#0
	CLR	EA
	CLR	OVER
	MOV	DINSI,#22	;定时时间=22*50MS=1.1S
	RET
;========================================================================================================================
MAIN:	
CLR	A11
JMP	BOXIN
		LCALL	BOXIN	;波形识别
	LCALL	GET_F	;频率、周期测量
	JB	ZXB,AIN1	
	LCALL	GET_W	;脉宽、占空比的测量
	JMP	AIN2
AIN1:	LCALL	GET_X	;相位的测量
	LCALL	GET_VPP	;峰峰值的测量
AIN2:	LCALL	XIANSHI	;数据显示
	JMP	MAIN	
;====================波形识别
BOXIN:	MOV	TMOD,#1DH
	SETB	EA
	SETB	ET1
	SETB	TR1
	CLR	OVER
BOXIN1:	JB	A11,BOXIN2
	JNB	OVER,BOXIN1
	CLR	ZXB
	CLR	FB
	LCALL	ZS_BX
	JNB	A11,$
BOXIN2:	CLR	TR1	;关定时并置初值
	CLR	ET1
	CLR	EA
	MOV	TH1,#03CH
	MOV	TL1,#0B0H
	MOV	DINSI,#22
	JNB	A11,$
	JB	A11,$
	MOV	TMOD,#1DH
	SETB	EA
	SETB	ET1
	SETB	TR1
	CLR	OVER
BOXIN3:	JB	A11,BOXIN4
	JB	A12,BOXIN5
	JNB	OVER,BOXIN3
	JMP	BOXIN
BOXIN4:	SETB	FB
	CLR	ZXB
	JMP	BOXIN6
BOXIN5:	SETB	ZXB
	CLR	FB
BOXIN6:	CLR	TR1		;关定时并置初值
	CLR	ET1
	CLR	EA
	MOV	TH1,#03CH
	MOV	TL1,#0B0H
	MOV	DINSI,#22
	LCALL	ZS_BX
	RET
;=========================频率、周期测量
GET_F:	LCALL	GET_FF		;计数法测频
	LCALL	BIJIAO100	
	JNC	GET_F1
	LCALL	GET_FT		;测T法测频
GET_F1:	RET
;-------------------------计数法测频
GET_FF:	CLR	B2	;
	CLR	A2	
	CLR	B1
	CLR	A1
	LCALL	OUT_1S
	LCALL	GET_JS
	MOV	F_D3,R0
	MOV	F_D2,TH0
	MOV	F_D1,TL0
	LCALL	WORK_T
	LCALL	DIS_FFT		;频率和周期放入显存
	RET
;--------------------------测T法测频
GET_FT:	SETB	A2	;
	CLR	B2
	SETB	A1
	CLR	B1
	LCALL	OUT_4US	
	LCALL	GET_JS
	LCALL	JS_DIV4	;计数值乘以4
	MOV	T_D3,R0
	MOV	T_D2,TH0
	MOV	T_D1,TL0
	LCALL	WORK_F
	LCALL	DIS_TFT
	RET
;===========================
BIJIAO100:MOV	JS_A4,#0	;测得频率是否大于或等于100Hz,返回C
	MOV	JS_A3,F_D3	
	MOV	JS_A2,F_D2	
	MOV	JS_A1,F_D1	
	MOV	JS_B4,#0	
	MOV	JS_B3,#0	
	MOV	JS_B2,#0	
	MOV	JS_B1,#100
	LCALL	JIANFA
	RET	
;=========================脉宽、占空比的测量
GET_W:	LCALL	GET_WA	;
	LCALL	DIS_WD 
	MOV	A,DT_D4
	SUBB	A,#5
	JNC	GET_W1
	LCALL	GET_WB
	LCALL	DIS_WD	;脉宽和占空比放入显存
GET_W1:	RET
;--------------------
GET_WA:	SETB	A2
	CLR	B2
	CLR	A1
	SETB	B1
	LCALL	OUT_4US
	LCALL	GET_JS
	MOV	W_D3,R0
	MOV	W_D2,TH0
	MOV	W_D1,TL0
	LCALL	W_DIV4
	LCALL	WORK_D 
	RET
;========================
GET_WB:	SETB	A2
	CLR	B2
	SETB	A1
	SETB	B1
	LCALL	OUT_4US
	LCALL	GET_JS
	LCALL	JS_DIV4
	LCALL	T_JS
	MOV	W_D3,R0
	MOV	W_D2,TH0
	MOV	W_D1,TL0
	LCALL	WORK_D 
	RET
;=======================
GET_JS:	SETB	GATE10
	MOV	TMOD,#1DH
	SETB	EA
	SETB	ET0
	CLR	TR0
	MOV	R0,#0
	MOV	TH0,#0
	MOV	TL0,#0
	SETB	R11
	CLR	R11
	JB	GATE2,$
	SETB	TR0
	JNB	GATE2,$
	JB	GATE2,$
	CLR	TR0
	CLR	ET0
	CLR	EA
	CLR	GATE10
	RET		
;======================峰峰值的测量
GET_VPP:SETB	CLER 
	MOV	R2,#100
	DJNZ	R2,$
	CLR	CLER
	CLR	CLER
	JB	OVE,$
	SETB	CS_AD
	CLR	CLK
	NOP
	NOP
	CLR	CS_AD
	NOP
	SETB	IO
	CLR	CLK
	NOP
	NOP
	SETB	CLK
	NOP
	NOP
	SETB	IO
	CLR	CLK
	NOP
	NOP
	SETB	CLK
	NOP
	NOP
	SETB	IO
	CLR	CLK
	NOP
	NOP
	SETB	CLK
	NOP
	NOP
	CLR	CLK
	SETB	IO
	MOV	R1,#8
GET1:	SETB	CLK
	NOP
	NOP	
	CLR	CLK
	NOP
	NOP
	MOV	C,IO
	RLC	A
	DJNZ	R1,GET1
	SETB	CS_AD
	MOV	VPP_D2,#0	;置入显示数高位
	MOV	VPP_D1,A	;置入显示数低位
	LCALL	VPP_DIV2
	LCALL	DIS_VPP
	LCALL	ZS_BX
	RET		
;=======================相位的测量
GET_X:	SETB	B2
	CLR	A2
	SETB	B1
	CLR	A1
	LCALL	OUT_4US
	LCALL	GET_JS
	LCALL	JS_DIV4
	LCALL	WORK_X
	LCALL	DIS_X
	LCALL	DIS_JX	;显示极性
	RET	
;========================
T_JS:	MOV	JS_A4,#0	;
	MOV	JS_A3,T_D3	
	MOV	JS_A2,T_D2
	MOV	JS_A1,T_D1
	MOV	JS_B4,#0
	MOV	JS_B3,R0
	MOV	JS_B2,TH0
	MOV	JS_B1,TL0
	LCALL	JIANFA
	MOV	R0,JS_A3
	MOV	TH0,JS_A2
	MOV	TL0,JS_A1
	RET	
;================================
WORK_T:	MOV	JS_A4,#00H	;1000000(F 42 40)/F=T
	MOV	JS_A3,#0FH		
	MOV	JS_A2,#42H
	MOV	JS_A1,#40H
	MOV	JS_B4,#00H
	MOV	JS_B3,F_D3
	MOV	JS_B2,F_D2
	MOV	JS_B1,F_D1
	LCALL	CHUFA
	MOV	T_D3,JS_A3
	MOV	T_D2,JS_A2
	MOV	T_D1,JS_A1
	RET	
;============================
WORK_F:	MOV	JS_A4,#3BH	;1000000000(3B 9A CA 00)/T=F(mHz)
	MOV	JS_A3,#9AH		
	MOV	JS_A2,#0CAH
	MOV	JS_A1,#00H
	MOV	JS_B4,#00H
	MOV	JS_B3,T_D3
	MOV	JS_B2,T_D2
	MOV	JS_B1,T_D1
	LCALL	CHUFA
	MOV	F_D3,JS_A3
	MOV	F_D2,JS_A2
	MOV	F_D1,JS_A1
	RET	
;==============================
WORK_D:	MOV	JS_A4,#00H	;W*1000/T=D	
	MOV	JS_A3,W_D3	
	MOV	JS_A2,W_D2
	MOV	JS_A1,W_D1
	MOV	JS_B4,#0
	MOV	JS_B3,#0
	MOV	JS_B2,#03H
	MOV	JS_B1,#0E8H
	LCALL	CHENFA
	MOV	JS_B4,#00H
	MOV	JS_B3,T_D3
	MOV	JS_B2,T_D2
	MOV	JS_B1,T_D1
	LCALL	CHUFA
	MOV	D_D2,JS_A2
	MOV	D_D1,JS_A1
	RET
;===========================
WORK_X:	MOV	JS_A4,#00H	;计数值*360/T=相位	
	MOV	JS_A3,R0
	MOV	JS_A2,TH0
	MOV	JS_A1,TL0
	MOV	JS_B4,#0
	MOV	JS_B3,#0
	MOV	JS_B2,#01H
	MOV	JS_B1,#68H
	LCALL	CHENFA
	MOV	JS_B4,#00H
	MOV	JS_B3,T_D3
	MOV	JS_B2,T_D2
	MOV	JS_B1,T_D1
	LCALL	CHUFA
	MOV	X_D3,JS_A3
	MOV	X_D2,JS_A2
	MOV	X_D1,JS_A1
	RET	
;===========================
DIS_FFT:MOV	JS_A4,#00H	;要转换的数
	MOV	JS_A3,F_D3	
	MOV	JS_A2,F_D2	
	MOV	JS_A1,F_D1
	MOV	JS_B4,#0	;除以10
	MOV	JS_B3,#0
	MOV	JS_B2,#0
	MOV	JS_B1,#10
	MOV	R2,#5		;要转换出来的位数
	MOV	R1,#DT_A5	;转换后存放的第一个显存地址
DIS_FFT1:LCALL	CHUFA
	MOV	@R1,JS_C1
	DEC	R1
	DJNZ	R2,DIS_FFT1
	MOV	DT_A6,#14	;H
	MOV	DT_A7,#21	;z

	MOV	JS_A4,#00H	;要转换的数
	MOV	JS_A3,T_D3	
	MOV	JS_A2,T_D2	
	MOV	JS_A1,T_D1
	MOV	JS_B4,#0	;除以10
	MOV	JS_B3,#0
	MOV	JS_B2,#0
	MOV	JS_B1,#10
	MOV	R2,#7		;要转换出来的位数
	MOV	R1,#DT_B7	;转换后存放的第一个显存地址
DIS_FFT2:LCALL	CHUFA
	MOV	@R1,JS_C1	
	DEC	R1
	DJNZ	R2,DIS_FFT2
	MOV	DT_B8,#26	;u
	MOV	DT_B9,#17	;S
	RET
;===========================
DIS_TFT:MOV	JS_A4,#00H	;要转换的数
	MOV	JS_A3,F_D3	
	MOV	JS_A2,F_D2	
	MOV	JS_A1,F_D1
	MOV	JS_B4,#0	;除以10
	MOV	JS_B3,#0
	MOV	JS_B2,#0
	MOV	JS_B1,#10
	LCALL	CHUFA
	LCALL	CHUFA
	MOV	DT_A7,#21	;z
	MOV	DT_A6,#14	;H
	MOV	DT_A5,JS_C1
	LCALL	CHUFA
	MOV	DT_A4,JS_C1
	MOV	DT_A3,#10
	LCALL	CHUFA
	MOV	DT_A2,JS_C1
	LCALL	CHUFA
	MOV	DT_A1,JS_C1
	
	
	
	
	
	MOV	JS_A4,#00H	;要转换的数
	MOV	JS_A3,T_D3	
	MOV	JS_A2,T_D2	
	MOV	JS_A1,T_D1
	MOV	JS_B4,#0	;除以10
	MOV	JS_B3,#0
	MOV	JS_B2,#0
	MOV	JS_B1,#10
	MOV	R2,#7		;要转换出来的位数

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -