《微型计算机接口技术》第6章 开关量输入输出控制接口_第1页
《微型计算机接口技术》第6章 开关量输入输出控制接口_第2页
《微型计算机接口技术》第6章 开关量输入输出控制接口_第3页
《微型计算机接口技术》第6章 开关量输入输出控制接口_第4页
《微型计算机接口技术》第6章 开关量输入输出控制接口_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1第6章数字量输入输出接口

2目录6.1并行接口的概念6.2并行接口控制芯片8255A6.3数字量并行接口的应用6.4数字量串行接口及芯片3概述数字量输入输出接口包括数字量输入和数字量输出两大部分。数字量是计算机能够直接识别和处理的信号。输入输出系统中的主要数字量包括开关量输入和输出。所以数字量又称为开关量。本章主要介绍数字量并行输入输出接口、数字量串行输入输出接口以及光电隔离的输入输出接口。46.1并行接口的概念并行接口通信就是把一个字符的各位同时用几根线进行传输。并行通信用在传输速率要求较高,而传输距离较短的场合。图6-1给出了数据总线进行并行通行的例子。01010110

D0D1D2D3D4D5D6D7目的D0D1D2D3D4D5D6D7源图6-1数据总线进行并行通行的例子56.2并行接口控制芯片8255A8255A是Intel公司生产的可编程并行接口芯片,它有多种工作方式可以进行选择,并且通常无需外围电路,使用方便而且广泛。6.2.18255A的编程结构6.2.28255A的引脚功能6.2.38255A的控制字6.2.48255A的工作方式66.2.18255A的编程结构8255A的逻辑结构如图6-2所示,主要包括三个并行的输入/输出端口A、B和C,A组和B组的控制电路,数据缓冲器以及读写控制逻辑等部分。为了与A组和B组进行区分,以下将端口A、B和C称为PA口、PB口和PC口。78(1)PA、PB和PC口的作用与功能8255A有三个I/O端口,分别是PA、PB和PC,三个端口都是8位的,并且通过编程可以作为输入、输出或输入/输出端口使用。PA口是一个独立的8位I/O口,有数据输入/输出锁存功能。PB口也是一个独立的8位I/O口,有数据输出锁存功能。PC口可以看作是一个独立的8位I/O口;也可以看作是两个独立的4位I/O口,还可看作独立的8位I/O口。有数据输出锁存功能。端口PA和PB通常独立使用,而端口PC既可以独立使用,也可以配合端口PA和PB的工作,为它们提供联络信号,包括选通信号和应答信号。端口PC在独立工作时,既可以8位并行输入或输出,也可以按位操作,具有更大的灵活性。9(2)A组和B组的控制电路在配合端口PA和PB工作时,端口PC被分为两部分,高4位(PC7~PC4)与端口PA一起构成了A组,而低4位(PC3~PC0)与端口PB一起构成了B组。A组和B组的控制电路接收由读写控制逻辑获得的控制字,分别对A组和B组的工作方式进行控制,因此A组和B组可以工作在不同方式下。10(3)数据缓冲器双向、三态的数据缓冲器是8255A与数据总线的接口,微处理器可以通过它向三个I/O端口写入或读出数据,或者写入控制字以选择8255A的工作方式。(4)读写控制逻辑读写控制逻辑电路负责管理8255A的数据传输过程,实现8255A内部和外部的数据、控制字的传送。它根据地址、控制信号(复位信号、读写信号和片选信号等)的组合来决定将微处理器发送的控制字传送给A组或B组的控制电路,或者选择输入或输出数据到PA、PB和PC口。116.2.28255A的引脚功能1.面向CPU的引脚信号及功能D0-D7:8位,双向,三态数据线,用来与系统数据总线相连;RESET:复位信号,高电平有效,输入,用来清除8255A的内部寄存器,并置A口,B口,C口均为输入方式;A1,A0:内部口地址的选择,输入。这两个引脚上的信号组合决定对8255A内部的哪一个口或寄存器进行操作122.面向外设的引脚信号及功能PA0~PA7:A组数据信号,用来连接外设;具有输入、输出锁存功能,可以作为单向或双向信号线使用。PB0~PB7:B组数据信号,用来连接外设;具有输出锁存功能,仅可以作为单向信号线使用。PC0~PC7:C组数据信号,用来连接外设或者作为控制信号。具有输出锁存功能,仅可以作为单向信号线使用。136.2.38255A的控制字1.方式控制字(控制口)142.C口置位/复位控制字(控制口)注意:这里必须使用控制口操作PC口153、8255A的状态字8255A无状态寄存器,在方式1和方式2时,可以用端口C兼作状态用。166.2.48255A的工作方式1.方式0方式0称为基本输入/输出方式,适合在同步传输(无条件传输)和程序查询方式下工作,CPU通过软件方式确认外设状态,与外设交换数据,因而不适合在实时性要求高的应用环境。在方式0中,PA、PB和PC相互独立工作,PC又分为高4位和低4位两个独立的部分,通过控制字可以将这四部分任意选择为输入或输出,共有16种组合。17初始化实例例如,某系统要求使用8255A的C口的PC4输出一个由高到低的跳变。写出8255A的方式控制字和初始化程序段。【解】由于本例不关心PA和PB的工作方式,所以不用考虑设置8255A的方式控制字。为了实现PC4输出一个由高到低的跳变,需要PC4先输出一个高电平,然后输出一个低电平。方法一:采用普通方式设置PC为输出,然后置位/复位PC4,具体程序段如下:MOV DX,控制口MOV AL,1000XXXB ;选择PC高位输出,方式0OUT DX,AL ;MOV DX,PC口MOV AL,XXX1XXXXB ;即PC4设置为高电平输出OUT DX,AL ;PC4置0(低电平)MOV AL,XXX0XXXXB ;即PC4设置为低电平输出OUT DX,AL ;PC4置0(低电平)18为了实现PC4输出一个由高到低的跳变,需要PC4先输出一个高电平,然后输出一个低电平。方法2:采用置位/复位PC口方式,具体程序段如下:MOV DX,控制口MOV AL,00001001B ;即05H,选择PC4,置位OUT DX,AL ;PC4置1(高电平)MOV AL,00001000B ;即05H,选择PC4,复位OUT DX,AL ;PC4置0(低电平)对于PC口可以采用两种方法之一,方法二简单。对应PA和PB口,只能采用方法一,不能使用方法二。特别注意:方法二对控制口进行,不是PC端口。192.方式1方式1是一种选通I/O方式,A口和B口仍作为两个独立的8位I/O数据通道,可单独连接外设,通过编程分别设置它们为输入或输出,输入输出均具有数据锁存功能。而C口则要有6位(分成两个3位)分别作为A口和B口的应答联络线,其余2位仍可工作在方式0,可通过编程设置为输入或输出。20(1)方式1的输入组态和应答信号的功能图6-7给出了8255A的A口和B口在方式1的输入组态图。C口的PC3-PC5用作A口的应答联络线,PC0-PC2则作用B口的应答联络线,余下的PC6~PC7还可作为方式0使用。21方式1输入组态的应答联络线2223方式1的输出组态和应答信号24253.方式2方式2为双向选通I/O方式,只有A口才有此方式。这时,C口有5根线用作A口的应答联络信号,其余3根线可用作方式0,也可用作B口方式1的应答联络线。方式2就是方式1的输入与输出方式的组合,各应答信号的功能也相同。而C口余下的PC0~PC2正好可以充当B口方式1的应答线,若B口不用或工作于方式0,则这三条线也可工作于方式0。26方式2为双向选通I/O方式中断请求输出缓冲器满输出应答(外设读走数据)输入选通(外设准备好了数据)输入缓冲器满(8255已经收到数据)作为普通输入输出(方式0)276.3并行接口的应用

