第6章 数字量输入输出接口 西安交通大学计算机系 桂小林 2011年4月23日
目录 6.1 并行接口的概念 6.2并行接口控制芯片8255A 6.3 数字量并行接口的应用 6.4 数字量串行接口及芯片8251A 6.5 光电隔离输入输出接口 微机接口技术,桂小林
概述 数字量输入输出接口包括数字量输入和数字量输出两大部分。 数字量是计算机能够直接识别和处理的信号。输入输出系统中的主要数字量包括开关量输入和输出。所以数字量又称为开关量。 本章主要介绍数字量并行输入输出接口、数字量串行输入输出接口以及光电隔离的输入输出接口。 微机接口技术,桂小林
6.1 并行接口的概念 并行接口通信就是把一个字符的各位同时用几根线进行传输。 并行通信用在传输速率要求较高,而传输距离较短的场合。 图6-1给出了数据总线进行并行通行的例子。 1 D0 D1 D2 D3 D4 D5 D6 D7 目 的 源 图6-1 数据总线进行并行通行的例子 微机接口技术,桂小林
6.2并行接口控制芯片8255A 8255A是Intel公司生产的可编程并行接口芯片,它有多种工作方式可以进行选择,并且通常无需外围电路,使用方便而且广泛 。 6.2.1 8255A的编程结构 6.2.2 8255A的引脚功能 6.2.3 8255A的控制字 6.2.4 8255A的工作方式 微机接口技术,桂小林
6.2.1 8255A的编程结构 8255A的逻辑结构如图6-2所示,主要包括三个并行的输入/输出端口A、B和C,A组和B组的控制电路,数据缓冲器以及读写控制逻辑等部分。 为了与A组和B组进行区分,以下将端口A、B和C称为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位并行输入或输出,也可以按位操作,具有更大的灵活性。 微机接口技术,桂小林
A组和B组的控制电路接收由读写控制逻辑获得的控制字,分别对A组和B组的工作方式进行控制,因此A组和B组可以工作在不同方式下。 在配合端口PA和PB工作时,端口PC被分为两部分,高4位(PC7 ~ PC4)与端口PA一起构成了A组,而低4位(PC3 ~ PC0)与端口PB一起构成了B组。 A组和B组的控制电路接收由读写控制逻辑获得的控制字,分别对A组和B组的工作方式进行控制,因此A组和B组可以工作在不同方式下。 微机接口技术,桂小林
(3)数据缓冲器 双向、三态的数据缓冲器是8255A与数据总线的接口,微处理器可以通过它向三个I/O端口写入或读出数据,或者写入控制字以选择8255A的工作方式。 (4)读写控制逻辑 读写控制逻辑电路负责管理8255A的数据传输过程,实现8255A内部和外部的数据、控制字的传送。它根据地址、控制信号(复位信号、读写信号和片选信号等)的组合来决定将微处理器发送的控制字传送给A组或B组的控制电路,或者选择输入或输出数据到PA、PB和PC口。 微机接口技术,桂小林
6.2.2 8255A的引脚功能 1.面向CPU的引脚信号及功能 D0-D7:8位,双向,三态数据线,用来与系统数据总线相连; RESET:复位信号,高电平有效,输入,用来清除8255A的内部寄存器,并置A口,B口,C口均为输入方式; A1,A0:内部口地址的选择,输入。这两个引脚上的信号组合决定对8255A内部的哪一个口或寄存器进行操作 微机接口技术,桂小林
2.面向外设的引脚信号及功能 PA0~PA7:A组数据信号,用来连接外设;具有输入、输出锁存功能,可以作为单向或双向信号线使用。 PB0~PB7:B组数据信号,用来连接外设;具有输出锁存功能,仅可以作为单向信号线使用。 PC0~PC7:C组数据信号,用来连接外设或者作为控制信号。具有输出锁存功能,仅可以作为单向信号线使用。 微机接口技术,桂小林
6.2.3 8255A的控制字 1.方式控制字(控制口) 微机接口技术,桂小林
2.C口置位/复位控制字(控制口) 注意:这里必须使用控制口操作PC口 微机接口技术,桂小林
例如,某系统要求使用8255A的C口的PC5输出一个由高到低的跳变。可以通过两种方式设置。 如下页 微机接口技术,桂小林
方法一:采用普通方式设置PC为输出,然后置位/复位PC5,具体程序段如下: MOV DX,控制口 MOV AL,1 00 0 0 X X XB ;选择PC高位输出,方式0 OUT DX,AL ;控制字设置 MOV DX,PC端口 MOV AL,XX 1 XXXXX B;即PC5设置为高电平输出 OUT DX,AL ;PC5置0(低电平) MOV AL,XX 0 XXXXX B;即PC5设置为低电平输出 微机接口技术,桂小林
方法二:采用置位/复位PC口方式,具体程序段如下: MOV DX,控制口 MOV AL,0 000 101 1B ;即0BH,选择PC5,置位 OUT DX,AL ;PC5置1(高电平) MOV AL,0 000 101 0B ;即0AH,选择PC5,复位 OUT DX,AL ;PC5置0(低电平) 微机接口技术,桂小林
3、8255A的状态字 8255A无状态寄存器,在方式1和方式2时,可以用端口C兼作状态用。 微机接口技术,桂小林
6.2.4 8255A的工作方式 1.方式0 方式0称为基本输入/输出方式,适合在同步传输(无条件传输)和程序查询方式下工作,CPU通过软件方式确认外设状态,与外设交换数据,因而不适合在实时性要求高的应用环境。 在方式0中,PA、PB和PC相互独立工作,PC又分为高4位和低4位两个独立的部分,通过控制字可以将这四部分任意选择为输入或输出,共有16种组合。 微机接口技术,桂小林
初始化实例 例如,某系统要求使用8255A的C口的PC4输出一个由高到低的跳变。写出8255A的方式控制字和初始化程序段。 【解】由于本例不关心PA和PB的工作方式,所以不用考虑设置8255A的方式控制字。 为了实现PC4输出一个由高到低的跳变,需要PC4先输出一个高电平,然后输出一个低电平。 方法一: 采用普通方式设置PC为输出,然后设置PC4(1,0),具体程序段如下: MOV DX,控制口 MOV AL,1 00 0 X X XB ;选择PC高位输出,方式0 OUT DX,AL ; MOV DX,PC口 MOV AL,XXX 1 XXXX B ;即PC4设置为高电平输出 OUT DX,AL ;PC4置1(高电平) MOV AL,XXX 0 XXXX B ;即PC4设置为低电平输出 OUT DX,AL ;PC4置0(低电平) 微机接口技术,桂小林
为了实现PC4输出一个由高到低的跳变,需要PC4先输出一个高电平,然后输出一个低电平。 方法2: 采用置位/复位PC口方式,具体程序段如下: MOV DX,控制口 MOV AL,0 000 100 1B ;即09H,选择PC4,置位 OUT DX,AL ;PC4置1(高电平) MOV AL,0 000 100 0B ;即08H,选择PC4,复位 OUT DX,AL ;PC4置0(低电平) 对于PC口可以采用两种方法之一,方法二简单。 对应PA和PB口,只能采用方法一,不能使用方法二。 特别注意:方法二对控制口进行,不是PC端口。 微机接口技术,桂小林
而C口则要有6位(分成两个3位)分别作为A口和B口的应答联络线,其余2位仍可工作在方式0,可通过编程设置为输入或输出。 2.方式1 方式1是一种选通I/O方式,A口和B口仍作为两个独立的8位I/O数据通道,可单独连接外设,通过编程分别设置它们为输入或输出,输入输出均具有数据锁存功能。 而C口则要有6位(分成两个3位)分别作为A口和B口的应答联络线,其余2位仍可工作在方式0,可通过编程设置为输入或输出。 微机接口技术,桂小林
(1)方式1的输入组态和应答信号的功能 图6-7给出了8255A的A口和B口在方式1的输入组态图。C口的PC3-PC5用作A口的应答联络线,PC0-PC2则作用B口的应答联络线,余下的PC6~PC7还可作为方式0使用。 微机接口技术,桂小林
方式1输入组态的应答联络线 微机接口技术,桂小林
微机接口技术,桂小林
方式1的输出组态和应答信号 微机接口技术,桂小林
微机接口技术,桂小林
微机接口技术,桂小林
3.方式2 方式2为双向选通I/O方式,只有A口才有此方式。 这时,C口有5根线用作A口的应答联络信号,其余3根线可用作方式0,也可用作B口方式1的应答联络线。 方式2就是方式1的输入与输出方式的组合,各应答信号的功能也相同。 而C口余下的PC0~PC2正好可以充当B口方式1的应答线,若B口不用或工作于方式0,则这三条线也可工作于方式0。 微机接口技术,桂小林
方式2为双向选通I/O方式 中断请求 输出缓冲器满 输出应答(外设读走数据) 输入选通(外设准备好了数据) 输入缓冲器满(8255已经收到数据) 作为普通输入输出(方式0) 微机接口技术,桂小林
6.3.1 七段数码管接口 6.3.2 非编码键盘接口 6.3.3并行打印机接口 6.3 并行接口的应用 本节介绍8255A的典型应用,包括8255A与LED的接口、8255A与非编码键盘的接口、8255A与并行打印机的接口。 6.3.1 七段数码管接口 6.3.2 非编码键盘接口 6.3.3并行打印机接口
6.3.1 七段数码管接口 1、单个LED与8255A的接口 2、多个LED与 8255A的接口 微机接口技术,桂小林
七段数码管 数码显示管(LED)是一种简单的显示输出设备,通常作为仪器、仪表的显示器,用于显示数字或少数字符。 图6.13给出了一种七段式数码管的内部结构。 微机接口技术,桂小林
显示不同数字和字符时,七段数码管需要点亮的二极管位置不同。如,显示数字“3”,需要点亮a、b、c、d和g四段发光二极管。 表6-2给出了图6.13所示结构的七段数码管实现数字0~9以及字符A~F时,需要发光的二极管段。 微机接口技术,桂小林
显示的 数字 发光的段 字符 abcdef 5 afgcd A abcefg F aefg 1 bc 6 afgcde b abcdefg abcdef 5 afgcd A abcefg F aefg 1 bc 6 afgcde b abcdefg q abcfg 2 abged 7 abc C adef – g 3 abgcd 8 d bcdeg = gd 4 fgbc 9 abcdfg E adefg P abefg 微机接口技术,桂小林
1、单个七段数码管与8255A的接口 8255A与单个数码管的接口电路如图6.14所示。 共阳 微机接口技术,桂小林
根据题意,当在PB0上输出低电平时,LED的a段二极管发光,输出高电平时,LED的a段二极管熄灭。其它各段发光的方法依次类推。 该数码管由8个发光二极管构成,对外引脚共9个,分别是a、b、c、d、e、f、g、dp和公共引脚,采用共阳极结构。除Vcc外,每个引脚外接1个460欧姆的电阻,然后连接到8255A的PB口的PB0~PB7上。 根据题意,当在PB0上输出低电平时,LED的a段二极管发光,输出高电平时,LED的a段二极管熄灭。其它各段发光的方法依次类推。 微机接口技术,桂小林
首先,分析图中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段),PB7=1(DP段),写出字节的形式就是10100100B,即0A4H。 这种为确定显示字符而确定的CPU需要送出的控制数值,称为LED段码或字形码。 表6-3给出了全部16进制数字字符的LED段码。 微机接口技术,桂小林
显示数符 发光段 LED段码 abcdef C0H A abcefg 88H 1 bc F9H b cdefg 2 abged A4H C abcdef C0H A abcefg 88H 1 bc F9H b cdefg 2 abged A4H C adef 3 abgcd B0H d bcdeg 4 fgbc 99H E adefg 5 afgcd 92H F aefg 6 afgcde 82H q abcfg 7 abc E8H – g 8 abcdefg 80H = gd 9 abcdfg 9F P abefg 微机接口技术,桂小林
在上例中,采用共阳LED,低有效驱动显示,如果要求先显示数字“3”,然后显示数字“6”,写出程序段。 【解】先分析数字“3”和数字“6“显示时的LED段码,分别为:0B0H和82H,然后写出程序段如下: MOV DX, 8255控制口 MOV AL, 1 000 0 00 0B ;80H,8255A初始化B口方式0,输出 OUT DX,AL MOV DX,8255PB口 MOV AL,0B0H ;“3”的段码 OUT DX,AL ;显示“3” CALL DELAY20MS ;延时 MOV AL,82H ;“6”的段码 OUT DX,AL ;显示“6” 微机接口技术,桂小林
2、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。 微机接口技术,桂小林
在这种有多个数码管的情况下,通常采用动态扫描的方式来控制数码管的显示,其过程是首先使PC0输出高电平,而PC1 ~ PC7输出低电平,选中数码管U0,然后由PA口根据要显示的第一个数字输出8位数据(称为段码或字形码),尽管段码同时到达8个数码管的段选线,但只有U0能够显示,因此将第一个数字显示在U0上。 微机接口技术,桂小林
为了能够获得较好的显示效果,每个数码管的扫描时间需要选取恰当,时间太长会造成闪烁现象。 在这种有多个数码管的情况下,通常采用动态扫描的方式来控制数码管的显示,其过程是首先使PC0输出高电平,而PC1 ~ PC7输出低电平,选中数码管U0,然后由PA口根据要显示的第一个数字输出8位数据(称为段码或字形码),尽管段码同时到达8个数码管的段选线,但只有U0能够显示,因此将第一个数字显示在U0上。 这种状态维持2m后,接下来使PC1输出高电平,而其它7位输出低电平,可以在数码管U1上显示第二个数字。以此类推,周而复始,就可以使8个数码管同时显示8位数字。上述动态扫描过程利用了视觉暂留现象。 为了能够获得较好的显示效果,每个数码管的扫描时间需要选取恰当,时间太长会造成闪烁现象。 微机接口技术,桂小林
求解过程-第1阶段:设置段码表 PA位 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 DB位 D7 D6 D5 D4 D3 D2 D1 D0 段 a b c d e f g dp 段码 1 FCH 60H 2 DAH 3 F2H 4 66H 5 B6H 6 BEH 7 E0H 8 FEH 9 F6H A EEH 本例由于采用共阴LED,而且LED引脚和PA口的连接顺序不同(引脚a、b、c、d、e、f、g、dp分别对应PA口的PA7~0),因而得到的段码(字形码)不同。 微机接口技术,桂小林
第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个数字,作为查找下表的偏移量使用 微机接口技术,桂小林
第3阶段:设计8个LED轮流显示的完整程序 // 初始化8255A MOV AL,10000000B ;PA、PC均为方式0, 输出 MOV DX,PORTCTL ;8255A控制口 OUT DX,AL BEGIN:MOV CX,8 ;循环8次 MOV DI,Offset DisBuff MOV BX,Offset SegCodeTab MOV SI,0 MOV AH,00000001B ;PC0设置为1,选中第一个LED 微机接口技术,桂小林
MOV AH,00000001B ;PC0设置为1,选中第一个LED SCAN:MOV AL,AH ;使PC口相应位置位 MOV DX,PORTC ;MOV DX,PORTCTL ;C口位控时的指令 OUT DX,AL ;使PC口相应位置位 ADD DI,SI ;查找显示缓冲区 MOV DX, [DI] ;取出要显示的数字符 MOV AL,[BX+ DX] ;取出显示字符的段值(字形码) INC SI ;下一个要显示字符的偏移量 MOV DX,PORTA ;PA口输出字形码 OUT DX,AL CALL DELAY2MS SHL AH,1 ;为显示下一个数码管做准备 ;ADD AH,2 ;C口位控时,为显示下一个数码管做准备 LOOP SCAN JMP BEGIN ;重复显示 微机接口技术,桂小林
6.3.2 非编码键盘接口 键盘根据实现方法可以分为编码键盘和编码键盘非两种。编码键盘是指可以直接提供按键编码(如ASCII码)的键盘。 为了能够提供按键编码,编码键盘内部需要有键盘扫描电路,这些硬件电路能够检测是否有键按下,并根据按下的是哪一个键而输出其编码。 比如经常使用的PC机键盘,其内部专门设有一个单片机进行键盘检测和处理。 非编码键盘只有按键而无扫描电路,这些按键它由多个开关组合而成。 微机接口技术,桂小林
16个键的键盘 对于大多数的键盘,按键被排成行和列的矩阵。下面以机械式开关构成的16个键的键盘为例(如图6-16所示),来讨论键盘接口的工作原理,这种原理对采用其它类型的开关的键盘也是适用的。 微机接口技术,桂小林
分析 设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口状态时,可同时读取键盘的行列信号。 微机接口技术,桂小林
16个按键的扫描码 例如,对于数字0,它位于3行、3列,压下“0”键时,从B口可读得D7位和D3位为0,其余位为1,所以数字0的编码为01110111B,即77H;对于数字6,处于2行1列,压下‘6’键时,D6位和D1位0以其余位为1,所以数字6的编码为10111101B=BDH。 按键 1 2 3 4 5 6 7 扫描码 77H 7BH 7DH 7EH 0B7H 0BBH 0BDH 0BEH 8 9 A B C D E F 0D7H 0DBH 0DDH 0DEH 0E7H 0EBH 0EDH 0EEH 微机接口技术,桂小林
确定程序流程 包括键盘检测、去抖动、键值编码和确定键名等。具体流程如下: (1) 检测是否所有键都松开了,若没有则反复检测(该步可省去)。当所有键都松开了,转(2); (2) 检测是否有键压下,若无键压下则反复检测。 (3) 若有键压下,则通过延迟20ms消除键抖动,如果该键还按下,则继续判断是哪个键按下,否则,继续检测。 (4) 对压下的键进行编码,将该键的行列信号转换成16进制码,由此可确定哪个键被压下了。 如出现多键重接的情况,只有在其它键均释放后,仅剩一个键闭合时,才把此键当作本次压下的键。 (5) 该键释放后,再回到(2)。 微机接口技术,桂小林
给出具体程序 首先给出该8255A的端口地址(这里是假设,实际系统根据地址译码确定),具体为: 然后确定程序出口,具体参数为: PORTA EQU 0FF9H ;8255 A口地址 PORTB EQU 0FFBH ;8255 B口地址 PORTCTL EQU 0FFFH ;8255控制口地址 然后确定程序出口,具体参数为: 若返回值AH=0,表示已读到有效的键值,并在AL中存有0~F键的16进制代码; 若返回值AH=l,则表示出错。 最后给出程序段,包括注释与说明。 微机接口技术,桂小林
给出具体程序 等待全部按键释放 本 段 程 序 可 以 省 略 微机接口技术,桂小林
给出具体程序 本段程序检查是否有键按下? 微机接口技术,桂小林
IN AL,DX CMP AL,77H JZ Key0 CMP AL,7BH JZ Key1 … … 本段程序检查哪一个键按? 本段程序编码并查表 从按键F开始查表,直到按键0。 如果按键较少,则不用查表,根据编码转去直接处理 微机接口技术,桂小林
按键 1 2 3 4 5 6 7 扫描码 77H 7BH 7DH 7EH 0B7H 0BBH 0BDH 0BEH 8 9 A B C D E F 0D7H 0DBH 0DDH 0DEH 0E7H 0EBH 0EDH 0EEH 从上面键盘接口例子我们可以看到,为了要及时发现键盘中的按键是否按下,CPU必须定时或不断地利用软件(即上述扫描程序)对键盘进行扫描,这样CPU的开销太大,降低了CPU的工作效率。为此有关厂家专门开发了、用于键盘接口的大规模集成电路芯片,例如Intel 8279、SSK814。 微机接口技术,桂小林
键盘实例 差分 微机接口技术,桂小林
6.3.3并行打印机接口 并行打印机接口(LPT)在不同PC系列机型中,以不同的形式出现。 在PC/XT机中是以I/O扩展槽上的IBM并行打印机适配器板出现,在AT机中是以插在I/O扩展槽上的 IBM并行口/串行口适配器板出现。 现在的LPT则集成在主板上,随着计算机的快速发展,LPT接口的使用频率在下降,代之而起的是基于USB接口的打印机的广泛使用。 但作为打印机的主要接口之一,本节有必要进行介绍与讲述。 微机接口技术,桂小林
Centronics总线标准 在并行打印机中,设置有36引脚的Centronics总线标准插座。打印机与PC通过36芯-25芯电缆连接到PC的25芯D型连接器LPT上。它的25个引脚所代表的信号可分为:数据信号、状态信号和控制信号三类。 表6-6给出了Centronic总线引脚及其功能说明。 微机接口技术,桂小林
Centronic 总线引脚 及功能说明 Centronic 总线时序 微机接口技术,桂小林
例如,已知某微型英文打印机的接口信号如下,信号间的时序关系如图6-17所示。其中: (1) STB#:输入打印机的选通信号(5ms负脉冲),用来把数据打入打印机数据缓冲器; (2)INIT# :初始化打印机信号(5ms负脉冲); (3) BUSY:打印机发出的状态信息(“忙”信号),BUSY有效(高电平)时,表示打印机现在不能接收数据,BUSY无效(低电平)时,表示打印机正处于空闲(准备好)状态,可以接收数据。 (4) DATA0~DATA7:送往打印机的打印数据,在英文字符打印机中,DATA0~DATA7上传输的是要打印的字符的ASCII码。 微机接口技术,桂小林
现在将英文打印机连接到8255A芯片上,8255A连接到PC/XT总线上,如图6-18所示。已知有5ms延迟程序Delay5ms可供调用。 微机接口技术,桂小林
解答下列问题: (1)分析图中的译码电路,给出8255A的PA、PB、PC和方式控制字的端口地址(用16进制表示); (2)给出8255A的方式控制字(用16进制表示),写出初始化8255A的程序段; (3)完成判断打印机忙的程序段; (4)完成下面的打印一个字符“A”的程序段。 微机接口技术,桂小林
【解】 (1)由图6-18的地址译码电路分析可知,8255A的片选信号连接到74LS138芯片的Y2上,即当Y2为低电平时选中8255A芯片。而74LS138的Y2为低电平的条件是:A9A8=11,A7A6=01,A4A3A2=010,A5为任意值。 根据上述分析,8255A的PA口地址为: 11 01X0 1000B,即348H或368H。 由此可得,8255A的PA、PB、PC和控制口的端口地址分别为: 348H或368H,349H或369H,34AH或36AH,34BH或36BH。 微机接口技术,桂小林
解: (2)按照题意,8255A的PA为输入(或输出),PB为输出,PC的低4位为输出,高4位为输入。由此可得8255A的方式字的值为98H。 下面是初始化8255A的程序段: MOV DX,34BH或36BH MOV AL,98H OUT DX,AL (3)下面是判断打印机忙的程序段; MOV DX,34AH ;或36AH,C口 BUSY: IN AL,DX TEST AL,40H; 检测PC6 JNZ BUSY 微机接口技术,桂小林
微机接口技术,桂小林
方式1时打印机连接 上面的例子给出的是8255A工作于方式0的例子。但在实际应用中,打印机与8255A可以方便实现方式1的连接,即由硬件判断打印机忙状态,通过中断方式进行打印数据发送。 图6.19所示,微型打印机的接口由8255A的A组实现,采用工作方式1、输出方式。根据方式1的时序关系,微处理器将数据写入PA口并由其引脚输出后,PC7输出信号,这正好作为数据选通信号将数据送入打印机,打印机完成接收操作后用信号指示8255A,随后8255A产生中断请求信号通知微处理器可以输出下一个数据。 微机接口技术,桂小林
中断向量填写 中断服务程序 [0+?*4] [0+?*4+2] 发送1个ASCII码到PA MOV DX,PA MOV AL,字符的ASCII码 OUT DX,AL 微机接口技术,桂小林
作业 P292 1、6、10 微机接口技术,桂小林
6.4 串行接口的基本概念 第1节: 串行通信基础 第2节: 可编程串行接口芯片-8251 第3节: 8251的串行异步通信的应用 第4节: PC系列串行异步通信接口 第5节: BIOS串行异步通信口的功能调用 2017年3月20日星期一修改 微机接口技术,桂小林
第1节:串行通信基础 1)串行通信的物理连接 2)串行通信类型和数据位鉴别方式 3)串行通信协议 4)串行通信的物理标准 微机接口技术,桂小林
1)串行通信物理连接方式 微机接口技术,桂小林
2) 串行通信的类型和数据位的检测方式 串行异步通信格式 一帧字符用起始位和停止位同步 微机接口技术,桂小林
2) 串行通信的类型和数据位的检测方式 串行同步通信格式 用同步字符完成同步 微机接口技术,桂小林
串行通信数据位的检测 时钟周期 :Tc 数据位间隔:Td Tc = Td / K K:波特率因子(16,32,64) 微机接口技术,桂小林
3)串行通信协议 ① 异步通信协议 ② 同步通信协议 微机接口技术,桂小林
① 异步通信数据格式 微机接口技术,桂小林
② 串行同步通信协议 BISYNC(Binary Synchronous Communication): SYN(1或多)、STX(起始控制符)、DATA FIELD(100或更多字节)、ETX(结束控制符)、BCC(块校验字符)、PAD(帧结束FFH) 微机接口技术,桂小林
② 串行同步通信协议 SDLC(Serial Data Link Control): IBM 用于计算机网络中 ② 串行同步通信协议 SDLC(Serial Data Link Control): IBM 用于计算机网络中 SYNC(Flag byte 01111110)、Address field(8bits)、Control field(8bits)、Data field(k bits)、Frame check(16 bits)、End flag(01111110) 微机接口技术,桂小林
4)物理标准 通信速率 串行通信接口标准 信号的调制和解调 微机接口技术,桂小林
4)物理标准 通信速率 波特率:bits / S , 波特,与距离成反比 100,300,600, 1200,2400,4800, 4)物理标准 通信速率 波特率:bits / S , 波特,与距离成反比 100,300,600, 1200,2400,4800, 9600,19200 微机接口技术,桂小林
串行通信接口标准:EIA RS-232C 控制信号的定义 微机接口技术,桂小林
接口 接口 信号电平标准: 采用负逻辑 TTL TTL 1489 1488 TTL TTL 1488 1489 TTL与RS-232电平变换 微机接口技术,桂小林
RS-232连接器连接方式 微机接口技术,桂小林
信号的调制和解调 长距离传输时传输介质频带限制 把发送代码调制成正弦波 调频 Frequency Modulation 1:2100Hz 调相 调幅 微机接口技术,桂小林
信号的调制和解调 长距离传输 微机接口技术,桂小林
几种可编程串行接口芯片 随着大规模集成电路技术的发展,生产微处理器芯片的公司,纷纷推出可编程的支持异步规程或同步规程的接口芯片。下表列出几种串行接口芯片。 这些芯片都是可编程的,用芯片构成串行通信接口,只需附加地址译码器和数据驱动器、波特率发生器以及电平转换器等简单电路。 有的芯片,例如INS 8250芯片内还集成了波特率发生器,用它组成串行接口适配器时、电路结构更简单。 微机接口技术,桂小林
下表列出几种串行接口芯片 PC机 微机接口技术,桂小林
第2节:可编程串行通信接口 8251 1) 功能与结构 2) 8251的编程 3) 8251的应用 微机接口技术,桂小林
1)功能与结构-8251的基本性能 可用于同步或异步传送 同步传送时, 每字符可选5~8 bits; 可内或外同步; 能自动插入同步字符。 可产生中止字符 (Break Character) 并能自动检测和处理; 可产生1、1.5或2 bit的停止位; 可检测出假启动信号。 波特率, 同步时最高64 K波特; 异步时最高19.2 K波特。 完全双工, 双缓冲的发送器与接收器检错能力, 具有奇偶错、数据丢失错和帧错误的检测能力。 全部入/出信号均为正常TTL电平。 微机接口技术,桂小林
Intel 8251的结构见图,为28条管脚双列直插封装。 从8251的结构图上看到它的5个组成部分, 即接收器、发送器、调制解调控制、读/写控制, 以及几个缓冲器。 1)8251 的功能与结构 缓冲器又可细划为状态缓冲器, 发送数据/命令缓冲器, 和接收数据缓冲器3部分。 微机接口技术,桂小林
1)8251 的引脚安排 D7~D0 (接外部数据总线) TXD——数据发送引脚,在不发送数据时一般为高电平,但是通过发送终止字符可以使其为低电平。 /TxC 控制数据发送速率的时钟输入引脚,在发送数据时,TXD 引脚在的每个下降沿移出一位数据。 在同步方式下,数据传送速率等于的CLK频率, 而在异步方式下,通过方式指令字可以选择数据传送速率为CLK频率的1、1/16或1/64。 微机接口技术,桂小林
8251 的引脚安排 TXRDY—发送器准备就绪引脚,当TXRDY为高电平时指示发送缓冲器已空,微处理器可以写入新的数据,写信号上升沿引脚变低。 引脚由TXEN控制,TXEN=0时TXRDY维持低电平。 TXRDY通常作为中断请求信号,而TXEN可以看成是中断屏蔽位; 8251A的状态字中也有一位TXRDY,与TXRDY引脚的区别是不受和TXEN的控制,在查询输入/输出方式中,微处理器查询该状态位来判断是否可以传送数据。 微机接口技术,桂小林
发送引脚 TXEMPTY——发送缓冲器已空引脚,当发送缓冲器中的数据发送完毕,该引脚为高电平。当微处理器向发送缓冲器写入数据时,写信号上升沿使TXEMPTY变低。 在同步方式下,若TXEMPTY为高电平,表示当前没有数据可供发送,则8251A自动发送同步字符。 微机接口技术,桂小林
接收引脚 SYNDET—同步字符检测引脚。 SYNDET 既可以作为输入引脚也可以作为输出引脚。8251A复位后,SYNDET为低电平。内同步时,当在RxD线上检测到同步字符后,SYNDET输出高电平。 外同步时,SYNDET为输入。当外设完成同步字符检测后,向此引脚输入一个正跳变信号,使得8251A在下一个j接收时钟的下降沿开始装配字符。 微机接口技术,桂小林
接收引脚 ① RxD——数据接收引脚,8251A在/RxC的每个上升沿采样RxD引脚。 ②/RxC——控制数据接收速率的时钟输入引脚,控制数据接收速率的方式与/TxC相同,在实际使用时/RxC与/TxC通常接在一起。 ③ RxRDY——接收器准备就绪引脚,当RxRDY为高电平时,指示8251A的数据缓冲器中已经有接收到的数据,可供微处理器读出,并且由读信号的上升沿复位。如果在RxRDY信号有效的情况下微处理器没有及时取走数据,新接收的数据会覆盖数据缓冲器中原有数据,造成溢出错误,并且使状态字中的溢出错误标志OE置位。 RXRDY可以作为中断请求信号,也可以作为状态信号供微处理器查询 微机接口技术,桂小林
调制解调器控制电路 (1)/DTR(Data Terminal Ready)——数据终端准备就绪引脚(输出,低电平有效),通过命令指令字可以使该引脚输出低电平,通知调制解调器当前微处理器已经准备就绪。 (2)/DSR(Data Set Ready)——数据设备准备就绪引脚(输入,低电平有效),当为低电平时,通知微处理器当前调制解调器已经准备就绪。由于该信号是输入给8251A的,微处理器需要读取8251A的状态字来检测该信号,以了解调制解调器当前的状态。 (3)/RTS(Request To Send)——请求发送引脚(输出、低电平有效),通过命令指令字可以使该引脚输出低电平,通知调制解调器当前微处理器已经准备好发送。 (4)/CTS(Clear To Send)——清除发送引脚(输入,低电平有效),当为低电平时,表示调制解调器已经允许8251A发送数据。 微机接口技术,桂小林
时钟信号 8251时钟信号: CLK:时钟输入,用来产生8251A器件的内部时序。同步方式下,大于接收数据或发送数据的波特率的30倍,异步方式下,则要大于数据波特率的4.5倍。 TxC:发送器时钟输入,用来控制发送字符的速度。同步方式下,TxC的频率等于字符传输的波特率,异步方式下,TxC的频率可以为字符传输波特率的1倍、16倍或者64倍 微机接口技术,桂小林
8251A的发送和接收--- ①异步接收 a.在没有字符时,RxD线上为高电平 b.8251把RxD线上第一次出现的低电平作为起始位。 c.当检测到起始位后,8251启动一个内部计数器,以波特率因子为16为例,当计数器计到半个数位传输时间即8个脉冲时,再检测RxD线,若RxD为高,则8251认为RxD线上出现了干扰(假起始),重新开始检测起始位。若RxD仍为低,则8251确认收到一个有效的起始位。 d.当8251确认起始位后,进入正常的数据采样,如波特率因子为16,则每隔一个数位传输时间即16个接收时钟脉冲,采样一次RxD线,RxD为高,作为“1”,RxD为低,作为“0”;并将采样的数据送入“接收移位寄存器”。 e. 数据进入“输入移位寄存器”被移位,并进行奇偶校验和去掉停止位, 就变成了并行数据,再通过内部数据总线送到“数据输入寄存器”,同时设置“状态寄存器”中的输入有效状态位,发出RxRDY信号。 f.若有效数据少于8位,8251把“数据输入寄存器”的高位填“0”。 微机接口技术,桂小林
②异步发送 a.当程序把8251的控制寄存器TxEN位(允许发送)置1后,若8251收到Modem(DCE)发来的CTS(Modem 允许8251发送),则开始发送。注意:若无Modem,应将8251的CTS端接地。 b.发送控制电路根据编程要求,为每个字符加上起始位、校验位和停止位,并把它送至发送移位寄存器。 c.发送移位寄存器在发送时钟TxC的控制下,按波特率因子的要求,把装配好的信息一位一位地从TXD端上发出。 d.当一帧信息发完后,8251发出TxE信号,表示已完成发送。 e.若TxE有效,且CTS为低(Modem允许发送),TxEN位置1(程序允许发送),则8251发出TxRDY信号,表示8251可以再从CPU获得数据,重新开始发送。CPU可从状态寄存器中查询TxRDY信号。也可把TxRDY信号作为中断请求信号,以便开始下一字符的发送。 微机接口技术,桂小林
③同步接收 a.搜索同步字符: 8251监测RxD线,每当RxD线出现一个数据位时,就将其送入“接收移位寄存器”,然后比较“接收移位寄存器”和“同步字符寄存器”,若不等,8251接收下一个数据位,若相等,表示已找到同步字符,实现了同步,8251发出SYNDET信号。对于双同步,只有连续找到两个同步字符,才发出SYNDET信号。如果在SYNDET上外加一个高电平(外同步),8251立刻脱离对同步字符的搜索,认为已完成同步(注:SYNDET是一个双向线)。 b.实现同步后,按时钟信号对RXD线采样,并把收到的数据位送入“接收移位寄存器”。注意:采样频率即“接收移位寄存器”的移位频率等于接收时钟RXC上的输入频率。在同步方式下,无波特率因子,或者说波特率因子固定为1(异步方式下,采样频率,即“接收移位寄存器”移位频率,即波特率=RXC时钟频率/波特率因子)。 c.接收到规定的数位时,接收移位寄存器的内容送“数据输入寄存器”,并发出RxRDY信号。 微机接口技术,桂小林
④同步发送 a.当程序设置TxEN位,且CTS有效后,8251开始发送 b.发一个或两个同步字符。 d.在8251发送过程中,若CPU来不及提供新的数据给8251,则8251自动插入同步字符。 微机接口技术,桂小林
2)8251的编程机构 8251A的内部可编程寄存器包括方式指令字寄存器和命令指令字寄存器。 方式指令字规定了8251A的工作方式, 而在同步方式中,需要写入在传送数据时使用的同步字符。 方式指令字必须在复位后首先写入,而且只能写入一次, 若改变8251A的工作方式,则必须先通过命令指令字使8251A复位。 在写入方式指令字后才可以写入命令指令字和同步字符,并且可多次写入 微机接口技术,桂小林
(1)方式指令字 波特率分别是时钟频率的1、1/16和1/64 微机接口技术,桂小林
(2)命令指令字 微机接口技术,桂小林
(3)状态字 TE、OE和PE分别反映数据传送中的三种错误,由硬件自动监测,微处理器只有读取状态字才能知道数据传送过程中是否有错误发生。 微机接口技术,桂小林
例如,若要查询8251A接收器是否准备好,则可用下列程序段完成: MOV DX,0F2H ;状态口 LOPP: IN AL,DX ;读状态口 AND AL,02H ;查RxRDY=1? JZ LOPP ;未准备好,则等待 MOV DX, 0F0H ;数据口 IN AL,DX ;已准备好则读取数据 微机接口技术,桂小林
8251A的读写操作方式(寻址) C=COMMAND: 三个寄存器 D=DATA: TxBUF & RxBUF C/ 操作 1 X 向8251A中写入数据 从8251A中读出数据 向8251A中写入指令字 从8251A中读出状态字 C=COMMAND: 三个寄存器 D=DATA: TxBUF & RxBUF 微机接口技术,桂小林
以后不管是同步方式还是异步方式,只要不是复位命令,当A0接C/D#时,由CPU向奇地址端口写入的是命令控制字,向偶地址端口写入的是数据。 8251在初始化编程时,首先使芯片复位,第一次向控制端口(奇地址)写入的是方式字;如果是同步方式,接着向奇地址端口写入的是同步字符,若有2个同步字符,则分2次写入; 以后不管是同步方式还是异步方式,只要不是复位命令,当A0接C/D#时,由CPU向奇地址端口写入的是命令控制字,向偶地址端口写入的是数据。 在写入命令指令字后,若IR = 1,则引起内部复位,又回到流程的开始,可以重新写入方式指令字。 微机接口技术,桂小林
初始化流程 奇地址 偶地址 微机接口技术,桂小林
同步方式初始化程序1 下面是设置8251A为同步方式的初始化程序,8251A的C/D引脚接在地址总线的A0上,写指令字的端口地址为51H。 MOV DX,51H ;设置端口地址 MOV AL,10 11 10 00H;写入方式指令字 OUT DX,AL;同步方式,7位数据,偶校验 MOV AL,16H;使用一个同步字符,为16H OUT DX,AL MOV AL,97H;写入命令字:启动发送器、接收器 OUT DX,AL;复位错误标志,搜索同步字符 微机接口技术,桂小林
同步方式初始化程序2 8251A的C/D引脚接在地址总线的A0上, 指令字的端口地址为51H,数据为50H。 MOV DX,51H; 设置端口地址 MOV AL,40H; 复位8251A OUT DX,AL MOV AL, 38H; 写入方式指令字 OUT DX,AL; 同步方式,7位数据,偶校验 MOV AL,0FFH; 使用2个同步字符0xFF OUT DX,AL OUT DX,AL MOV AL,97H; 写入方式指令字:启动收发器、接收器 OUT DX,AL; 复位错误标志,搜索同步字符 微机接口技术,桂小林
异步方式初始化程序 ;写入方式指令字:异步方式,7位数据,波特率因子1,偶校验,1个停止位 MOV AL,79H OUT 51H,AL ;写入命令指令字 ;启动发送器、接收器, ;复位错误标志 MOV AL,35H 微机接口技术,桂小林
第3节 6.5.3 8251A的综合应用 图6.32是利用8251A形成RS-232C串口的接口电路,8251A实现了串行数据的发送和接收,电路1488和1489用于实现信号的TTL电平与RS-232电平的相互转换。 设8251A的控制和状态端口地址为52H,数据输入和输出端口地址为50H。 微机接口技术,桂小林
放在BUFFER标号所指的内存缓冲区中的程序设计方法。 【解】下面的程序段先对8251A进行初始化,然后对状态字进行测试,以便输入字符。 具体的程序段如下: MOV AL,0FAH ;11 11 10 10B ;设置方式指令字,异步方式,波特率因子16 ;7个数据位,2个停止位,偶校验 OUT 52H,AL MOV AL,35H ;00 1 1 0 1 0 1B ;设置命令指令字,使发送器和接收器启动, OUT 52H,AL ;并清除出错指示位 MOV DI,0 ;变址寄存器初始化 MOV CX,80 ;计数器初始化,共收取80个字符1 微机接口技术,桂小林
异步接收 BEGIN:IN AL,52H ;读取状态字,测试RxRDY位是否为1,如为0, DSR SYN DET TE OE PE TXE MPTY RX RDY TX RDY BEGIN:IN AL,52H ;读取状态字,测试RxRDY位是否为1,如为0, TEST AL,02H ;如果未收到字符,故继续读取状态字并测试 JZ BEGIN IN AL,50H ;读取字符 MOV DX,OFFSET BUFFER MOV [DX+DI],AL INC DI ;修改缓冲区指针 IN AL,52H ;读取状态字 TEST AL,38H ;测试有无帧校验错,奇/偶校验错和 JNZ ERROR ;溢出错,如有,则转出错处理程序 L00P BEGIN ;如没错,则再收下一个字符 JMP EXIT ;如输入满足80个字符,则结束 ERROR:CALL ERR ;调出错处理 EXIT: 微机接口技术,桂小林
异步发送 MOV BX,OFFSET SENDBUF;发送缓冲区首址 MOV SI,0 ;缓冲区指针清0 MOV CX,40 ;字符个数计数器 SEND:IN AL,52H ;读状态寄存器 TEST AL,01H ;检测TxRDY标志 JZ SEND ;数据没有发送完成,继续检测 MOV AL,35H ;00 1 1 0 1 0 1B ;设置命令指令字,使发送器和接收器启动, OUT 52H,AL ;并清除出错指示位 MOV AL ,[BX+SI] ;从SENDBUF读出数据 OUT 50H ,AL ;写发送数据到8251A INC SI IN AL,52H ;读状态寄存器 TEST AL,38H ;判断是否出错 JNZ ERROR LOOP SEND JMP EXIT ;发送完40个字符后结结束 ERROR: … ;出错处理 EXIT: … ;其它程序 微机接口技术,桂小林
第4节 PC计算机的电流环接口 第5节 PC计算机的BIOS调用
第4节 PC系列串行异步通信接口 PC系列为了能实现串行异步通信功能,而设置一个符合RS—232c接口标准的串行接口,在不同机型上,串行接口的硬件定位有区别。PC/XT机将串行异步通信接口单独做成一块控制卡,称为IBM串行异步通信适配器,可插在PC标准的I/O扩展槽上用.该板除支持RS-232C接口标准外,还支持20mA电流环标准。 PC AT机则将异步通信口与并行口组合在同一块控制卡上,称为IBM AT串行/并行适配器板,可插在I/O槽上使用;而各类PC系列兼容机,串行异步通信口的设置有采用PC/XT方式,有采PC/AT方式。有的将其组合在多功能控制卡上.而80386 PC机则将串行异步通信接口装在系统板上。 但不管串行接口定位于何处,它的核心芯片均使用可编程芯片,接口的端口地址范围也相同。而接口的连接器有两种类型,PC/XT机采用25脚的DB-25连接器(实际用15脚),而PC/AT取消了20mA电流环接口,而采用9脚的DB-9型D型连接器。 微机接口技术,桂小林
微机接口技术,桂小林
20mA电流环接口 20mA电流环是一个未经正式颁布的标准,这一标准的推出是为满足早期机械式电传打字机或使用20mA电流环标准的外部设备。这种标准使用电流信号,增强抗干扰的能力,传输远(可至1 km)。在PC,PC/XT串行异步通信接口卡中,利用25脚连接口中RS-232C标准未定义的引脚作为20mA电流环连接线的引脚。 电流环接口的持点是用两条连线(接通后)作为电流送出和返回的一个环路。通常是采用光电隔离器实现TTL电流与20mA电流间的转换。 微机接口技术,桂小林
20mA电流环接口图(光电隔离) 微机接口技术,桂小林
第5节 BIOS串行异步通信口的功能调用 PC系列及其兼容机ROM BIOS提供全面的功能调用。其中以INT 14H形式提供给高层系统软件或应用程序,支持异步串行通信的功能调用共有4个子功能,它们是: 初始化串行口、 发送1个字符到串行口、 从串行口接收一个字符、 读取串行口的当前状态。 微机接口技术,桂小林
下表列出4个功能调用号及其调用的入口参数和程序执行后的返回参数 微机接口技术,桂小林
(1) 0号功能(初始化串行口) 0号功能用来对8250进行初始化,即设定通信双方采用的传送速率、数据位数、停止位数及奇偶校验性等参数。这些参数调用INT 14H前,先由用户置入AL。AL的参数格式及取值规定如下; mov AH,0 ; 功能号AH mov AL, 11110110B ; 参数 mov DX, 0H ; 适配器号 INT 14H 微机接口技术,桂小林
(2) 1号功能(发送字符到串行口) 微机接口技术,桂小林
(3) 2号功能(从串行口接收字符) 微机接口技术,桂小林
(4) 3号功能(读串行口当前状态) 微机接口技术,桂小林
其它串行通信接口芯片(TL16C450/550) 电平变换 微机接口技术,桂小林
2.6 光电隔离输入输出接口 桂小林 西安交通大学 2011年5月15日
1.光电耦合器 图中光电耦合器件由两部分组成;发光二极管和光敏三极管。当发光二极管通以一定电流时;它就会发光。该光被光敏三极管接收,就使它的C、E两端导通;当发光二极管内没有电流流过时,就没有光照射到光敏三极管上,从而使三极管截止,C、E两端开路。 微机接口技术,桂小林
微机接口技术,桂小林
2、光电隔离输人接口电路 光电隔离输入通常用于控制动作的状态反馈。这种反馈可能是电信号形式,也可能是机械触点的断开或闭合形式。这里我们假定状态反馈形式是开关触点(或继电器触点)的断开或闭合。光电隔离输入接口电路的具体实例如图6-34所示。 微机接口技术,桂小林
读开关状态 MOV DX,220H REPT:IN AL,DX TEST AL,0000 0001B JNZ OFF JZ ON JMP REPT 微机接口技术,桂小林
3、光电隔离输出接口电路 在马达控制电路中,也可采用光耦来把控制电路和马达高压电路隔离开。马达靠MOSFET或IGBT功率管提供驱动电流,功率管的开关控制信号和大功率管之间需隔离放大级。在光耦隔离级一放大器级一大功率管的连接形式中,要求光耦具有高输出电压、高速和高共模抑制。 CPU与继电器之间的接口如图6-35所示 微机接口技术,桂小林
继电器控制 MOV DX,221H MOV AL,0100 0000B OUT DX,AL ;继电器接通 微机接口技术,桂小林
作业 P293 13;16;20;21 微机接口技术,桂小林
THANKS!