OUT63H,AL;8255方式设置 JMP$
INTP:STI;1秒中断
INAL,60H;读A口 OUT61H,AL;送B口显示 IRET
(以上参考答案由杨胜波整理)
习题十一串行接口
11.1为什么串行接口部件中的4个寄存器可以只用1位地址来进行区分?
【答】复位后第一次用奇地址端口写入的值送模式寄存器;然后写入同步字符;然后写控制字。读奇
地址则读状态寄存器。所以奇地址对应模式、控制、状态寄存器,通过读写信号和时序来区分。偶 地址对应数据输入、输出缓冲器,通过读写信号来区分。
11.2在数据通信系统中,什么情况下可以采用全双工方式,什么情况下可用半双工方式?
【答】如果一个数据通信系统中,有两个信道可以采用全双工方式,只有一个信道只能采用半双工方
式。
11.3什么叫同步通信方式?什么叫异步通信方式?它们各有什么优缺点? 【答】串行通信以同步信息封装的帧为单位传输。
同步通信,一帧可包含多个字符,要求收发双方传输速率严格一致,帧之间填充同步信息以保证发 收双方随时同步,通信效率高。
异步通信,一帧只包含一个字符,帧之间为空闲位,每一帧都同步一次,由于帧小,发收双方传输 速率允许有一定误差,但通信效率低。
11.4什么叫波特率因子?什么叫波特率?设波特率因子为64,波特率为1200,那么时钟频率为多少? 【答】波特率指码元(波形)传输速率——单位时间内传输的码元个数,单位是Baud。
波特率因子是发送/接收时钟频率与波特率的比值。 时钟频率=64×1200=76800Hz 11.5标准波特率系列指什么?
【答】标准波特率系列为110,300,600,1200,1800,2400,9600,19200
11.6设异步传输时,每个字符对应1个超始位、7个信息位、1个奇/偶校验位和1个停止位,如果波
特率为9600,刚每秒能传输的最大字符数为多少个? 【答】即9600/10=960个
11.7在RS-232-C标准中,信号电平与TTL电平不兼容,问RS-232-C标准的1和0分别对应什么电平?
RS-232-C的电平和TTL电平之间通常用什么器件进行转换?
【答】RS-232-C将-5V—-15V规定为“1”,将+5V—+15V规定为“0”。将TTL电平转换成RS-232-C
电平时,中间要用到MC1488器件,反过来,用MC1489器件,将RS232-C电平转换成TTL电平。 11.8从8251A的编程结构中,可以看到8251A有几个寄存器和外部电路有关?一共要几个端口地址?
为什么
【答】数据发送寄存器、数据接收寄存器,状态寄存器和命令寄存器。一共2个端口地址。数据发送寄 存器(只写)和接收寄存器(只读)共用一个端口地址。命令寄存器(只写)和状态寄存器(只读)共 用一个端口地址。
11.98251A内部有哪些功能模块?其中读/写控制逻辑电路的主要功能是什么?
【答】8251A有一个数据输入缓冲寄存器和一个数据输出缓冲寄存器,一个发送移位寄存器和一个接收
移位寄存器,一个控制寄存器和一个状态寄存器,一个模式寄存器和两个同步字符寄存器等功能
模块。读/写控制逻辑电路用来配合数据总线缓冲器工作。其主要功能有:1)接收写信号WR,并 将来自数据总线的数据和控制字写入8251A;2)接收读信号RD,并将数据或状态字从8251A送往 数据总线;3)接收控制/数据信号C/D,将此信号和读/写信号合起来通知8251A,当前读/写的是 数据还是控制字、状态字;4)接收时钟信号CLK,完成8251A的内部定时;5)接收复位信号RESET, 使8251A处于空闲状态。
11.10什么叫异步工作方式?画出异步工作方式时8251A的TxD和RxD线上的数据格式。
【答】串行工作方式分为两种类型,一种叫同步方式,另一种叫异步方式。异步工作方式时,两个字
符之间的传输间隔是任意的,所以,每个字符的前后都要用一些数位来作同步。在采用异步工作 方式时,非数据信息比例比较大,而且,信息有效率比同步方式低,在异步方式下,接收方的时 钟频率和发送方的时钟频率不必完全一样,而只要比较相近,即不超过一定的允许范围就行了。 11.11什么叫同步工作方式?什么叫双同步字符方式?外同步和内同步有什么区别?画出双同步工作
时8251A的TxD线和RxD线上的数据格式。
【答】串行工作方式分为两种类型,一种叫同步方式,另一种叫异步方式。同步方式时,将许多字符
组成一个信息组,这样,字符可以一个接一个地传输,但是,在每组信息(通常称为信息帧)的 开始要加上同步字符,在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙。在同 步方式下,非数据信息比例比较小,要求进行信息传输的双方必须用同一个时钟进行协调,正是 这个时钟确定了同步串行传输过程中每1位的位置,双同步方式,就是要在测得输入移位寄存器 的内容和第一个同步字符寄存器的内容相同后,再继续检测此后的输入移位寄存器的内容是否与 第二个同步字符寄存器的内容相同,如果不相同,则重新比较输入移位寄存器和第一个同步字符 寄存器的内容,如果相同,则认为同步已经实现。外同步和内同步的区别:在外同步情况下,和 内同步过程有所不同,因为这时是通过在同步输入端SYNDET加一个高电位实现同步的,SYNDET 端一出现高电平,8251A就会立刻脱离对同步字符的搜索过程,只要此高电位维持一个接收时钟 周期,8251A便认为已经完成同步。
11.12为什么8251A要提供DTR,DSR,RTS,CTS四个信号作为和外设的联络信号?平常使用时是否可
以只用其中两个或者全部不用?要特别注意什么?说明CTS端的连接方法。
【答】DTR,DSR,RTS,CTS是RS-232接口标准中定义的联络控制信号,由于8251支持RS-232协议,
所以提供这四个信号。根据要求,可以不使用,也可部分或全部使用。
要特别注意8251只符合DTR,DSR,RTS,CTS的逻辑电平定义而不符合RS-232的电气特性,因此 使用时需要进行逻辑电平转换。 CTS连接RTS。
11.138086系统中采取什么措施来实现8位接口芯片和低8位数据线的连接且满足对奇/偶端口地址的
读/写?这样做的道理是什么?
【答】将地址总线的最低位A0不连接到8251A这样的接口芯片上,而是将地址次地位A1做为地址最
低位来用就行了。在这种情况下,如果CPU这边给出连续的两个偶地址,到8251A这边,由于地 址次地位作为地址最低位来用,相当与将CPU给出的地址除以2,而两个连续的偶地址中,必定 有一个能被4整除,另一个不能被4整除,于是,两个偶地址分别除以2后,就边成了一奇一偶 两个地址。这样一来,从CPU这边来说,端口地址都是偶地址,所以,传递信息时,信息总是出 现在低8位数据线上;而从端口这边来说,端口地址中既有奇地址,也有偶地址,而且是连续的, 这正好满足许多接口芯片对端口地址的要求。 11.14对8251A进行编程时,必须遵守哪些约定?
【答】对8251A进行编程时,必须遵守的约定主要有3个:
1.芯片复位以后,第一次使用奇地址端口写入的操作为模式字进入模式寄存器。
2.如果模式字中规定了8251A工作的同步模式,那么,CPU接着往奇地址端口输入一个或两个字
节就是同步字符,同步字符被写入同步寄存器。如果有两个同步字符,则会按先后分别写入第一 个同步寄存器和第二个同步寄存器。
3.这之后,只要不是复位命令,不管是同步模式还是异步模式,由CPU用奇地址端口写入的值将 作为控制字送控制寄存器,而用偶地址端口写入的将作为数据送到数据输出缓冲寄存器。 11.158251A的模式字格式如何?参照教材上给定格式编写如下模式字:异步方式,1个停止位,偶校
验,7个数据位,波特率因子为16。
【答】对8251A进行初始化时,模式字是按照模式寄存器的格式来设置的,8251A工作在同步模式和异
步模式两种情况下。当模式寄存器的最低两位为0时,8251A便进入同步模式,此时,最高位决定 了同步字符的数目;如果模式寄存器的两个最低位不全为0,则8251A就进入异步模式。按题意编 写的模式字为:01111010 模式字格式如下:
S1S0EPPENL1L0B1B0
异步方式,1个停止位,偶校验,7个数据位,波特率因子为16——模式字为01111010
11.168251A状态字格式如何?哪几位和引腿信号有关?状态位TxRDY和引腿信号TxRDY有何区别?它
们在系统设计中有什么用处? 【答】状态字格式如下:
DSRSYNDETFEOEPETxEmptyRxRDYTxRDY
其中DSR、SYNDET、TxEmpty、RxRDY是相应引脚的电平标志。 状态位TxRDY是发送缓冲器为空标志,WR前沿变为无效。
引脚TxRDY是在状态位TxRDY=1、命令位TxEN=1、引脚CTS=0情况下才有效。
11.17参考初始化流程,用程序段对8251A进行同步模式设置。奇地址端口地址为66H,规定用内同步
方式,同步字符为2个,用奇校验,7个数据位。 【答】XORAX,AX
OUT66H,AL MOVAL,40H OUT66H,AL MOVAL,00011000B OUT66H,AL
11.18设计一个采用异步通信方式输出字符的程序段,规定波特率因子为64,7个数据位,1个停止位,
用偶校验,端口地址为40H、42H,缓冲区首地址为2000H:3000H,长度为20字节。 【答】XORAX,AX
OUT42H,AL MOVAL,40H OUT42H,AL MOVAL,01111011B OUT42H,AL;方式设置 MOVAX,2000H
MOVDS,AX;缓冲区指针设置 MOVBX,3000H
MOVCX,20;缓冲区长度设置 MOVAL,[BX];发送一个字节 OUT40H,AL INCBX;指针变化 DECCX;长度变化
L1:INAL,42H;查询发送缓冲区
TESTAL,01H
JZL1;不为空,继续查询 MOVAL,[BX];发送下一个字节 OUT40H,AL INCBX;指针变化 LOOPL1 END
(以上参考答案由杨胜波整理)
习题十二模/数和数/模转换
12.1为什么要
把A/D,D/A转换器与微机的接口作为专门问题来研究?它与前面所讲的并行接口有何异同点? 【答】因为A/D,D/A转换器就是微机的模拟数据接口。并行接口是数字接口。 12.2在A/D、D/A转换器指标中,精度与分辨率有什么区别?
【答】A/D转换器的分辨率指输出数字量的位数,D/A转换器的分辨率指输入数字量的位数。而精度是 指输出与理论值之间的误差。
12.3D/A转换器与微处理机接口中,最关键的问题是什么?应如何解决?
【答】D/A转换器输入大于微机数据总线宽度时,如果直接连接,需要分次写入数字量,会造成D/A转 换器输出不稳定甚至窄脉冲。
应在D/A转换器和数据总线之间增加多级缓冲,使D/A转换器能同时得到数字量输入。
12.4参照教材中的锯齿波发生器例,自行设计一个三角波发生器,用8086汇编写出程序(地址自定)。
如果要产生正弦波信号,在软件设计思想上有什么变化?
MOVDX,PORT MOVAL,0FFH
DON1:INCAL
OUTDX,AL CMPAL,0FFH JNZDON1
DON2:DECAL
OUTDX,AL CMPAL,0 JNZDON2 JMPDON1
12.4电流输出型与电压输出型D/A转换器有什么不同?
根据执行部件的要求,可以通过变换器相互转换,但电压输出可能有双极性。
ADC0809ADC0809与与CPUCPU系统总线的连接系统总线的连接如下图,设EOC接8259的IR7:试编写连续转换8个通道的模拟量的 程序,并将转换值存在DAT开始的单元中。 主程序:CLI
MOVBL,0;0通道号送BL
MOVSI,0;设存放转换值地址指针 MOVAL,BL;通道号送AL
OUTADC0809,AL;从0通道开始,启动A/D转换; NOP NOP STI …..
IR7中断服务程序:读A/D转换值
INT-AD:…INAL,ADC0809;读A/D转换值
MOVDAT[SI],AL;存入DAT中 INCBL INCSI CMPBL,8 JZEXIT
MOVAL,BL;若未完成8个通道的转换,
;则启动下个A/D转
换,否则返回
OUTAD0809,AL;启动下个A/D通道 STI
EXIT:IRET
12.5阅读下列程序并回答问题(2002年西科大信息学院微机原理考题)
下图是数模转换器DAC0832通过并行接口芯片8255A与CPU相连的硬件连接图,假设DAC0832 工作在直通方式(直通即不进行缓冲,送过来的数字量直接送到DAC转换器,条件是除ILE端加高电 平外,其它的所有的控制信号都接低电平),8255A的PA口,PB口,PC口和控制端口的地址分别是 300H,301H,302H,303H,A组和B组都工作在方式0下。请根据上述,填空完成8255A的初始化以 及相应的设定,并大致画出D/A转换输出端的波形。
1)8255A的初始化
MOVDX,303H
MOVAL,10000000H;8255A的方式字 OUTDX,AL
;通过PB口设定DAC0832为直通方式
MOVDX,302H
MOVAL,10H;设置DAC0832为直通方式 OUTDX,AL
;进行D/A转换
MOVAL,0FFH
BEGIN:MOVCX,0FFFH WAVE1:MOVDX,300H
OUTDX,AL LOOPWAVE1 MOVCX,0FFFH
WAVE2:MOVAL,00H
OUTDX,AL LOOPWAVE2 JMPBEGIN
2)请画出输出端的大致波形。上升沿