6.3.1七段数码管接口28本节介绍8255A的典型应用,包括8255A与LED的接口、8255A与非编码键盘的接口、8255A与并行打印机的接口。1、单个LED与8255A的接口2、多个LED与8255A的接口296.3.1七段数码管接口数码显示管(LED)是一种简单的显示输出设备,通常作为仪器、仪表的显示器,用于显示数字或少数字符。LED种类较多、大小各异,主要有七段数码管和16段数码管。图6.13给出了一种七段式数码管的内部结构。30显示不同数字和字符时,七段数码管需要点亮的二极管位置不同。如,显示数字“3”,需要点亮a、b、c和g四段发光二极管。表6-2给出了图6.13所示结构的七段数码管实现数字0~9以及字符A~F时,需要发光的二极管段。31显示的数字发光的段显示的数字发光的段显示的字符发光的段显示的字符发光的段0abcdef5afgcdAabcefgFaefg1bc6afgcdebabcdefgqabcfg2abged7abcCadef–g3abgcd8abcdefgdbcdeg=gd4fgbc9abcdfgEadefgPabefg321、单个七段数码管与8255A的接口8255A与单个数码管的接口电路如图6.14所示。共阳33该数码管由8个发光二极管构成,对外引脚共9个,分别是a、b、c、d、e、f、g、dp和公共引脚,采用共阳极结构。除Vcc外,每个引脚外接1个460欧姆的电阻,然后连接到8255A的PB口的PB0~PB7上。根据题意,当在PB0上输出低电平时,LED的a段二极管发光,输出高电平时,LED的a段二极管熄灭。其它各段发光的方法依次类推。34首先,分析图中LED实现不同数字和字符时发光的二极管,由此确定PB口输出什么数值时控制显示不同的“数字”或“字符”。例如,要显示数字“2”时,需要点亮a、b、d、e、g共5段发光二极管,根据a、b、d、e、g与PB口的连接关系,可以确定PB口的值应该设置为PB0=0(a段),PB1=0(b段),PB2=1(c短),PB3=0(d段),PB4=0(e段),PB5=1(f段),PB6=0(g段),PB0=1(DP段),写出字节的形式就是10100100B,即0A4H。这种为确定显示字符而确定的CPU需要送出的控制数值,称为LED段码或字形码。表6-3给出了全部16进制数字字符的LED段码。35显示数符发光段LED段码显示数符发光段LED段码0abcdefC0HAabcefg88H1bcF9Hbcdefg2abgedA4HCadef3abgcdB0Hdbcdeg4fgbc99HEadefg5afgcd92HFaefg6afgcde82Hqabcfg7abcE8H–g8abcdefg80H=gd9abcdfg9FPabefg36在上例中,采用共阳LED,低有效驱动显示,如果要求先显示数字“3”,然后显示数字“6”,写出程序段。【解】先分析数字“3”和数字“6“显示时的LED段码,分别为:0B0H和82H,然后写出程序段如下:MOVDX,8255控制口MOVAL,10000000B ;80H,8255A初始化B口方式0,输出OUTDX,AL MOVDX,8255PB口MOVAL,0B0H ;“3”的段码OUTDX,AL ;显示“3”MOVAL,82H ;“6”的段码OUTDX,AL ;显示“6”372、8255A与多个LED的接口图6-15为8255A驱动8个LED的接口电路。其中的七段数码管采用共阴LED,每个LED包含8个引脚,分别是a、b、c、d、e、f、g、dp和公共引脚。除公共引脚外,每个引脚外接1个460欧姆的电阻(图中未给出),然后连接到8255A的PA口的PA0~PA7上。每个LED的公共引脚经过反相器连接到PC口的PC0~PC7。3839在这种有多个数码管的情况下,通常采用动态扫描的方式来控制数码管的显示,其过程是首先使PC0输出高电平,而PC1~PC7输出低电平,选中数码管U0,然后由PA口根据要显示的第一个数字输出8位数据(称为段码或字形码),尽管段码同时到达8个数码管的段选线,但只有U0能够显示,因此将第一个数字显示在U0上。这种状态维持2m后,接下来使PC1输出高电平,而其它7位输出低电平,可以在数码管U1上显示第二个数字。以此类推,周而复始,就可以使8个数码管同时显示8位数字。上述动态扫描过程利用了视觉暂留现象。为了能够获得较好的显示效果,每个数码管的扫描时间需要选取恰当,时间太长会造成闪烁现象。40求解过程-第1阶段:设置段码表本例由于采用共阴LED,而且LED引脚和PA口的连接顺序不同(引脚a、b、c、d、e、f、g、dp分别对应PA口的PA7~0),因而得到的段码(字形码)不同。PA位PA7PA6PA5PA4PA3PA2PA1PA0DB位D7D6D5D4D3D2D1D0段abcdefgdp段码011111100FCH10110000060H211011010DAH311110010F2H40110011066H510110110B6H610111110BEH711100000E0H811111110FEH911110110F6HA111

1110EEH41第2阶段:设置显示缓冲区8个LED要显示的数字可以放到显示缓冲区DispBuff中。例如,8个LED要显示“20070501”,则DispBuff的值可以设置为:2,0,0,7,0,5,0,1。通过修改显示缓冲区,可以让8个LED显示不同的数字,简化了软件设计。DispBuff: 02H,00H,00H,07H,00H,05H,00H,01H ;放置要实现的8个数字,作为查找下表的偏移量使用42第3阶段:设计8个LED轮流显示的完整程序//初始化8255AMOV AL,10000000B ;PA、PC均为方式0,输出

MOV DX,PORTCTL ;8255A控制口

OUT DX,ALBEGIN:MOV CX,8 ;循环8次

MOV DI,OffsetDisBuff

MOV BX,OffsetSegCodeTab MOV SI,0MOV AH,00000001B ;PC0设置为1,选中第一个LED43MOV AH,00000001B ;PC0设置为1,选中第一个LEDSCAN:MOV AL,AH ;使PC口相应位置位

MOVDX,PORTC

;MOV DX,PORTCTL ;C口位控时的指令

OUT DX,AL ;使PC口相应位置位

ADD DI,SI ;查找显示缓冲区

MOVDX,[DI] ;取出要显示的数字符

MOV AL,[BX+DX] ;取出显示字符的段值(字形码)

INC SI ;下一个要显示字符的偏移量

MOV DX,PORTA ;PA口输出字形码

OUT DX,ALCALL DELAY2MS SHL AH,1 ;为显示下一个数码管做准备

;ADD AH,2 ;C口位控时,为显示下一个数码管做准备

LOOP SCAN JMP BEGIN ;重复显示446.3.2非编码键盘接口键盘根据实现方法可以分为编码键盘和编码键盘非两种。编码键盘是指可以直接提供按键编码(如ASCII码)的键盘。为了能够提供按键编码,编码键盘内部需要有键盘扫描电路,这些硬件电路能够检测是否有键按下,并根据按下的是哪一个键而输出其编码。比如经常使用的PC机键盘,其内部专门设有一个单片机进行键盘检测和处理。非编码键盘只有按键而无扫描电路,这些按键它由多个开关组合而成。4516个键的键盘对于大多数的键盘,按键被排成行和列的矩阵。下面以机械式开关构成的16个键的键盘为例(如图6-16所示),来讨论键盘接口的工作原理,这种原理对采用其它类型的开关的键盘也是适用的。46分析设16个键分别为16进制数字0~9和A~F,键盘排列、连线及接口电路如图6-16所示。16个键排成4行×4列的矩阵,通过8255A构成的接口与CPU连接。8255A的端口A作输出,端口B作输入。矩阵的4条行线接到输出端口A的PA3~PA0,用程序能改变这4条行线上的电平。4条列线连到输人端口B的PB3~PB0,4条行线还同时接到输人端口B的PB7~PB4上(这不是必须的,可以不接),这样,用输入指令读取B口状态时,可同时读取键盘的行列信号。4716个按键的扫描码例如,对于数字0,它位于3行、3列,压下“0”键时,从B口可读得D7位和D3位为0,其余位为1,所以数字0的编码为01110111B,即77H;对于数字6,处于2行1列,压下‘6’键时,D6位和D1位0以其余位为1,所以数字6的编码为10111101B=BDH。按键01234567扫描码77H7BH7DH7EH0B7H0BBH0BDH0BEH按键89ABCDEF扫描码0D7H0DBH0DDH0DEH0E7H0EBH0EDH0EEH48确定程序流程包括键盘检测、去抖动、键值编码和确定键名等。具体流程如下:(1)检测是否所有键都松开了,若没有则反复检测(该步可省去)。当所有键都松开了,转(2);(2)检测是否有键压下,若无键压下则反复检测。(3)若有键压下,则通过延迟20ms消除键抖动,如果该键还按下,则继续判断是哪个键按下,否则,继续检测。(4)对压下的键进行编码,将该键的行列信号转换成16进制码,由此可确定哪个键被压下了。如出现多键重接的情况,只有在其它键均释放后,仅剩一个键闭合时,才把此键当作本次压下的键。(5)该键释放后,再回到(2)。49给出具体程序首先给出该8255A的端口地址(这里是假设,实际系统根据地址译码确定),具体为:PORTAEQU0FF9H ;8255A口地址PORTBEQU0FFBH ;8255B口地址PORTCTLEQU0FFFH ;8255控制口地址然后确定程序出口,具体参数为:若返回值AH=0,表示已读到有效的键值,并在AL中存有0~F键的16进制代码;若返回值AH=l,则表示出错。最后给出程序段,包括注释与说明。50给出具体程序本段程序可以省略等待全部按键释放51给出具体程序本段程序检查是否有键按下?52本段程序检查哪一个键按?本段程序编码并查表从按键F开始查表,直到按键0。如果按键较少,则不用查表,根据编码转去直接处理

INAL,DX CMPAL,77H JZKey0 CMPAL,7BH JZKey1

…53从上面键盘接口例子我们可以看到,为了要及时发现键盘中的按键是否按下,CPU必须定时或不断地利用软件(即上述扫描程序)对键盘进行扫描,这样CPU的开销太大,降低了CPU的工作效率。为此有关厂家专门开发了、用于键盘接口的大规模集成电路芯片,例如Intel8279、SSK814。按键01234567扫描码77H7BH7DH7EH0B7H0BBH0BDH0BEH按键89ABCDEF扫描码0D7H0DBH0DDH0DEH0E7H0EBH0EDH0EEH546.3.3并行打印机接口并行打印机接口(LPT)在不同PC系列机型中,以不同的形式出现。在PC/XT机中是以I/O扩展槽上的IBM并行打印机适配器板出现,在AT机中是以插在I/O扩展槽上的IBM并行口/串行口适配器板出现。现在的LPT则集成在主板上,随着计算机的快速发展,LPT接口的使用频率在下降,代之而起的是基于USB接口的打印机的广泛使用。但作为打印机的主要接口之一,本节有必要进行介绍与讲述。55Centronics总线标准在并行打印机中,设置有36引脚的Centronics总线标准插座。打印机与PC通过36芯-25芯电缆连接到PC的25芯D型连接器LPT上。它的25个引脚所代表的信号可分为:数据信号、状态信号和控制信号三类。表6-6给出了Centronic总线引脚及其功能说明。56Centronic总线引脚及功能说明Centronic总线时序57例如,已知某微型英文打印机的接口信号如下,信号间的时序关系如图6-17所示。其中:(1):输入打印机的选通信号(5ms负脉冲),用来把数据打入打印机数据缓冲器;(2):初始化打印机信号(5ms负脉冲);(3)BUSY:打印机发出的状态信息(“忙”信号),BUSY有效(高电平)时,表示打印机现在不能接收数据,BUSY无效(低电平)时,表示打印机正处于空闲(准备好)状态,可以接收数据。(4)DATA0~DATA7:送往打印机的打印数据,在英文字符打印机中,DATA0~DATA7上传输的是要打印的字符的ASCII码。58现在将英文打印机连接到8255A芯片上,8255A连接到PC/XT总线上,如图6-18所示。已知有5ms延迟程序Delay5ms可供调用。59解答下列问题:(1)分析图中的译码电路,给出8255A的PA、PB、PC和方式控制字的端口地址(用16进制表示);(2)给出8255A的方式控制字(用16进制表示),写出初始化8255A的程序段; (3)完成判断打印机忙的程序段;(4)完成下面的打印一个字符“A”的程序段。60【解】(1)由图6-18的地址译码电路分析可知,8255A的片选信号连接到74LS138芯片的Y2上,即当Y2为低电平时选中8255A芯片。而74LS138的Y2为低电平的条件是:A9A8=11,A7A6=01,A4A3A2=010,A5为任意值。根据上述分析,8255A的PA口地址为:1101X01000B,即348H或368H。由此可得,8255A的PA、PB、PC和控制口的端口地址分别为:348H或368H,349H或369H,34AH或36AH,34BH或36BH。61解:(2)按照题意,8255A的PA为输入(或输出),PB为输出,PC的低4位为输出,高4位为输入。由此可得8255A的方式字的值为98H。下面是初始化8255A的程序段:MOV DX,34BH或36BHMOV AL,98H OUT DX,AL (3)下面是判断打印机忙的程序段;MOV DX,34AH ;或36AH,C口BUSY: IN AL,DXTEST AL,40H; 检测PC6JNZ BUSY62(4)下面是打印一个字符“A”的程序段。MOV DX,PB的端口地址;MOV AL,41H;OUT DX,AL ;发送待打印字符MOV DX,34BH ;或36BH,控制口MOV AL,05H ;PC2位控 OUT DX,AL ;发送信号/STBMOV AL,04H ;PC2位控 OUT DX,AL ;发送信号/STBCALL Delay5msMOV AL,05H ;PC2位控OUT DX,AL ;发送信号/STBRET63上面的例子给出的是8255A工作于方式0的例子。但在实际应用中,打印机与8255A可以方便实现方式1的连接,即由硬件判断打印机忙状态,通过中断方式进行打印数据发送。图6.19所示,微型打印机的接口由8255A的A组实现,采用工作方式1、输出方式。根据方式1的时序关系,微处理器将数据写入PA口并由其引脚输出后,PC7输出信号,这正好作为数据选通信号将数据送入打印机,打印机完成接收操作后用信号指示8255A,随后8255A产生中断请求信号通知微处理器可以输出下一个数据。646.4串行接口的基本概念第1节:串行通信基础第2节:可编程串行接口芯片-8251第3节:8251的串行异步通信的应用第4节:PC系列串行异步通信接口第5节:BIOS串行异步通信口的功能调用30一月2023修改65第1节:串行通信基础1)串行通信的物理连接2)串行通信类型和数据位鉴别方式3)串行通信协议4)串行通信的物理标准661)串行通信物理连接方式672)串行通信的类型和数据位的检测方式串行异步通信格式

一帧字符用起始位和停止位同步682)串行通信的类型和数据位的检测方式串行同步通信格式

用同步字符完成同步69

串行通信数据位的检测

时钟周期:Tc

数据位间隔:Td

Tc=Td/K

K:波特率因子(16,32,64)703)串行通信协议①异步通信协议②同步通信协议71①异步通信数据格式72

②串行同步通信协议BISYNC(BinarySynchronousCommunication):

SYN(1或多)、STX(起始控制符)、DATAFIELD(100或更多字节)、ETX(结束控制符)、BCC(块校验字符)、PAD(帧结束FFH)73②串行同步通信协议SDLC(SerialDataLinkControl):

IBM用于计算机网络中

SYNC(Flagbyte01111110)、Addressfield(8bits)、Controlfield(8bits)、Datafield(kbits)、Framecheck(16bits)、Endflag(01111110)744)物理标准

通信速率串行通信接口标准信号的调制和解调754)物理标准 通信速率波特率:bits/S,波特,与距离成反比100,300,600,1200,2400,4800,9600,1920076

串行通信接口标准:EIARS-232C

控制信号的定义77

串行通信接口标准:RS-232C

信号电平标准:采用负逻辑78信号电平标准:采用负逻辑TTL与RS-232电平变换

接口

1489

1488

1489

1488

接口

TTLTTLTTLTTL

RS-232

RS-232

79RS-232连接器连接方式80信号的调制和解调长距离传输时传输介质频带限制把发送代码调制成正弦波调频 FrequencyModulation 1:2100Hz 0:1070Hz调相移Frequency–ShiftKeying81

信号的调制和解调

长距离传输82几种可编程串行接口芯片随着大规模集成电路技术的发展,生产微处理器芯片的公司,纷纷推出可编程的支持异步规程或同步规程的接口芯片。下表列出几种串行接口芯片。这些芯片都是可编程的,用芯片构成串行通信接口,只需附加地址译码器和数据驱动器、波特率发生器以及电平转换器等简单电路。有的芯片,例如INS8250芯片内还集成了波特率发生器,用它组成串行接口适配器时、电路结构更简单。83下表列出几种串行接口芯片PC机84第2节:可编程串行通信接口8251 1)功能与结构

2)8251的编程

3)8251的应用

851)功能与结构-8251的基本性能可用于同步或异步传送同步传送时,每字符可选5~8bits;可内或外同步;能自动插入同步字符。异步传送时,每字符可选5~8bits;接收与发送时钟为通讯波特率的1、16或64倍。可产生中止字符(BreakCharacter)并能自动检测和处理;可产生1、1.5或2bit的停止位;可检测出假启动信号。波特率,同步时最高64K波特;异步时最高19.2K波特。完全双工,双缓冲的发送器与接收器检错能力,具有奇偶错、数据丢失错和帧错误的检测能力。全部入/出信号均为正常TTL电平。

861)8251的功能与结构Intel8251的结构见图,为28条管脚双列直插封装。

从8251的结构图上看到它的5个组成部分,即接收器、发送器、调制解调控制、读/写控制,以及几个缓冲器。缓冲器又可细划为状态缓冲器,发送数据/命令缓冲器,和接收数据缓冲器3部分。871)8251的引脚安排D7~D0

