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

📄 波形采集.asm

📁 该程序是一个基本8051单片机和0809模数转换芯片的数据采集系统
💻 ASM
字号:


	ORG	0000H
	LJMP	START
	ORG	0003H	;中断INT0入口
	LJMP	INT0
        ORG	0023H
	LJMP	RECE

 START: SETB    P3.5            ;上电后指示灯亮
        MOV	IE,#90H	        ;EA=1,ES=1,CPU开串行中断
	MOV	SCON,#50H	;设置串行口方式1,允许串行接收
        MOV	TMOD,#20H	;设置定时器T1为方式2
	MOV	TH1,#0FDH	;设置波特率为9600b/s
	MOV	TL1,#0FDH
        MOV     R6,#00H
	SETB	TR1	        ;定时器T1启动

WAIT1:	NOP                     ;判断R6=01H,则顺序执行采集程序,否则循环等待
        CJNE    R6,#01H,WAIT1
        LJMP	CAIJI


RECE:   CLR	EA
	PUSH	A
	MOV	A,SBUF	        ;接收到一个数据
	CLR	RI
	CJNE	A,#43H,OUT1	;是否收到传送数据信号"C"
        CLR     P3.5            ;收到"C"就闪烁两次
        LCALL	D200ms
        LCALL	D200ms
        SETB	P3.5
        LCALL	D200ms
        LCALL	D200ms
        CLR     P3.5
        LCALL	D200ms
        LCALL	D200ms
        SETB	P3.5
        LCALL	D200ms
        LCALL	D200ms
        MOV     R6,#01H         ;收到"C"将R6置1,跳出中断,进入采集程序
        LJMP    OUT

OUT1:   CJNE    A,#53H,OUT
        CLR     P3.5             ;收到"S"就闪烁一次,
        LCALL	D200ms
        LCALL	D200ms
        SETB	P3.5
        LCALL	D200ms
        LCALL	D200ms
        LCALL   SEND            ;调用发送32K外部存储器数据子程序

 OUT:	POP	A
	SETB	EA              ;开中断
	RETI

CAIJI:	MOV	DPTR,#0000H	;DPTR=0,偶数地址存0路数据,奇数地址存1路数据
	MOV	TCON,#01H	;IT0=1,边沿触发方式,负跳变
	MOV	R2,#00H
        MOV     R7,#00H
	CLR	P3.5
	LCALL	D200ms
	SETB	P3.5
	LCALL	D200ms

	CLR	P2.0	;ST=0
	CLR	P3.4	;OE=0
        CLR     P2.2	;ALE=0
	CLR	P2.7	;片选

	CLR	P3.3	;选通0路,,输入电压
	CLR	P3.5
	CLR	P2.1
        MOV     R2,#01H
	SETB	P2.2	;锁存0路
	CLR	P2.2

	SETB	P2.0	;ADC0809输出端清零
	CLR	P2.0	;启动A/D转换

	MOV	IE,#81H	;开中断INT0,EA=1,EX0=1

WAIT:	NOP		;等待中断
        CJNE   R7,#00H,TRAN
	LJMP	WAIT

INT0:   CLR     EA
        SETB	P3.4	;输出使能有效
        MOV	P1,#0FFH
        NOP
        NOP

      	MOV	A,P1
	MOVX	@DPTR,A	;数据转存
	CLR	P3.4	;关闭输出

	MOV	A,DPH	;判断是否存满
	CJNE	A,#7FH,ST
	MOV	A,DPL
	CJNE	A,#0FFH,ST
        MOV     R7,#0FFH
        LJMP    SHAN


ST:	INC	DPTR

Zero:	CJNE	R2,#00H,First
	CLR	P3.3	;选通0路,电压正半波
	CLR	P3.5
	CLR	P2.1
	SETB	P2.2	;通路地址锁存
	CLR	P2.2
        MOV	R2,#01H
        LJMP    NEXT

First:  CJNE	R2,#01H,Second
        SETB	P3.3	;选通1路,电压负半波
	CLR	P3.5
	CLR	P2.1
	SETB	P2.2	;通路地址锁存
	CLR	P2.2
        MOV	R2,#02H
        LJMP    NEXT

Second:	CJNE	R2,#02H,Third
	CLR	P3.3	;选通4路,电流正半波
	CLR	P3.5
	SETB	P2.1
	SETB	P2.2	;通路地址锁存
	CLR	P2.2
        MOV	R2,#03H
        LJMP	NEXT

Third:
	SETB	P3.3	;选通5路,电流负半波
	CLR	P3.5
	SETB	P2.1
	SETB	P2.2	;通路地址锁存
	CLR	P2.2
        MOV	R2,#00H

NEXT:
	SETB	P2.0	;ADC0809再次采集
	CLR	P2.0
        SETB    EA
SHAN:   NOP
	RETI

TRAN:   SETB    P3.5
        LCALL   D200ms
        CLR     P3.5
        LCALL	D200ms
        SETB	P3.5
        LJMP    START

 ;发送1字节子程序

 SEND1: CLR   ES
        MOV   SBUF,A
        JNB   TI,$
        CLR   TI
        SETB  ES
        RET

  ;发送32K外部存储器数据子程序
 SEND:  MOV    DPTR,#0000H         ;首地址
  S1:   MOVX   A,@DPTR
        LCALL  SEND1               ;调发送1字节子程序
        MOV   R2,DPH                ;判断是否传完
        CJNE  R2,#07FH, NEXT1
        MOV   R3,DPL
        CJNE  R3,#0FFH,NEXT1
        CLR   P3.5                 ;发送完灯熄灭
        LJMP  OVER

 NEXT1: INC    DPTR
        LJMP    S1
 OVER:  RET

D200ms:	MOV	R0,#0C4H	           ;延时200ms
   DL2:	MOV	R1,#0FFH
   DL1:	NOP
	NOP
	NOP
	DJNZ	R1,DL1
	DJNZ	R0,DL2
	RET

	END















⌨️ 快捷键说明

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