实验三ADDA分析和总结.docxVIP

  • 7
  • 0
  • 约1.9千字
  • 约 3页
  • 2024-07-13 发布于上海
  • 举报

实验三数/模、模/数转换实验无82班王一舟981070

实验三数/模、模/数转换实验

无82班

王一舟

981070

PAGE

PAGE1

【实验三】数/模、模/数转换实验

一、实验目的:

了解数/模、模/数转换的基本原理,掌握ADC0809和DAC0832芯片的使用方法。

二、实验任务:

在实验箱上设计并连接ADC0809芯片的接线,按中断方式(利用EOC发中断申请)对单通道模拟量进行A/D转换。A/D转换结果送入PC机后,再由PC机送至DAC0832进行D/A转换,结果送至双踪示波器,与原信号进行对比观察。

模拟信号源:由电位器中心抽头可以得到一个可调节的直流电压。电位器一端接地,另一端接+5V。

三、实验电路:

四、程序清单:

;ADC.ASM

DATA SEGMENT

MESG3 DBSTART! HEHE!DB0DH,0AH,$

OLD0A DD?DATA ENDS

SSEG SEGMENTPARASTACKSTACKDB256DUP(?)

SSEG ENDS

CODE SEGMENT

ASSUMECS:CODE,DS:DATA,SS:SSEG

BEGINPROCFAR

PUSHDSMOVAX,0PUSHAX

MOVAX,DATAMOVDS,AXCLI

CALLI8259 ;8259初始化

CALLRD0A ;读旧向量

CALLWR0A ;写新向量MOVDX,OFFSETMESG3MOVAH,09H

INT21H

STI ;开中断

MOVDX,230H

MOVAL,0 ;送初值

OUTDX,AL ;激活ADWAIT_IN:

OUTDX,AL

MOVDX,230H ;重新送新值给MOVAL,0 ;230端口,等待

OUTDX,AL ;下一次的输入

QUIT:

MOVAL,20H ;送EOC中断

OUT20H,AL ;结束命令POPAX

POPDSIRET

SERVICEENDP

;I8259PROC

INAL,21H

ANDALOUT21H,AL

INAL,0A1H

ANDALOUT0A1H,AL

RETI8259ENDP

;RD0A PROC

MOVAH,1H ;有键输入INT16H

JZWAIT_IN

EXIT_DOS: ;退出CALLRESET

RETBEGINENDP

;

;以下是中断服务程序,执行ADDA转换功能

SERVICEPROCFAR

PUSHDS

PUSHAX ;保护现场MOVDX,230H ;从230端口读INAL,DX ;模拟量

MOVDX,228H ;将转换结果送OUTDX,AL ;228229端口MOVDX,229H

MOVAX,350AHINT21H

MOVWORDPTROLD0A,BXMOVWORDPTROLD0A+2,ESRET

RD0A ENDP

;WR0A PROC

PUSHDS

MOVDX,OFFSETSERVICEMOVAX,SEGSERVICEMOVDS,AX

MOVAX,250AHINT21H

POPDSRET

WR0A ENDP

;RESETPROC

PUSHDS

MOVDX,WORDPTROLD0AMOVDS,WORDPTROLD0A+2MOVAX,250AH

INT21H

INAL,0A1H

ORALRESETENDP

;CODE ENDS

ENDBEGIN

OUT0A1H,ALPOPDS

RET

五.实验分析:

我决的本次实验特别简单,好象比前两次的简单多了。主要就是8259的中段服务程序中有AD读入和DA读出的部分,然后在主程序和中断程序结束时有一个230H端口的激活语句。所以该实验程序一点也不难,关键在硬件连线,要注意I/O口地址译码器的一个输出端接电路的CS部分,EOC接总线的B4段,输入信号利用电位器发生。另外我还犯了一个极愚蠢的错误:没有接ADC0809的时钟信号,后来一直不知道哪儿错,查了半天也没查出来,急的团团转。在老师的帮助下才知道这个问题。所以做实验不论是容易还是简单,都不能轻视,更不能马虎,稍有没考虑到的错误,就会非常的麻烦。

文档评论(0)

1亿VIP精品文档

相关文档