(接外部数据总线)TXD——数据发送引脚,在不发送数据时一般为高电平,但是通过发送终止字符可以使其为低电平。/TxC

控制数据发送速率的时钟输入引脚,在发送数据时,TXD引脚在的每个下降沿移出一位数据。在同步方式下,数据传送速率等于的CLK频率,而在异步方式下,通过方式指令字可以选择数据传送速率为CLK频率的1、1/16或1/64。888251的引脚安排TXRDY—发送器准备就绪引脚,当TXRDY为高电平时指示发送缓冲器已空,微处理器可以写入新的数据,写信号上升沿引脚变低。引脚由TXEN控制,TXEN=0时TXRDY维持低电平。TXRDY通常作为中断请求信号,而TXEN可以看成是中断屏蔽位;8251A的状态字中也有一位TXRDY,与TXRDY引脚的区别是不受和TXEN的控制,在查询输入/输出方式中,微处理器查询该状态位来判断是否可以传送数据。89发送引脚TXEMPTY——发送缓冲器已空引脚,当发送缓冲器中的数据发送完毕,该引脚为高电平。当微处理器向发送缓冲器写入数据时,写信号上升沿使TXEMPTY变低。在同步方式下,若TXEMPTY为高电平,表示当前没有数据可供发送,则8251A自动发送同步字符。90接收引脚SYNDET—同步字符检测引脚。SYNDET既可以作为输入引脚也可以作为输出引脚。8251A复位后,SYNDET为低电平。内同步时,当在RxD线上检测到同步字符后,SYNDET输出高电平。外同步时,SYNDET为输入。当外设完成同步字符检测后,向此引脚输入一个正跳变信号,使得8251A在下一个j接收时钟的下降沿开始装配字符。91接收引脚①RxD——数据接收引脚,8251A在/RxC的每个上升沿采样RxD引脚。②/RxC——控制数据接收速率的时钟输入引脚,控制数据接收速率的方式与/TxC相同,在实际使用时/RxC与/TxC通常接在一起。③RxRDY——接收器准备就绪引脚,当RxRDY为高电平时,指示8251A的数据缓冲器中已经有接收到的数据,可供微处理器读出,并且由读信号的上升沿复位。如果在RxRDY信号有效的情况下微处理器没有及时取走数据,新接收的数据会覆盖数据缓冲器中原有数据,造成溢出错误,并且使状态字中的溢出错误标志OE置位。RXRDY可以作为中断请求信号,也可以作为状态信号供微处理器查询92调制解调器控制电路(1)/DTR(DataTerminalReady)——数据终端准备就绪引脚(输出,低电平有效),通过命令指令字可以使该引脚输出低电平,通知调制解调器当前微处理器已经准备就绪。(2)/DSR(DataSetReady)——数据设备准备就绪引脚(输入,低电平有效),当为低电平时,通知微处理器当前调制解调器已经准备就绪。由于该信号是输入给8251A的,微处理器需要读取8251A的状态字来检测该信号,以了解调制解调器当前的状态。(3)/RTS(RequestToSend)——请求发送引脚(输出、低电平有效),通过命令指令字可以使该引脚输出低电平,通知调制解调器当前微处理器已经准备好发送。(4)/CTS(ClearToSend)——清除发送引脚(输入,低电平有效),当为低电平时,表示调制解调器已经允许8251A发送数据。93时钟信号8251时钟信号:系统时钟CLK的周期要在0.32ms-1.35ms范围内。在异步方式下,应大于发送/接收时钟/TxC、/RxC的4.5倍。接收时钟/RxC和发送时钟/TxC的频率可为接收与发送数据的波特率的1、16或64倍。8251在/RxC的上升采样数据,数据在/TxC的下降沿由8251移位输出。8251工作于异步方式,可选用CLK为1.8432MHz/2,即921.6KHz。发送与接收数据的波特率均为9600,/TxC和/RxC的频率为波特率的16倍。这时系统时钟频率为/TxC、/RxC

