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

📄 波形采集.asm

📁 透過電腦觀察紅外線和无線波形,有線路圖,自己做
💻 ASM
字号:
	;*************************************
	;STC89C51RC单片机,6M晶振	
	;P0.7为红外输入
	;P0.6为无线电信号输入
	;P0.5为外部信号输入
	;*************************************
	CS	EQU	P0.4	
	A0	EQU	P0.0	
	DX	EQU	P0.2	
	CE	EQU	P0.1	
	GET	EQU	P0.3	
	ORG	0000H
	LJMP	AMIT
	ORG	0030H
AMIT:	MOV	SP,#0FBH
	MOV	P0,#0FFH
	MOV	P1,#0FFH
	MOV	P2,#0FFH
	MOV	P3,#0FFH
	MOV	R0,#08H
	MOV	R7,#68
	MOV	R2,#00H	
	CLR	P0.7
	MOV	TMOD,#01H
	MOV	TL0,#00H
	MOV	TH0,#00H
	CLR	TR0
	;********CH372复位*********
FW:	MOV	A,#05H
	MOV	P2,A
	CLR	CS
	SETB	A0	;写复位命令
	CLR	DX
	NOP
	NOP	;50NS就可以
	SETB	DX
	LCALL	DYL
	;********CH372调整模式**********
	MOV	A,#15H	;调整模式(内置模式)
	ACALL	XML
	MOV	A,#02H
	ACALL	XSJ
	ACALL	DSJ
	;*******************
JSCS:	JB	GET,$
	MOV	A,#22H	;接受中断数据
	ACALL	XML	;调用CH372写命令
	ACALL	DSJ	;调用CH372读数据
	CJNE	A,#01H,G1
	AJMP	OUT1
G1:	CJNE	A,#0F2H,G2
	ACALL	OUT2	;如果CH372返回0F2则读端口2的命令
	AJMP	CHKOF
G2:	CJNE	A,#0F5H,G3
	AJMP	PEND
G3:	CJNE	A,#0F6H,G4
	AJMP	LEEP
G4:	CJNE	A,#0F9H,G5
	ACALL	INO
	AJMP	JSCS
G5:	CJNE	A,#0FAH,JSCS
	ACALL	INO
	AJMP	JSCS
	;*******采集子程序********
CHKOF:	CJNE	A,#0A1H,F1	;捕获输入信号。
	AJMP	TIM
F1:	CJNE	A,#0A2H,F2	;如果收到A2则复位主程序。
	AJMP	AMIT
F2:	CJNE	A,#0A3H,F3	;红外输入。
	AJMP	HWX
F3:	CJNE	A,#0A4H,F4	;无线电信号输入。
	AJMP	WXD
F4:	CJNE	A,#0A5H,JSCS	;外部信号输入。
	SETB	P0.7
	SETB	P0.6
	CLR	P0.5
	MOV	R2,#02H
	AJMP	JSCS
HWX:	SETB	P0.5
	SETB	P0.6
	CLR	P0.7
	MOV	R2,#00H
	AJMP	JSCS
WXD:	SETB	P0.5
	SETB	P0.7
	CLR	P0.6
	MOV	R2,#01H
AML:	AJMP	JSCS
	;***********判断输入端***********
TIM:	CJNE	R2,#0F1H,TI1
	AJMP	WTT
TI1:	CJNE	R2,#0F2H,TI2
	AJMP	UTT
TI2:	CJNE	R2,#0F0H,AML
	;***********数据采集1红外输入************
CT:	JNB	GET,QH_1
	JB	P3.7,CT
	SETB	TR0
THO:	JNB	P3.7,$
	CLR	TR0
	MOV	A,TH0
	MOV	R1,TL0
	MOV	TL0,#01H
	MOV	TH0,#00H
	SETB	TR0
	MOV	@R0,A
	INC	R0
	MOV	A,R1
	MOV	@R0,A
	JB	P3.7,$
	CLR	TR0
	MOV	A,TH0
	MOV	R1,TL0
	MOV	TL0,#01H
	MOV	TH0,#00H
	SETB	TR0
	INC	R0
	MOV	@R0,A
	INC	R0
	MOV	A,R1
	MOV	@R0,A
	INC	R0
	DJNZ	R7,THO
	CLR	TR0
	AJMP	FZCX
QH_1:	AJMP	JSCS
	;***********数据采集2无线输入************
WTT:	JNB	GET,QH_2
	JB	P3.6,WTT
	SETB	TR0
THA:	JNB	P3.6,$
	CLR	TR0
	MOV	A,TH0
	MOV	R1,TL0
	MOV	TL0,#01H
	MOV	TH0,#00H
	SETB	TR0
	MOV	@R0,A
	INC	R0
	MOV	A,R1
	MOV	@R0,A
	JB	P3.6,$
	CLR	TR0
	MOV	A,TH0
	MOV	R1,TL0
	MOV	TL0,#01H
	MOV	TH0,#00H
	SETB	TR0
	INC	R0
	MOV	@R0,A
	INC	R0
	MOV	A,R1
	MOV	@R0,A
	INC	R0
	DJNZ	R7,THA
	CLR	TR0
	AJMP	FZCX
QH_2:	AJMP	JSCS
	;************数据采集3外部输入************
UTT:	JNB	GET,QH_2
	JB	P3.5,UTT
	SETB	TR0
THB:	JNB	P3.5,$
	CLR	TR0
	MOV	A,TH0
	MOV	R1,TL0
	MOV	TL0,#01H
	MOV	TH0,#00H
	SETB	TR0
	MOV	@R0,A
	INC	R0
	MOV	A,R1
	MOV	@R0,A
	JB	P3.5,$
	CLR	TR0
	MOV	A,TH0
	MOV	R1,TL0
	MOV	TL0,#01H
	MOV	TH0,#00H
	SETB	TR0
	INC	R0
	MOV	@R0,A
	INC	R0
	MOV	A,R1
	MOV	@R0,A
	INC	R0
	DJNZ	R7,THB
	CLR	TR0
	;*************数据发送***********
FZCX:	MOV	R7,#122
	MOV	R0,#08H
ZDDS:	MOV	A,#2AH	;CH372中断命令通知PC机
	ACALL	XML
	NOP
	NOP
	MOV	A,#02H	;可输入8个字节
	ACALL	XSJ
	MOV	A,@R0	;送入要上传的数据
	ACALL	XSJ
	INC	R0
	MOV	A,@R0	;送入要上传的数据
	ACALL	XSJ
	INC	R0
	ACALL	FYL
	MOV	A,#22H	;接受中断数据
	ACALL	XML
	ACALL	DSJ
	ACALL	FYL
	ACALL	INO
	DJNZ	R7,ZDDS
	MOV	R0,#08H
	MOV	R7,#61
	AJMP	JSCS
	;********CH372读出数据**********
OUT2:	MOV	A,#28H	;读端口2的命令
	ACALL	XML
	ACALL	DSJ
	NOP
	ACALL	DSJ
	NOP
	RET
	;****************
OUT1:	NOP
PEND:	NOP
LEEP:	NOP
	AJMP	AMIT
	;******释放缓冲区子程序*****
INO:	MOV	A,#2BH	;释放当前USB	缓冲区
	ACALL	XML
	NOP
	NOP
	RET
	;*******写命令子程序*******
XML:	MOV	P2,A
	CLR	CS
	SETB	A0	
	CLR	DX
	NOP
	NOP	;500NS就可以
	SETB	DX
	RET
	;*******写入数据子程序*******
XSJ:	CLR	A0	;写入数据
	NOP
	NOP	;延时2US,根据主频来确定NOP的值
	MOV	P2,A
	NOP
	NOP	;50NS就可以
	SETB	DX
	NOP
	NOP	;延时1.2US根据主频调整
	RET
	;********读出数据子程序*********
DSJ:	MOV	P2,#0FFH
	CLR	A0	;读出数据
	NOP
	NOP	;延时50NS就可以了
	MOV	A,P2
	SETB	CE
	RET
	;*********延时子程序******
DYL:	MOV	R6,#100
D1:	MOV	R5,#50
	DJNZ	R5,$
	DJNZ	R6,D1
	RET
FYL:	MOV	R6,#2
FD1:	MOV	R5,#68
	DJNZ	R5,$
	DJNZ	R6,FD1
	RET
	END

⌨️ 快捷键说明

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