微机原理黄冰版--作业答案(9)

2019-08-02 00:23

11.若8251A的收、发时钟(RxC、TxC)频率为38.4KHz,它的RTS和CTS引脚相连,试完成以下要求的初始化程序设计:

(1)半双工异步传送,每个字符的数据位数为7,停止位数为1,偶校验,波持率为600位/秒,处于发送状态。

(2)半双工同步通信,每个字符的数据位数为8,无校验位,双同步字符,内同步方式,同步字符采用ASCII码的同步控制符SYN(16H),处于接收状态(同时使DTR有效).8251A的口地址为02C0H和02C1H。

12.若两台计算机利用8251A进行串行通信,半双工方式,如图8.78所示。通信规程如下:异步传送,波特率为600,每个字符的数据位数为7,1位停止位,偶校验。试完成以下程序设计:

(1)发送程序:将数据段中以TBUF为起站地址的一组ASCII字符码发送给对方,字符串的长度存在字节变量TLEN中。发送时,先发一个起始符SOH(01H),发送完全部数据字符之后,再发送两个结束符EOT(04H)作为发送结束标志。

(2)接收程序:将接收到的一组ASCII字符存放于从RBUF开始的接收缓冲区中,所收到的字符长度存在于字节变量RLEN中,只统计数据字符数。若接收正确,将字节变量ERROR置为00H,否则置为FFH。

解:查询方式传送

图8.78

(1)发送程序:控制口地址:TCONT;数据口地址:TDATA

STT: MOV DX,TCONT ;方式选择控制字:将825lA定义为异步方式,8位数据, MOV AL,7AH ;l位停止位,偶校验,波特率系数16 OUT DX,AL

MOV AL,0lH ;操作命令控制字:允许发送 OUT DX,AL ; 传送起始符

NEXT1: MOV DX,TCONT ;状态字:读取状态字 IN AL,DX

AND AL,0lH ;TxRDY有效否?

JZ NEXT1 ;无效,继续等待

MOV DX,TDATA ;有效,向8251A输出起始符SOH(01H) MOV AL,01H

41

OUT DX,AL

; 传送数据

MOV DI,TBUF ;发送数据块首地址送DI MOV CH,0

MOV CL,TLEN ;计数器赋初值

NEXT2:MOV DX,TCONT ;状态字:读取状态字 IN AL,DX

AND AL,0lH ;TxRDY有效否?

JZ NEXT ;无效,继续等待 MOV DX,TDATA ;有效,向8251A输出一字节数据 MOV AL,[DI] OUT DX,AL

INC DI ;修改指针 LOOP NEXT2

; 传送两个结束符

MOV CX,2 ;计数器赋初值

NEXT3:MOV DX,TCONT ;状态字:读取状态字 IN AL,DX

AND AL,0lH ;TxRDY有效否? JZ NEXT ;无效,继续等待

MOV DX,TDATA ;有效,向8251A输出结束符EOT(04H) MOV AL, 04H OUT DX,AL LOOP NEXT3

HLT

(2)接收程序:控制口地址:RCONT;数据口地址:RDATA;不检测结束符

SRR: MOV DX,RCONT ;方式选择控制字:送方式选择控制字 MOV AL,7AH OUT DX,AL

MOV AL,14H ;操作命令控制字:清除错误标志,允许接收

OUT DX,AL ;接收起始符

COMT:MOV DX,RCONT ;状态字:读取状态字 IN AL,DX

TEST AL,02H ;RxRDY有效否? JZ COMT ;无效,继续等待

MOV DX,RDATA ;无错,输入一字节数据

IN AL, DX

MOV DI,RBUF ;接收数据缓冲区首地址送DI MOV CX,TLEN ;计数器赋初值:发送数据个数

MOV RLEN,0 ;正确接收数据个数 ;接收数据

COMT:MOV DX,RCONT ;状态字:读取状态字 IN AL,DX

TEST AL,02H ;RxRDY有效否? JZ COMT ;无效,继续等待

42

AND AL,38H ;有效,查询接收过程有无错误?

JNZ ERR ;有错,转出错处理程序 ADD RLEN,1 ;无错,接收正确个数加1

ERR:MOV DX,RDATA ;无错,输入一字节数据 IN AL, DX MOV [DI],AL

INC DI ;修改指针

LOOP COMT

CMP RLEN,TLEN JZ OK

MOV ERROR,0FFH JMP EXIT

OK:MOV ERROR,0 EXIT:HLT

13.利用单缓冲接法的DAC0832产生正向三角波,设三角波的频率为10Hz,一个周期由200个点组成,试编程。(延时可调用延时子程序)

解:

SUB3: MOV MOV LOP1: OUT CALL

LOP2:

DX,PORTA;

AL,00H; DX,AL;

DELAY;延时0.1/200=0.0005s

INC AL; CMP AL,100; JE LOP2; JMP LOP1; OUT DX,AL; CALL DEC

DELAY; AL;

CMP AL,00H; JE LOP1; JMP LOP2; RET;

43

14.用8255作为A/D并行接口。如图8.79所示。8255A的A组工作于方式1,为输入口,端口C的PC7位设定为输出端,与A/D变换器的变换启动信号相连,由PC7端产生正脉冲信号以启动A/D变换。A/D的忙端经反向后作为采样保持器的控制信号,并且忙端经下降沿触发单稳电路,再经反向输出一个负方波的波形到PC4端,作为A的数据输入锁存信号,将A/D转换结果存入A口的数据输入寄存器。假设8255A的A,B,C和控制寄存器的I/O地址分别为300H,301H,302H,303H。写出8255A的初始化程序及启动A/D变换的程序片段。

图8.79

15.从DATA开始的数据区中有一组数据需要用示波器显示出来。数据长度为LENGTH。利用两片DAC0832作为输出接口,一片输出数据,送示波器的Y轴;另一片输出锯齿波,同时送示波器的X轴。试画出DAC0832和系统总线及示波器的连接图,编写显示数据曲线的程序。

16. . ADC0809和系统总线连接如图8.80所示。用中断方式从IN5读入一个模拟量,放到BUF单元,试编程。设8259的地址为020H、021H,IRQ2中断类型号为0AH,8259已初始化。

解:

;设置中断向量表

PUSH DS

MOV AX,SEG ADINT

44

图8.80

MOV DS,AX

MOV DX,OFFSET ADINT MOV AL,0AH MOV AH,25H INT 21H POP DS

;主程序,开放IRQ2中断 MOV DX,021H IN AL,DX

AND AL,1111 1011B OUT DX,AL STI ;开中断 MOV DX,84H

MOV AL,05H

OUT DX,AL;启动0809 HLT;等待中断 ;中断服务程序

ADINT PROC NEAR IN AL,DX MOV BUF,AL PUSH DX

MOV DX,20H MOV AL,20H

OUT DX,AL POP DX IRET

ADINT ENDP

45


微机原理黄冰版--作业答案(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:九连环活动教学设计

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

马上注册会员

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