的16倍。942)8251的编程机构8251A的内部可编程寄存器包括方式指令字寄存器和命令指令字寄存器。方式指令字规定了8251A的工作方式,命令指令字可以对8251A进行实时控制,而在同步方式中,需要写入在传送数据时使用的同步字符。方式指令字必须在复位后首先写入,而且只能写入一次,若改变8251A的工作方式,则必须先通过命令指令字使8251A复位。在写入方式指令字后才可以写入命令指令字和同步字符,并且可多次写入95(1)方式指令字波特率分别是时钟频率的1、1/16和1/6496(2)命令指令字97(3)状态字TE、OE和PE分别反映数据传送中的三种错误,由硬件自动监测,微处理器只有读取状态字才能知道数据传送过程中是否有错误发生。98例如,若要查询8251A接收器是否准备好,则可用下列程序段完成:MOVDX,0F2H ;状态口LOPP:INAL,DX;读状态口ANDAL,02H ;查RxRDY=1?JZLOPP ;未准备好,则等待MOVDX,0F0H ;数据口INAL,DX ;已准备好则读取数据998251A的读写操作方式(寻址)C/操作1XXX引脚D7~D0呈高阻态0X11引脚D7~D0呈高阻态0001向8251A中写入数据0010从8251A中读出数据0101向8251A中写入指令字0110从8251A中读出状态字

C=COMMAND:三个寄存器D=DATA:TxBUF&RxBUF1008251A的初始化与编程8251在初始化编程时,首先使芯片复位,第一次向控制端口(奇地址)写入的是方式字;如果是同步方式,接着向奇地址端口写入的是同步字符,若有2个同步字符,则分2次写入;以后不管是同步方式还是异步方式,只要不是复位命令,当A0接C/D#时,由CPU向奇地址端口写入的是命令控制字,向偶地址端口写入的是数据。在写入命令指令字后,若IR=1,则引起内部复位,又回到流程的开始,可以重新写入方式指令字。101初始化流程奇地址偶地址102同步方式初始化程序1下面是设置8251A为同步方式的初始化程序,8251A的C/D引脚接在地址总线的A0上,写指令字的端口地址为51H。

MOV DX,51H

;设置端口地址

MOV AL,10111000H;写入方式指令字

OUT DX,AL;同步方式,7位数据,偶校验

MOV AL,16H;使用一个同步字符,为16H OUT DX,AL MOV AL,97H;写入命令字:启动发送器、接收器

OUT DX,AL;复位错误标志,搜索同步字符103同步方式初始化程序28251A的C/D引脚接在地址总线的A1上,

指令字的端口地址为52H,数据为50H。

MOVDX,52H; 设置端口地址

MOVAL,40H; 复位8251A

OUTDX,AL

MOVAL,38H; 写入方式指令字

OUTDX,AL; 同步方式,7位数据,偶校验

MOVAL,0FFH; 使用2个同步字符0xFF

OUTDX,AL

OUTDX,ALMOVAL,97H; 写入方式指令字:启动收发器、接收器

OUTDX,AL; 复位错误标志,搜索同步字符

104异步方式初始化程序;写入方式指令字:异步方式,7位数据,波特率因子1,偶校验,1个停止位MOV AL,79HOUT 51H,AL;写入命令指令字;启动发送器、接收器,;复位错误标志MOV AL,35HOUT 51H,AL105第3节6.5.38251A的综合应用图6.32是利用8251A形成RS-232C串口的接口电路,8251A实现了串行数据的发送和接收,电路1488和1499用于实现信号的TTL电平与RS-232电平的相互转换。设8251A的控制和状态端口地址为52H,数据输入和输出端口地址为50H。106下面分析利用8251A接收80个字符后,放在BUFFER标号所指的内存缓冲区中的程序设计方法。【解】下面的程序段先对8251A进行初始化,然后对状态字进行测试,以便输入字符。具体的程序段如下:MOVAL,0FAH;11111010B;设置方式指令字,异步方式,波特率因子16;7个数据位,2个停止位,偶校验OUT52H,ALMOVAL,35H;00110101B;设置命令指令字,使发送器和接收器启动,OUT52H,AL;并清除出错指示位MOVDI,0 ;变址寄存器初始化MOVCX,80;计数器初始化,共收取80个字符1107异步接收BEGIN:INAL,52H

;读取状态字,测试RxRDY位是否为1,如为0,TESTAL,02H ;如果未收到字符,故继续读取状态字并测试JZBEGININAL,50H

;读取字符MOVDX,OFFSETBUFFERMOV[DX+DI],ALINCDI ;修改缓冲区指针INAL,52H ;读取状态字TESTAL,38H ;测试有无帧校验错,奇/偶校验错和JZERROR ;溢出错,如有,则转出错处理程序L00PBEGIN ;如没错,则再收下一个字符

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论