微机接口课后答案 - 图文(9)

2019-08-03 14:25

设下限为1.2V,上限为4V,端口地址为300H 产生锯齿波的程序如下: BEGIN:MOV AL,3CH MOV DX,300H AGAIN:INC AL

OUT DX,AL ;D/A转换 CALL DELAY CMP AL,0CDH JNZ AGAIN JMP BEGIN

5. (1)画出DAC1210与8位数据总线的微处理器的硬件连接图,若待转换的12位数字是 存在BUFF开始的单元中,试编写完成一次D/A转换的程序。

(2)将DAC1210与具有16位数据总线的8086相连,其余条件同(1),画出该硬件连 线和编写D/A转换程序。 答:(1)

START:MOV DX,220H ;指向220H端口 MOV CL,4 ;移位次数

MOV BX,BUFF ;取要转换的数据

SHL BX,CL ;BX中数左移4次后向左对齐 MOV AL,BH ;取高8位

OUT DX,AL ;写入8位输入寄存器 INC DX ;口地址为221H MOV AL,BL ;取低4位

OUT DX,AL ;写入4位输入寄存器 INC DX ;口地址为222H

OUT DX,AL ;启动D/A转换,AL中可为任意值 (2)

D11D10D9D8D7D6D5D4D3D2D1D0

START:MOV DX,220H ;指向220H端口 MOV AX,BUFF ;取要转换的数据 OUT DX,AX ;写入8位输入寄存器 INC DX

INC DX ;口地址为222H

OUT DX,AL ;启动D/A转换,AL中可为任意值

6. 利用8255A和ADC0809等芯片设计PC机上的A/D转换卡,设8255A的口地址为3C0H~ 3C3H,要求对8个通道各采集1个数据,存放到数据段中以D_BUF为始址的缓冲器中, 试完成以下工作:

(1)画出硬件连接图。

(2)编写完成上述功能的程序。 答:(1)

(2)AD_SUB PROC NEAR

MOV CX,8 ;CX作数据计数器

MOV BL,00H ;模拟通道号存在BL中 LEA DI,D_BUF ;缓冲区

NEXT_IN: MOV DX,3C2H ;8255A端口C地址 MOV AL,BL

OUT DX,AL ;输出通道号 MOV DX,3C3H ;指向控制口 MOV AL,00000111B ;PC3置1 OUT DX,AL ;送出开始启动信号 NOP ;延时 NOP NOP

MOV AL,00000110B ;PC3复位 OUT DX,AL ;送出结束启动信号 MOV DX,3C2H ;C口

NO_CONV: IN AL,DX ;读入C口内容 TEST AL,80H ;PC7,EOC信号

JNZ NO_CONV ;PC7=1,未开始转换,等待 NO_EOC: IN AL,DX ;PC7=0,已启动转换 TEST AL,80H ;再查PC7

JZ NO_EOC ;PC7=0,转换未结束,等待

MOV DX,3C0H ;PC7=1,转换结束,DX指向A口 IN AL,DX ;读入数据

MOV [DI],AL ;存入缓冲区 INC DI

INC BL ;指向下个通道 LOOP NEXT_IN

RET

AD_SUB ENDP

7. 试利用ADC0809,8253和8259A等芯片设计8通道A/D转换电路。系统中用8253作定 时器,采用中断方式控制采样率,采样率为500Hz。设8253的通道0输入时钟脉冲为2MHz, 输出端OUT0接8259A的IR2,8253的口地址为300H~303H,8259A的口地址为304H和 305H,ADC0809的8个输入通道的口地址为308H~30FH,查询EOC信号和状态口地址为 306H,ADC0809的输入时钟频率为640KHz,A/D转换的结果依次存入数据段中以BUFFER 为始址的内存中,从通道0开始先存入各通道的第一个数据,再存放第二个数据,采集10 秒钟后停止工作。要求:

(1)画出硬件连线图,可以不画具体的译码电路。

(2)编写8253,8259A(只需写入中断屏蔽字)的初始化程序及采集8路模拟信号的中断 服务程序。 答:(1)

(2)因为8253的时钟输入频率为2MHz,而要求的采样频率f=500Hz,即用8253定时, 每隔2ms中断一次,因此8253的分频次数(时间常数)N=2MHz/500Hz=4000。 采集10秒钟,共采集10s/2ms=5000次,即8253中断次数为5000次。 DATA SEGMENT

BUFFER DB 8*5000 DUP(?) DATA ENDS

;数据采集子程序

8253初始化编程,通道0,方式2,先写低字节,后高字节,BCD计数,时间常数4000 MOV DX,303H

MOV AL,00110101B OUT DX,AL

MOV DX,300H ;通道0 MOV AX,4000H ;时间常数 OUT DX,AL MOV AL,AH OUT DX,AL

;8259A设置屏蔽字,仅允许8259A的IR2和键盘中断,其余禁止 MOV AL,11111001B ;屏蔽字 MOV DX,305H

OUT DX,AL ;向屏蔽寄存器输出屏蔽字

;设置数据缓冲区始址到SI中,计数初值到BX中,等待中断,每通道采完5000次后结束 中断

MOV SI,OFFSET BUFFER ;SI指向数据缓冲区 MOV BX,5000 STI ;开中断

AGAIN:CMP BX,0 JNZ AGAIN

MOV AL,11111101B ;采集完,禁止IR2中断 MOV DX,305H OUT DX,AL

MOV AH,4CH ;退出中断

INT 21H ;中断服务程序,对每个通道均采集一个数据,存入BUFFER ADINT PROC NEAR

MOV CX,0008H ;设置通道计数器初值 MOV DX,308H ;DX指向ADC通道0 NEXT:OUT DX,AL ;启动一次转换 PUSH DX ;保存通道号

MOV DX,306H ;DX指向状态口 POLL:IN AL,DX ;读入EOC状态

TEST AL,80H ;EOC(D7)=0?即开始转换了 JNZ POLL ;非0,循环等待

NO_END:IN AL,DX ;EOC=0,开始转换 TEST AL,80H ;再查EOC是否为1 JZ NO_END ;EOC=0,等待转换结束 POP DX ;EOC=1,恢复通道地址 IN AL,DX ;读取结果

MOV [SI],AL ;存储到缓冲区 INC DX ;DX指向下一个通道

INC SI ;地址指针指向下一个缓冲单元

LOOP NEXT ;通道计数器减1,结果非0则循环 DEC BX ;为0,缓冲数据计数器减1 MOV AL,20H MOV DX,304H OUT DX,AL STI ;开中断 IRET

ADINT ENDP

8. 利用8255A和AD574A设计数据采集系统,输入模拟电压为0~+10V,若每秒采集100 个数据,转换后的数据字存放在W_BUF开始的缓冲器中,低字节在前,高字节在后,采满 16K字节的数据后停止工作,要求: (1)画出硬件连线图。

(2)编写启动AD574A工作和读取转换结果的子程序。 答:(1)


微机接口课后答案 - 图文(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人防地下室施工方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: