1. 什么是并行接口和串行接口?它们各有什么作用?
答:并行接口是指接口与外设之间按字长传送数据的接口,即4位、8位或16位二进制位同时传送;而串行接口是指接口与外设之间依时间先后逐位传送数据的接口,即一个时刻只传送一个二进制位。
并行接口传送速度较快,但在远距离传送数据时成本高,损耗大,且平行数据线之间干扰大,所以并行接口一般适用于近距离的高速传送,而串行接口则适用于远距离传送。
2. 试画出8255a与8086cpu连接图,并说明8255a的a0、a1地址线与8086cpu的a1、a2地址线连接的原因。
答:8255a与8086cpu的连线图如下图所示:
8086系统有16根数据线,而8255只有8根数据线,为了软件读写方便,一般将8255的8条数据线与8086的低8位数据线相连。8086在进行数据传送时总是将总线低8位对应偶地址端口,因此8086cpu要求8255的4个端口地址必须为偶地址,即8086在寻址8255时a0脚必须为低。实际使用时,我们总是将8255的a0、a1脚分别接8086的a1、a2脚,而将8086的a0脚空出不接,并使8086访问8255时总是使用偶地址。
4. 简述8255a工作在方式1时,a组端口和b组端口工作在不同状态(输入或输出)时,c端口各位的作用。
答:8255a 的a、b口工作在方式1时, c端口各位的使用情况如下表所示:
注:带*的各中断允许信号由c口内部置位/复位操作设置,非引脚电平。
5. 用8255a控制12位a/d转换器,电路连接如下图所示。设b口工作于方式1输入,c口上半部输入,a口工作于方式0输入。
试编写8255a的初始化程序段和中断服务程序(注:cpu采用中断方式从8255a中读取转换后的数据)。
题9-5图。
答:设8255的a、b、c及控制端口的地址分别为porta、poatb、portc和pcon,则一种可能的程序段实现如下:
主程序初始化8255a
mov al, 10011110b ; 设置8255a的工作方式控制字。
out pcon, al
mov al, 00000101b ; 设置c口置位/复位控制字,使intea(pc2)为。
out pcon, al ; 高电平,允许b口中断。
mov al, 00000010b ; 设置c口置位/复位控制字,使pc1(ibfb)输出。
out pcon, al ; 低电平,启动第一次a/d转换。
中断服务程序取数,并自动启动下一次a/d转换
mov al, 00000011b ; pc1(ibfb)输出高电平,停止a/d转换。
out pcon, al
in al, portc ; 先取高4位转换值。
mov ah, al
mov cl, 4
shr ah, cl ; 将高4位转换值放到ah的低端。
in al, portb ; 取低8位转换值放到al中。
mov al, 00000010b ; pc1(ibfb)输出低电平,再次启动a/d转换。
out pcon, al
iret6. 用8255a作为cpu与打印机接口,8255的a口工作于方式0,输出;c口工作于方式0。8255a与打印机及cpu的连线如下图所示。
试编写一程序,用查询方式将100个数据送打印机打印(8255a的端口地址及100个数据的存放地址自行设定)。
题9-6图。
答:设8255的a、b、c及控制端口的地址分别为porta、poatb、portc和pcon,而需打印的数据放在数据段中以data1开头的区域,则一种可能的程序段实现如下:
mov al, 10000001b ; 设置8255a的工作方式控制字。
out pcon, al
mov cx, 100 ; 设置需打印数据的总个数以控制循环次数。
lea si, data1
next: mov al, [si] ;从数据段取数据并通过a口发到打印机。
out porta, al
mov al, 00001100b ; 设置c口置位/复位控制字,使pc6为低电平,
out pcon, al ; 通知打印机锁存数据并打印。
inc si为取下个数据作准备。
dec cx
jz error判断是否传完100个数据,如是,转后续处理。
again: in al, portc ; 如未传完100个数据,读状态端口。
test al, 01h ; 查询pc0(busy)是否为高电平
jnz again如是,继续查询,直到busy变低
jmp nextbusy为低电平,则转next发送下一个数据。
error: …
10.已知8250的主参考时钟频率为1.8432mhz,其rclk与相连,端口地址为0330h起,要求其工作在半双工通信,每帧7位数据、偶校验、1位停止位,波特率为9600波特,编写初始化程序。
答:由一种可能的程序段实现如下:
mov dx, 333h ; 令传输线控制器寄存器bit7=1以设置波特率。
mov al, 80h
out dx, al
mov dx, 330h ; 波特率=9600,设置除数寄存器=000ch
mov al, 0ch
out dx, al
mov dx, 331h
mov al, 0h
out dx, al
mov dx, 333h ; 设置工作方式:偶校验,7位数据位,一位停止位。
mov al, 00011010b
out dx, al
mov dx, 334h ; 设置modem控制器:允许中断,发和。
mov al, 0bh
out dx, al
mov dx, 331h ; 开放接收数据就绪、接收字符错和发送缓冲器空中断。
mov al, 07h
out dx, al
sti 12. 试编写两台ibm pc机之间的通信程序。条件同6题,连接如下图。
题9-12图。
答:从连接图中可以看出,两台pc机之间没有任何联络信号的连接,题目又只给出数据传送的格式,为了使两台pc机能正确通信,应事先约定其他一些通信规则(注意,这里的规则不一定遵循标准协议,只是具体应用时根据通信双方的特殊情况定义的简单规则,通信双方都遵守就行了)。
假设系统不停地发送已准备好的一批数据,并要求发送的每一个数据都必须被正确接收,即:发送方必须在得知上一个数据已正确达到后,才发送下一个数据;若接收出错,接收方将通知发送方重发;发送方在发完所有数据后通知接收方结束这次通信。因为没有现成的硬件挂钩信号,故采用软件挂钩:
首先找到或构造两个不会被解释为数据的特殊字符做为挂钩用的联络字符,如‘,’表示已准备好接收下一个字符,‘;表示接收出错,而‘。’表示发送结束。发送方在发出一个数据后根据接收方返回的信息确定下一步处理,接收方在接到数据后先判断是否结束此次通信。
程序中采用bios中断调用对串口进行操作,需发送的数据事先准备好存放在数据段的以s_data为起始地址的n个单元中,接收到的数据则存放在附加段的以r_data为起始地址的n个单元中。一种可能的程序实现如下:
发送机程序: …
mov al, 8ah ; 初始化串行通信的数据格式
mov ah, 0
int 14h
lea si, s_data ; 使dx:si指向待传送的第一个数据。
mov cx, n+1 ; n为一共要传送的数据个数(设小于65535个)
cld按地址增量方向取数据。
trans: dec cx
cmp cx, 0 ; 检查数据是否发完?
jz ext已发完,退出。
lodsb取准备发送的数据到al中,同时si加1
mov ah, 1 ; 将al中数据送出。
int 14h
test: mov ah, 3 ; 读串口状态到al中。
int 14h
test al, 01h ; 检查是否收到接收方回送的信号?
jz test
mov ah, 2 ; 取回送的信号到al中。
int 14h
cmp al判断回送信号的含义。
jz trans收到‘,’表示接收方已收到正确数据,发下一个。
cmp al, '
jnz err发送方收到回送的不明信号,转出错处理。
dec si收到‘;’表示接收方出错,发送方重发刚才的数据。
inc cx
jmp trans
err出错处理略。
ext: mov al通知接收方数据已发送完毕。
mov ah, 1
int 14h
接收机程序: …
mov al, 8ah ; 初始化串行通信的数据格式
mov ah, 0
int 14h
lea di, r_data ; es:di指向数据存放区首址。
cld按地址增量方向取数据。
test: mov ah, 3 ; 读串口状态
int 14h
test al, 01h ; 检查是否收到数据?
jz test
and al, 0eh ; 检查是否正确接收?
jnz err接收出错,回送‘;’
mov ah, 2 ; 将接收到的数据取到al中。
int 14h
cmp al检查是否结束通信?
jz ext
stosb将接收到的数据存到指定区域,同时di加1
mov al通知发送方接收正确。
mov ah, 1
int 14h
jmp test准备接收下一个数据。
err: mov al通知发送方出错,等待重发。
mov ah, 1
int 14h
jmp test
ext结束此次通信。
14. 比较软件、硬件和可编程定时/计数器用于定时的特点。
答:软件定时一般是根据要求设计一个时延子程序,其优点是节省硬件,成本低;缺点是cpu利用率低,且定时间隔不准确;
硬件定时会增加相应的硬件设备(如定时/计数器等),使硬件成本增加,但可以不占用cpu,并且定时准确,不过一旦硬件设计制作好后,不能更改定时间隔;
用可编程定时/计数器实现定时可以兼顾前面两者的优点,即定时信号的产生由专门的硬件电路产生,定时准确且cpu利用率高,另外在需要的时候,可以由cpu程控改变定时间隔而不需要改动硬件电路。
17. 8253每个通道的最大定时值是多少?如果欲使8253用于定时值超过其最大值时,应该如何应用?
答:8253每个通道的最大定时值=最大计数值×计数脉冲周期t=216*t。若需要的定时值超过一个通道的最大定时值,有两种方法可以使用:
1 可将多个通道(或多片8253的通道)串接(级联)起来使用,即将上一级计数通道的输出端out接至下一级计数通道时钟输入端clk,以此扩展计数器的位数。如按右图所示接法,计数最长位数为三个计数器长度的和,则最大定时值=248*t。
微机原理及接口第九章作业答案
1.什么是并行接口和串行接口?它们各有什么作用?答 并行接口是指接口与外设之间按字长传送数据的接口,即4位 8位或16位二进制位同时传送 而串行接口是指接口与外设之间依时间先后逐位传送数据的接口,即一个时刻只传送一个二进制位。并行接口传送速度较快,但在远距离传送数据时成本高,损耗大,且平行数据线之间...
第九章作业答案
1 某企业现金收支状况比较稳定,预计全年 按360天计算 需要现金200000元,现金与有价 的转换成本为每次400元,有价 的年利率为10 则 最佳现金持有量 q 40000 元 最低现金管理相关总成本 tc 40000 元 其中 转换成本 200000 40000 400 2000 元 持有机会...
2019微观第九章作业答案
10市营2班张宏宇学号100805021006 一 选择题。1 垄断厂商面临的需求曲线是 a a 向下倾斜的 b 向上倾斜的 c 垂直的 d 水平的。2 完全垄断厂商的总收益与 同时下降的前提条件是 b a ed 1 b ed 1 c ed 1 d ed 0 3 某一垄断者如果面对某一线性需求函数,...