- 747.50 KB
- 80页
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
第5章可编程接口芯片(2)5.3串行通信的基本概念5.4可编程串行通信接口165505.5可编程串行通信接口8251A1
5.3串行通信的基本概念计算机与外部设备之间或计算机与计算机之间的信息交换称为“通信”。通信方式可分为并行通信和串行通信两种:并行通信:数据的各位同时传送串行通信:按照一定的格式一位一位地顺序传送数据。信号在一根信号线上传输。2
计算机“主机”部件之间,如CPU与存储器、CPU与接口电路,多采用并行方式传输数据串行数据传输主要出现在接口与外部设备、计算机与计算机之间。并行通信:数据有多少位,就需要多少根传输线,传送速度快。数据位数多、传输距离远时传输成本高。串行通信:只需一对传输线,可以利用现有的电话线作为传输介质,降低传输线路的成本,远距离数据传送时更加突出。3
图5-234
5.3.1串行数据通信1.数据传送方式(1)单工方式只允许数据按照一个固定的方向传送(2)半双工方式收发双方均具备接收和发送数据的能力,只有一对传输线,同一时刻只能有一个站发送(3)全双工方式有两对传输信号线,每个站任何时刻既可以发送,又可以接收5
图5-246
2.通信速率(1)传输率每秒钟传送二进制数码的位数,单位:位/秒(bps)。(2)波特率每位传送时间的倒数每次传送1位时,波特率大小和传输率相等使用调相技术可以同时传输2位或4位,这时传输率大于波特率时钟频率可选为波特率的1倍、16倍或者64倍。7
3.信号的调制/解调信号的调制:用一个信号控制另一个信号的某个参数(幅值,频率,相位),使之随之变化的过程称为调制。信号的解调:从已调制信号中还原出被调制信号的过程称为解调。8
发送端,调制器把数字信号变成模拟信号送到传输线路上。接收端,解调器把模拟信号还原成数字信号,送到数据处理设备。调制器和解调器做在一起称为调制解调器,即MODEM。计算机称为数据终端设备DTE(DataTerminalEquipment)调制解调器(MODEM)和其他通讯设备称为数据通信设备DCE(DataCommunicationEquipment)。9
图5-2510
5.3.2串行通信的方式1.同步传送方式发送方发送数据信号的同时发送一个用于同步的时钟信号。同步时钟信号的一个周期和一位数据是对应的。在同步时钟信号一个周期的时间里,数据线上同步地发送1bit数据。数据连续传送。若干个数据组成一个数据块。11
同步通讯格式面向字符同步方式:用一个或者两个同步字符作为数据块的开始。同步字符由用户约定,经常采用ASCII码中代码为16H的“SYNC(同步)”字符。随后是由字符组成的信息,字符之间没有间隔。面向比特同步方式:以二进制信息“01111110”开始随后是需要发送的各位二进制信息最后以“01111110”结束12
图5-2613
2.异步传送方式异步传送的数据以字符为单位数据传输的速率由双方事先约定以“帧(Frame)”为传送单位一帧信息由7~12位二进制组成:起始位:1位逻辑0数据位:5~8位,由收发双方约定,先发送低位。奇偶校验位:可约定采用奇校验,偶校验,无校验传输。停止位:1位、1.5位或2位的逻辑1信号14
图5-2715
5.3.3串行通讯接口把计算机的并行数据转换成串行数据发送出去把接收到的外部串行数据转换成并行数据送入计算机(1)数据总线收发器双向的并行数据通道,传送数据、状态和控制命令。(2)控制寄存器接收CPU的各种控制信息。(3)状态寄存器串行通信过程中的状态信号16
图5-2817
(4)输入、输出移位寄存器完成“并行”和“串行”二种数据的相互转换(5)数据输入寄存器输入移位寄存器每次接收一位外部输入的数据,接收的数据填满后,将完整的并行数据送入数据输入寄存器暂存。(6)数据输出寄存器接收来自CPU输出的数据,并行送往输出移位寄存器,逐位右移输出。(7)控制信号逻辑接收CPU发来的控制信号,产生内部各寄存器的读写信号。(8)移位脉冲时钟从外部输入时钟信号,用作发送和接收数据的移位时钟。18
5.3.4RS-232C标准为了使通信能够顺利地进行,通信双方必须就通信的规则事前进行约定,约定好的并在通信过程中双方共同遵守的通信规则称为通信协议。19
1.信号电平RS-232C标准采用负逻辑逻辑“1”在-3V~-15V之间逻辑“0”在+3V~+15V之间通常使用±12V作为RS-232C电平MC1488和MC1489进行RS232和TTL之间的电平转换2.信号定义表5-6给出了RS-232C接口部分常用信号的定义。3.接插件使用25个引脚或9个引脚的D型接插件进行连接。20
符号方向功能9针连接器引脚号25针连接器引脚号TXD输出发送数据32RXD输入接收数据23输出请求发送74输入发送允许85输入数据设备就绪66GND信号地57输入载波检测18输出数据终端就绪420输入响铃指示92221
5.4可编程串行通信接口16550通用的可编程异步通信接口芯片。内部有时钟产生电路、可编程波特率发生器、双缓冲通信数据寄存器和多种中断处理功能。对外有调制解调器控制信号,可直接与MODEM相连。与早期IBM/PC机使用的异步通信接口8250兼容,最高波特率提高到1.5Mb/s,具有16字节FIFO(先进先出缓冲)发送和接收功能。22
5.4.116550的内部结构与外部引脚1.数据总线缓冲器连接16550与CPU数据总线2.选择和读/写控制逻辑接收来自CPU的地址、片选和控制信息,产生内部各端口的读写操作命令。3.发送器由发送保持寄存器、发送移位寄存器和发送同步控制组成。待发送的数据写入发送保持寄存器。发送保持寄存器的内容自动转存到发送移位寄存器,在发送器时钟的控制下,由SOUT引脚发送出去。23
4.接收器由接收移位寄存器、接收缓冲寄存器和接收同步控制器组成。在接收时钟控制下,由SIN引脚输入的串行数据逐位存入移位寄存器,转换后的并行数据存入接收缓冲寄存器,等待CPU读取。5.调制/解调器控制电路提供一组控制信号,直接与调制解调器相连,完成远程通信任务。6.通信线控制寄存器和通信线状态寄存器控制寄存器保存CPU写入的通讯数据格式。状态寄存器提供串行数据发送和接收时的状态24
7.波特率发生控制电路由波特率发生器、分频系数寄存器组成。16550对18.432MHz的输入时钟进行分频,产生所要的发送器和接收器时钟信号。分频系数在初始化时分两次写入除数寄存器的高8位和低8位,分频系数可由下式算出:除数=18432000÷(波特率×16)8.中断控制逻辑由中断允许寄存器、中断识别寄存器和中断控制逻辑三部分组成。实现中断优先权管理、中断申请等功能。25
9.16550的引脚(1)数据信号双向数据线D7~D0,与数据总线相连(2)地址信号片选信号:CS0、CS1、CS2#。CS0=CS1=1,CS2#=0时,表明芯片被选中。A2~A0:具体访问哪个寄存器,由A2~A0确定。ADS#:地址选通信号ADS#为低电平时,锁存三个片选信号以及A2~A0的输入状态。(3)读/写控制信号两对读写控制信号,每对信号功能相同,电平不同。RD=1或RD#=0中一个有效且16550被选中时,可读;WR和WR#=0中一个有效且16550被选中,可写。26
图5-3027
(4)中断控制和复位信号INTR:发送保持寄存器空或接收数据有效,16550的中断允许寄存器相应位置1时,16550的中断请求引脚INTR变为高电平,用作中断请求信号。MR:复位信号,输入,它与系统RESET信号连接,系统复位同时也对16550复位。OUT1和OUT2:这两个输出引脚可以通过用户编程来改变输出电平。图5-3128
(5)时钟信号XIN和XOUT:16550的时钟信号输入引脚。从XIN输入的基准时钟,经过16550内部波特率发生器(分频器)分频后产生发送器时钟,并经过BAUDOUT引脚输出。RCLK:接收时钟,输入,常与BAUDOUT相连。(6)与外设/调制解调器之间的联络信号RTS#:请求发送信号,输出。输出给外设或MODEMCTS#:允许发送信号,输入。外设或MODEM对RTS#的应答。DTR#:数据终端准备好。输出给外设或MODEM的,DTR#=0表示16550已经就绪。DSR#:数据设备准备好。对DTR信号的应答,DSR#=0,表示外设或MODEM已经就绪。29
DCD#:载波检测输入,表示MODEM已经接收到载波信号RI#:振铃指示输入信号,表示MODEM已经接收到振铃信号。SIN:串行数据输入。SOUT:串行数据输出。(7)数据就绪信号RXRDY:接收器就绪信号TXRDY:发送器就绪信号。30
5.4.216550的内部寄存器1.16550内部寄存器有10个可寻址的8位寄存器,由地址线A0~A2和读/写控制信号选择要访问的寄存器。内部寄存器分为三组:数据传输:发送保持寄存器和接收缓冲寄存器。工作方式、参数设置:通信线控制寄存器、除数寄存器、MODEM控制寄存器和中断允许寄存器。状态寄存器:通信线状态寄存器、MODEM状态寄存器和中断识别寄存器。31
DLABA2A1A0访问的寄存器主串口地址辅串口地址0000接收缓冲器(读)3F8H2F8H0000发送保持寄存器(写)3F8H2F8H0001中断允许寄存器3F9H2F9H×010中断识别/FIFO寄存器3FAH2FAH×011通信线控制寄存器3FBH2FBH×100MODEM控制寄存器3FCH2FCH×101通信线状态寄存器3FDH2FDH×110MODEM状态寄存器3FEH2FEH1000除数寄存器(低字节)3F8H2F8H1001除数寄存器(高字节)3F9H2F9H32
(1)发送保持寄存器(3F8H/2F8H)保存CPU送来的并行数据,送到发送移位寄存器,发送移位寄存器在发送器时钟的作用下,把并行数据转换成串行数据从SOUT引脚输出。只有在发送保持寄存器空时,CPU才可以向发送保持寄存器写入下一个要发送的数据。(2)接收缓冲寄存器(3F8H/2F8H)在接收时钟的作用下,从SIN引脚输入的串行数据被送到接收移位寄存器。去掉起始位、校验位和停止位后,串行数据转换成并行数据并存入接收缓冲寄存器,等待CPU接收。33
(3)通信线控制寄存器(3FBH/2FBH)用来设置串行异步通信的数据格式D7位:DLAB寻址位D7=1,访问除数寄存器D7=0,访问接收缓冲器、发送保持寄存器。D6位:D6=1,发送方连续发送长时间中止信号(空号),空号发送的时间超过一个完整的字符传送时间时,接收方就认为发送方已中止发送。D3~D5位:选择奇偶校验方式。D2位:规定一帧数据中停止位的位数。D0位、D1位:定义一帧数据中数据位的位数。34
图5-32通信线控制寄存器(3FBH/2FBH)35
(4)中断识别寄存器/FIFO控制寄存器(3FAH/2FAH)16550内部有四级中断,但只有一根中断请求信号。中断发生后,CPU通过查询中断识别寄存器来辨别中断类型。FIFO控制寄存器和中断识别寄存器占用相同的端口地址。中断发生时读出该寄存器的内容,它作为中断识别寄存器来使用;写入FIFO控制字时,作为FIFO控制寄存器。图5-33中断识别寄存器36
图5-34(5)通信线状态寄存器(3FDH/2FDH)37
图5-35(6)中断允许寄存器(3F9H/2F9H)低4位代表中断允许控制位,置1,则允许相应的中断源请求中断,否则禁止中断。38
(7)MODEM控制寄存器(3FCH/2FCH)设置与调制解调器连接的联络信号:D7~D5位规定为0;D4位:=1,正常发送/接收;=0,内部循环方式(用于芯片检测)。D0~D3位的状态直接控制相关引脚的输出电平:D0=1,使引脚DTR#=0,DTR#信号有效。D1=1,使引脚RTS#=0,RTS#信号有效。D2=1,使引脚OUT1#=0,该引脚留给用户使用。D3=1,使引脚OUT2#=0,使16550能送出中断请求。39
DCTSDCDDSRCTSDDCDTERIDDSRD7D6D5D4D3D2D1D0CTS#发生变化0=无变化1=有变化DSR#发生变化0=无变化1=有变化RI#变化0=无变化1=有变化DCD#发生变化0=无变化1=有变化DCD#引脚0=引脚为11=引脚为0DSR#引脚0=引脚为11=引脚为0CTS#引脚0=引脚为11=引脚为0RIRI#引脚0=引脚为11=引脚为0(8)MODEM状态寄存器(3FEH/2FEH)图5-3640
(9)除数寄存器(3F8H,3F9H/2F8H,2F9H)16550发送或接收的移位时钟,是在它的基准时钟(18.432MHz)基础上分频而来的。根据所需的波特率来确定分频系数,并在初始化时存入除数寄存器。表5-8给出了9种波特率所需设置的除数寄存器的值。41
波特率除数高8位除数低8位120003H0C0H180002H80H200002H40H240001H0E0H360001H40H480000H0F0H720000H0A0H960000H78H1920000H3CH表5-8波特率与分频系数对照表42
5.4.3串行通信接口16550的应用1.16550的初始化计算机硬件或软件复位后,要对16550进行初始化。初始化主要包括:对通信线控制寄存器进行设置,确定异步通信的数据格式。设置除数寄存器,确定通信速率。对FIFO控制寄存器、中断允许寄存器和MODEM控制寄存器进行设置。43
初始化步骤:(1)80H送通信线控制寄存器,使寻址位D7=1。(2)除数高8位/低8为分别送除数寄存器高8位/低8位,确定通信速率。(3)将D7=0的命令字写入通信线控制寄存器,确定串行异步通信一帧数据帧的格式。图5-3244
图5-32通信线控制寄存器(3FBH/2FBH)45
(4)设置FIFO控制寄存器(3FAH)。FIFO控制寄存器与中断识别寄存器的地址都是3FAH;读出时是中断识别寄存器;写入时是FIFO控制寄存器。FIFO控制寄存器中各位的功能如图5-37。46
(5)设置中断允许寄存器(3F9H/2F9H)设置成查询方式:中断允许寄存器中的命令字为0。设置为中断方式:设置中断允许寄存器中的相应位为1,该位所控制的中断请求允许中断。47
(6)设置MODEM控制寄存器(3FCH/2FCH)D4=0:设置16550为正常接收/发送方式。D4=1:设置16550工作在内部循环自检方式。D3=0:16550工作在查询方式。D3=1:16550工作在中断方式。MODEM控制寄存器48
例:16550端口地址为3F8H-3FFH,使16550以19200波特率进行异步通信,每字符为8比特,1个停止位,采用奇校验,允许所有中断,则初始化程序为:MOVDX,03FBH;16550控制寄存器地址送DXMOVAL,80H;置DLAB=1,设置除数寄存器OUTDX,ALMOVDX,03F8H;除数低8位寄存器地址送DXMOVAX,003CH;波特率为19200bpsOUTDX,AL;送除数低8位MOVAL,AHINCDX;产生除数高8位寄存器地址OUTDX,AL;送除数高8位49
MOVDX,03FBH;16550控制寄存器地址送DXMOVAL,0BH;8位数据位,奇校验,1位停止位OUTDX,ALMOVDX,03FAH;FIFO控制寄存器地址送DXMOVAL,47H;允许FIFO并清除OUTDX,AL;设FIFO中断触发值为4字节MOVDX,03F9H;中断允许寄存器地址送DXMOVAL,0FH;允许所有中断OUTDX,AL;设置中断允许控制字MOVDX,03FCH;MODEM控制字寄存器地址MOVAL,0BH;正常收发,OUT1,OUT2有效OUTDX,AL;设置MODEM控制字......50
2.16550应用举例两台计算机通过16550实现异步通信16550的接收和发送数据均采用查询工作方式通信波特率9600bit/s每字符为8比特,1个停止位采用奇校验51
;计算机A_____16550查询方式发送程序DATASEGMENTSEND_DATADBNUM1,NUM2,…;要发送的数据TIMESDWN;发送的数据个数DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATABEGIN1:MOVAX,DATAMOVDS,AX52
;初始化16550MOVDX,03FBH;16550控制寄存器地址送DXMOVAL,80H;置DLAB=1,设置除数寄存器OUTDX,ALMOVDX,03F8H;除数寄存器地址送DXMOVAX,0078H;波特率为9600bit/sOUTDX,ALMOVAL,AHINCDXOUTDX,ALMOVDX,03FBH;16550控制寄存器地址送DXMOVAL,0BH;8位数据位,奇校验,1位停止位OUTDX,AL53
……CALLTRANS……MOVAH,4CH;程序结束,返回操作系统INT21H;查询方式发送子程序TRANSPROCNEARLEABX,SEND_DATAMOVCX,TIMES;要发送的数据个数送CXAGAIN:MOVDX,03FDH;通信状态寄存器地址送DXINAL,DXTESTAL,20H;检测发送器是否准备就绪JZAGAIN54
MOVDX,03F8HMOVAL,[BX];取出发送区域的待发送数据OUTDX,ALINCBX;指向下一个待发送数据LOOPAGAIN;N个数据传送完了吗?RETTRANSENDPCODEENDSENDBEGIN155
;计算机B_____16550查询方式接收程序DATASEGMENTREC_DATADB100DUP(?);存放接收的数据TIMESDWN;要接收的数据个数DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATABEGIN2:MOVAX,DATAMOVDS,AX;初始化16550MOVDX,03FBH;16550控制寄存器地址送DXMOVAL,80H;置DLAB=1,设置除数寄存器OUTDX,AL56
MOVDX,03F8H;除数寄存器地址送DXMOVAX,0078H;波特率为9600bit/sOUTDX,ALMOVAL,AHINCDXOUTDX,ALMOVDX,03FBH;16550控制寄存器地址送DXMOVAL,0BH;8位数据位,奇校验,1位停止位OUTDX,AL……CALLRECEIVE……MOVAH,4CH;程序结束,返回操作系统INT21H57
;查询方式接收子程序RECEIVEPROCNEARLEABX,REC_DATA;接收缓冲区首址送BXMOVCX,TIMES;要接收的数据个数送CXREPIN:MOVDX,03FDH;通信状态寄存器地址INAL,DXTESTAL,1EH;检测接收的数据有无错误JNZERRORTESTAL,01H;检测接收缓冲器中是否有数据JZREPIN58
MOVDX,03F8H;数据接收寄存器地址送DXINAL,DXMOV[BX],ALINCBXLOOPREPINCLC;接收成功,清CY标志位JMPDONEERROR:STC;接收不成功,置CY标志位DONE:RETRECEIVEENDPCODEENDSENDBEGIN259
5.5可编程串行通信接口8251A(1)可用于串行异步通信,也可用于串行同步通信。(2)接收、发送数据分别有各自的缓冲器,可以进行全双工通信。(3)提供与外部设备特别是调制解调器的联络信号,便于直接和通信线路相连接。(4)每个字符的位数可以是5~8位,可以设定奇校验或偶校验,也可以不设校验。校验位的插入、检错及剔除都由芯片自动完成。(5)异步通信时,停止位可选1位、1.5位或2位,波特率为0~19.2K,时钟频率可设为波特率的1倍、16倍或64倍。(6)同步通信时,波特率的范围为0~56K波特。可设为单同步、双同步或者外同步,同步字符可由用户自行设定。60
5.5.18251A的外部引脚1.与CPU连接的引脚D7~D0:数据线,与系统数据总线相连。RESET:复位信号,输入,高电平有效。复位后8251A处于空闲状态直至被初始化编程。RD#:读选通信号,输入,低电平有效。WR#:写选通信号,输入,低电平有效。61
C/D#:控制/数据端口选择输入线。8251A内部占用两个端口地址,为“0”时选择数据端口,传输数据(读或写),为“1”时选择控制端口,传输的是控制字(写)或状态信息(读)。由于该引脚信号用于选择内部端口,通常把它和地址总线的A0(8088)或A1(8086)相连。CS#:选片信号,输入,低电平有效。为低电平时CPU才能对8251A操作。TxRDY:发送准备好状态,输出,高电平有效。发送寄存器空且允许发送(脚电平为低,同时命令字中TxEN位为1)时TxRDY为高电平。CPU向8251A写入一个字符后TxRDY恢复为低电平。TxRDY可以用来向8259A申请发送中断。62
TxE:发送缓冲器空闲状态,输出。高电平有效,TxE=1,表示发送缓冲器中没有要发送的字符,CPU把要发送的下一个数据写入8251A后,TxE自动复位。RxRDY:接收准备好状态,输入,高电平有效。接收器接到一个字符后RxRDY为“1”,字符被CPU读取后恢复为“0”。RxRDY可用来向8259A申请接收中断。63
2.与外设或调制解调器连接的引脚TxD:发送数据输出。CPU并行输出给8251A的数据从这个引脚串行发送出去。RxD:串行数据输入,高电平表示数字1,低电平表示数字0。SYNDET:同步状态输出,或者外同步信号输入。此引脚仅对同步方式有意义。64
以下4根引脚用来连接调制解调器DTR#:数据终端准备好,输出,低电平有效。8251A命令字位D1为1时有效,用于向调制解调器表示数据终端(计算机)已准备好。DSR#:数据设备准备好,输入,低电平有效。调制解调器准备好时有效,向8251A表示MODEM(数据设备)已准备就绪。CPU可通过读取状态寄存器的D7位检测该信号。RTS#:请求发送信号,输出,低电平有效。8251A命令字位D5为1时有效,请求调制解调器作好发送准备(建立载波)。CTS#:清除发送(允许传送)信号,输入,低电平有效。调制解调器作好传送准备时有效,作为对8251A的信号的响应。65
注意:如果8251A不使用调制解调器直接和外界通信,应将8251A的DSR#、CTS#接地。66
3.时钟信号CLK:时钟信号,输入,用于产生8251A内部时序。CLK的周期为0.42μs~1.35μs。要求CLK的频率至少应是接收、发送时钟的30倍(对同步方式)或4.5倍(对异步方式)。RxC#:接收器时钟输入,它控制接收器接收字符的速率,在它的上升沿采集串行数据输入线。的频率应等于波特率(同步方式)或等于波特率的1倍/16倍/64倍(异步方式)TxC#:发送器时钟输入,在的下降沿数据由8251A移位输出。对频率的要求同RxC#。67
4.8251A的工作过程(1)接收器的工作过程异步方式中,接收器接收到有效的起始位后,开始接收后续的数据位、奇偶校验位和停止位。然后将数据送入寄存器。此后RxRDY输出高电平,表示已收到一字符,CPU可以来读取。同步方式中,若程序设定8251A外同步接收,则SYNDET脚用于输入外同步信号(来自MODEM),SYNDET脚上的电平正跳变启动接收数据。若程序设定8251A内同步接收,则8251A先搜索同步字符(同步字符事先由程序装在同步字符寄存器中)。RxD线上每收到一位信息就移入接收寄存器并和同步字符寄存器内容比较,若不相等则接收下一位后再比较,直到两者相等。此后SYNDET输出高电平,表示已搜索到同步字符。接下来便把接收到的数据逐个地装入接收数据寄存器。68
4.8251A的工作过程(2)(2)发送器的工作过程异步方式中,发送器在数据前加上起始位,并根据程序的设定在数据后加上校验位和停止位,组成“一帧”信息。然后从低位开始,从TxD引脚逐位发送。同步方式中,发送器先发送同步字符,然后逐位地发送数据。若CPU没有及时把数据写入发送缓冲器,则8251A用同步字符填充,直至CPU写入新的数据。69
5.5.28251A的内部寄存器8251A芯片占用2个端口地址,由C/D#引脚上输入的电平进行选择。C/D#=0数据端口数据输入寄存器读操作数据输出寄存器写操作C/D#=1控制端口方式控制字寄存器写操作命令字寄存器写操作同步字符寄存器写操作(仅同步方式)状态寄存器读操作70
1.方式控制字寄存器方式控制字确定8251A的通信方式(同步/异步)、校验方式(奇校验/偶校验/不校验)、数据位数(5/6/7/8位)及波特率参数等。方式控制字的格式如图5-39所示。它应在复位后写入,且只需写入一次。71
2.命令字寄存器命令控制字使8251A处于规定的状态以准备发送或接收数据。它应在写入方式控制字后写入,用于控制8251A的工作,可以多次写入。图5-408251A命令控制字格式D7D6D5D4D3D2D1D0ENIRRTSERSBRKRXEDTRTXEN进入搜索方式1:进行SYNC搜索发送允许1:允许,0:禁止数据终端准备好1:迫使DTR输出0接收允许1:允许,0:禁止内部复位1:8251A内部复位发送断点字符1:迫使TxD为低,0:正常请求发送1:迫使RTS输出0出错复位1:复位错误标志72
3.同步字符寄存器8251A工作在“内同步”方式时,需要由程序员把使用的“同步字符”存入该寄存器,供搜寻同步字符使用。可以有“单同步字符”和“双同步字符”两种选择。73
4.状态寄存器状态寄存器存放8251A的状态信息,供CPU查询。图5-418251A状态字格式D7D6D5D4D3D2D1D0同引脚定义DSRSYNDETFEOEPETxERxRDYTxRDY1:奇偶错帧格式出错1:表示未检测到有效停止位溢出错1:表示未取走字符又输入了下个字符74
5.5.38251A的应用8251A在使用前也要进行初始化。初始化要在8251A处于复位状态时开始。异步方式下8251A的初始化过程:(1)写入方式字;(2)写入控制字。同步方式下8251A的初始化过程:(1)写入方式字;(2)写入同步字符(1个或2个);(3)写入控制字。75
例:设8251A控制口地址301H,数据口地址300H,按下述要求对8251A进行初始化:(1)异步工作方式,波特率系数为64(即数据传送速率是时钟频率的1/64),采用偶校验,总字符长度为10(一位起始位,8位数据位,1位停止位)。(2)允许接收和发送,使错误位全部复位。(3)查询8251A状态字,接收准备就绪时,从8251A输入数据,否则等待。76
MOVDX,301H;8251A控制口地址MOVAL,01111111B;方式控制字OUTDX,AL;送方式控制字MOVAL,00110111B;操作命令字OUTDX,AL;送操作控制字WT:MOVDX,301HINAL,DX;读入状态字TESTAL,02H;检查RxRDY=1?JZWT;RxRDY≠1,接收未就绪,等待MOVDX,300HINAL,DX;读入数据77
习题51.8255A的方式选择控制字和C口按位控制字的端口地址是否一样,8255A怎样区分这两种控制字?写出A端口作为基本输入,B端口作为基本输出的初始化程序。2.用8255A的A端口接8位二进制输入,B端口和C端口各接8只发光二极管显示二进制数。编写一段程序,把A端口的读入数据送B端口显示,而C端口的各位则采用置0/置1的方式显示A端口的值。3.用8255A用作两台计算机并行通信的接口电路,请画出采用查询式输入/输出方式工作的接口电路,并写出采用查询式输入/输出方式的程序。78
4.设计一个用8255A作为8个七段显示器的接口电路,并设计一个把内存地址为ADDRA的8个数字在这8个七段显示器上显示的程序。5.8254的定时/计数器的定时与计数方式有什么区别?8254在方式0工作时,各通道的CLK、GATE信号有什么作用?各通道的控制字地址都相同,8254是怎样区分的?6.设8254的端口地址为0240H~0243H,通道0的输入CLK频率为1MHz,为使通道0输出1KHz的方波,编写初始化程序。如果让通道0与通道1级联(即OUT0接CLK1)实现1秒钟定时,则初始化程序如何编制。7.编制一个使PC机的8254产生600Hz方波的程序,并使该方波送至扬声器发声。79
8.在RS-232C接口标准中,引脚TxD、RxD、RTS#、CTS#、DTR#、DSR#的功能各是什么?9.16550的通信控制寄存器中的寻址位有什么作用?在初始化编程时,应该怎样设置?10.编写PC机中16550采用查询方式输入50个字符的异步通信程序,设16550的端口地址为3F8H~3FFH,数据格式为:8位数据位、1位偶校验位、2位停止位,通信速率为19.2Kbps。80