《微机原理课件1第20次课182552信安》由会员分享,可在线阅读,更多相关《微机原理课件1第20次课182552信安(59页珍藏版)》请在金锄头文库上搜索。
1、第9章 并行接口,教学重点 8255A的内部结构、工作方式和编程 8255A的控制字、工作方式及应用,并行数据传输方式,以计算机的字长,通常是8位、16位或32位为传输单位,一次传送一个字长的数据 适合于外部设备与微机之间进行近距离、大量和快速的信息交换 例如:微机与并行接口打印机、磁盘驱动器 微机系统中最基本的信息交换方法 例如:系统板上各部件之间,接口电路板上各部件之间,9.1 8255A内部结构,具有多种功能的可编程并行接口电路芯片 最基本的接口电路:三态缓冲器和锁存器 与CPU间、与外设间的接口电路:状态寄存器和控制寄存器 还有端口的译码和控制电路、中断控制电路 分3个端口,共24个外
2、设引脚 共三种输入输出工作方式,9.1.1 8255A的内部结构和引脚,1. 外设数据端口,端口A:PA0PA7 A组,支持工作方式0、1、2 端口B:PB0PB7 B组,支持工作方式0、1 端口C:PC0PC7 仅支持工作方式0 A组控制高4位PC4PC7 B组控制低4位PC0PC3,端口A:PA0PA7 常作数据端口,功能最强大 端口B:PB0PB7 常作数据端口 端口C:PC0PC7 可作数据、状态和控制端口 分两个4位,每位可独立操作 控制最灵活,最难掌握,2. 与处理器接口,9.1.2 8255A的工作方式,方式0:基本输入输出方式 适用于无条件传送和查询方式的接口电路 方式1:选通
3、输入输出方式 适用于查询和中断方式的接口电路 方式2:双向选通传送方式 适用于与双向传送数据的外设 适用于查询和中断方式的接口电路,方式0输入时序,请体会这里8255A的 数据缓冲作用,方式0输出时序,8255A对CPU通过它 输出给外设的数据进行锁存,方式1输入引脚:A端口,数据选通信号 表示外设已经准备好数据,输入缓冲器满信号 表示A口已经接收数据,中断请求信号 请求CPU接收数据,方式1输入引脚:B端口,方式1需借用端口C用做联络信号 同时还具有中断请求和屏蔽功能,方式1输入联络信号,STB*选通信号,低电平有效 由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至8255A的输
4、入锁存器 IBF输入缓冲器满信号,高电平有效 8255A输出的联络信号。当其有效时,表示数据已锁存在输入锁存器 INTR中断请求信号,高电平有效 8255A输出的信号,可用于向CPU提出中断请求,要求CPU读取外设数据,方式1输入时序,STB*和IBF是外设和8255A间 的一对应答联络信号, 为的是可靠地输入数据,方式1中断控制,8255A的中断由中断允许触发器INTE控制 置位允许中断,复位禁止中断 对INTE的操作通过写入端口C的对应位实现,INTE触发器对应端口C的位是作应答联络信号的输入信号的哪一位,只要对那一位置位/复位就可以控制INTE触发器 选通输入方式下 端口A的INTEA对
5、应PC4 端口B的INTEB对应PC2,方式1输出引脚:A端口,外设响应信号 表示外设已经接收到数据,输出缓冲器满信号 表示CPU已经输出了数据,中断请求信号 请求CPU再次输出数据,方式1输出引脚:B端口,方式1输出联络信号,OBF*输出缓冲器满信号,低有效 8255A输出给外设的一个控制信号,当其有效时,表示CPU已把数据输出给指定的端口,外设可以取走 ACK*响应信号,低有效 外设的响应信号,指示8255A的端口数据已由外设接受 INTR中断请求信号,高有效 当输出设备已接受数据后,8255A输出此信号向CPU提出中断请求,要求CPU继续提供数据,端口A的INTEA对应PC4 端口B的I
6、NTEB对应PC2,方式1输出时序,OBF*和ACK*是外设和8255A间 的一对应答联络信号, 为的是可靠地输出数据,方式2双向方式,方式2将方式1的选通输入输出功能组合成一个双向数据端口,可以发送数据和接收数据 只有端口A可以工作于方式2,需要利用端口C的5个信号线,其作用与方式1相同 方式2的数据输入过程与方式1的输入方式一样 方式2的数据输出过程与方式1的输出方式有一点不同:数据输出时8255A不是在OBF*有效时向外设输出数据,而是在外设提供响应信号ACK*时才送出数据,方式2双向引脚,用PC6设置INTE1(输出) 用PC4设置INTE2(输入) 输入和输出中断通过 或门输出INT
7、RA信号,方式2双向时序,9.1.3 8255A的编程,初始化编程:一个方式控制字 采用控制I/O地址:A1A011 工作过程中:通过数据端口对外设数据进行读写 数据读写利用端口A、B和C的I/O地址,A1A0依次等于00、01、10 IBM PC/XT机上,端口A、B、C和控制端口的I/O地址为60H、61H、62H和63H,1. 写入方式控制字:控制字格式,1. 写入方式控制字:示例,要求: A端口:方式1输入 C端口上半部:输出,C口下半部:输入 B端口:方式0输出 方式控制字:10110001B或B1H 初始化的程序段: mov dx,0fffeh ;假设控制端口为FFFEH mov
8、al,0b1h ;方式控制字 out dx,al ;送到控制端口,2. 读写数据端口,初始化编程后: 当数据端口作为输入接口时,执行输入IN指令将从输入设备得到外设数据 当数据端口作为输出接口时,执行输出OUT指令将把CPU的数据送给输出设备 8255A具有锁存输出数据的能力 对输出方式的端口同样可以输入 不是读取外设数据 读取的是上次CPU给外设的数据,2. 读写数据端口:示例,利用8255A的输出锁存能力,可实现按位输出控制 对输出端口B的PB7位置位的程序段: mov dx,0fffah ;B端口假设为FFFAH in al,dx ;读出B端口原输出内容 or al,80h ;使PB71
9、 out dx,al ;输出新的内容,3. 读写端口C:归纳1,C端口被分成两个4位端口,两个端口只能以方式0工作,可分别选择输入或输出,在控制上,C端口上半部和A端口编为A组,C端口下半部和B端口编为B组,3. 读写端口C:归纳2,当A和B端口工作在方式1或方式2时,C端口的部分或全部引脚将被征用,其余引脚仍可设定工作在方式0,3. 读写端口C:归纳3,对端口C的数据输出有两种办法 通过端口C的I/O地址:向C端口直接写入字节数据。这一数据被写进C端口的输出锁存器,并从输出引脚输出,但对设置为输入的引脚无效 通过控制端口:向C端口写入位控字,使C端口的某个引脚输出1或0,或置位复位内部的中断
10、允许触发器,端口C的位控制字,位控制字写入控制端口 特别便于置位复位内部中断允许触发器INTE,3. 读写端口C:归纳4,读取的C端口数据有两种情况 未被A和B端口征用的引脚:将从定义为输入的端口读到引脚输入信息;将从定义为输出的端口读到输出锁存器中的信息 被A和B端口征用作为联络线的引脚:将读到反映8255A状态的状态字,端口C的状态字,9.2 8255A控制字、工作方式与应用,作为通用的并行接口电路芯片,825A具有广泛的应用 应用在IBM PC/XT微机上 应用于打印机接口电路 连接简易键盘 驱动LED数码管 ,8255A的应用,1.开关量的检测 例【】在工业控制过程中,经常需要检测某些
11、开关的状态。例如,在某一系统中,有8个开关K7K0,要求不断地检测它们的通断状态,并随时在发光二极管上显示。通过8255A的端口A读入开关状态信息,使端口B、端口C连接的发光二极管的状态与端口A开关状态相呼应,并重复执行。假设8255A在系统中端口A、B、C及控制口的地址分别为100H,101H,102H,103H,试设计出硬件电路图,并编写程序。,解:(1) 硬件电路如图8-11所示,MOV DX,103H ;控制寄存器的地址送给DX MOV AL, 90H ;控制字 OUT DX, AL ;写入控制字 L1:MOV DX,100H ;端口A 地址的送给DX IN AL,DX ;从端口A读入
12、开关状态 MOV DX,101H ;指向端口B端口 OUT DX,AL ;从端口B输出,控制LED XOR AL,0FFH ;AL AL取反 MOV DX,102H ;端口C 的地址送给DX OUT DX,AL ;从端口C输出 JMP L1 ;循环,(2) 相应的8255A初始化程序为:,9.4 LED数码管及其接口(补充),发光二极管LED是最简单的显示设备 由7段LED就可以组成的LED数码管 LED数码管广泛用于单板微型机、微型机控制系统及数字化仪器中 LED数码管可以显示内存地址和数据等,8255应用,1. LED数码管的工作原理,主要部分是7段发光管 顺时针分别称为a、b、c、d、e
13、、f、g 有的产品还附带有一个小数点h 通过7个发光段的不同组合 主要显示09 也可以显示AF(实现16进制数的显示) 还可以显示个别特殊字符,如、P 等,LED数码管,LED数码管的结构,共阳极,共阴极,2. 单个LED数码管的显示,实验四 七段数码管 实验内容 静态显示:按图22连接好电路,将8255的A口PA0PA6分别与七段数码管的段码驱动输入端a相连,位码驱动输入端S1接+5V(选中),S0、dp接地(关闭)。编程从键盘输入一位十进制数字(09),在七段数码管上显示出来。,单个数码管的显示,LEDtb db 3fh,06h,5bh, ;显示代码表 mov al,1 ;AL要显示的数字
14、 mov bx,offset LEDtb xlat ;换码:ALDS:BXAL mov dx,port out dx,al ;输出显示,软件译码,3. 多个LED数码管的显示,8个数码管:用2个8位输出端口控制 硬件上用公用的驱动电路来驱动各数码管 软件上用扫描方法实现数码显示,位控制端口电路,位控制端口作用,控制哪个(位)数码管显示 当位控制端口的控制码某位为低电平时,经反相驱动,便在相应数码管的阳极加上了高电平,这个数码管就可以显示数据,位控制:Di0,相应位发光,段控制端口电路,D0 D1 D2 D3 D4 D5 D6 D7,阳极,位0,a b c d e f g h,位1,位2,D0D
15、7,段控制,正 相 寄 存 驱 动,段控制端口作用,控制哪个段显示,决定具体显示什么数码 段控制端口送出显示代码到数码管相应段 此端口由8个数码管共用,段控制:Di0,相应段发光,通过位、段控制端口的共同作用 才能确定哪个数码管显示什么数码,数码缓冲区,;数据段 LEDdt db 8 dup(0) ;显示数码缓冲区 ;主程序 mov si,offset LEDdt call LEDdisp ;调用显示子程序,获取显示代码,LEDdisp proc push ax push bx push dx mov bx,offset LEDtb; (led显示编码) mov ah,0feh ;指向最左边数
16、码管 LED1: lodsb ;取出要显示的数字 xlat cs:LEDtb ;得到显示代码:ALCS:BXAL,数码显示,mov dx,segport ;segport为段控制端口 out dx,al ;送出段码 mov al,ah ;取出位显示代码 mov dx,bitport ;bitport为位控制端口 out dx,al ;送出位码 call delay ;实现数码管延时显示,显示下位数码,rol ah,1 ;指向下一个数码管 cmp ah,0feh ;最右边的数码管? jnz LED1 ;显示下一个数字 pop dx pop bx pop ax ret ;8位数码管都显示 LEDtb db 0c0h,0f9h, LEDdisp endp,软件延时,timer = 10 ;延时常量 delay proc push bx push cx mov bx,timer ;外循环: