《微机原理与接口技术》第8章——并行接口和8255A

虽然写这个博客主要目的是为了给我自己做一个思路记忆录,但是如果你恰好点了进来,那么先对你说一声欢迎。我并不是什么大触,只是一个菜菜的学生,如果您发现了什么错误或者您对于某些地方有更好的意见,非常欢迎您的斧正!

目录

第1节——并行接口的概念

●并行接口的特点

第2节——8255A的外部引脚和内部结构

●8255A的基本特点

第3节——8255A的控制字

●8255A的3种工作方式

●方式选择控制字

第4节——8255的工作方式

●0方式(基本I/O方式)

●1方式(选通I/O方式、应答方式)

●甲乙两机(查询方式)传送1K字节[起址0030:0000]


第1节——并行接口的概念

●并行接口的特点

❶数据线有多根,所有数据线一起传输

♦典型数据线的根数:8根(字节)或16根(),也可自定

♦对比串行接口:通过1根线传送信息

♦8位或16位一起传输(即使只用到其中1位)

♦并行:特指接口与I/O设备之间

❷数据格式不受限制

❸分类:硬连接并口和可编程并口

♦硬连接并口:

工作方式及引脚功能固定(如373,244)

♦可编程并口:

工作方式及引脚功能可编程设定(如8255A

作用:扩充数据总线的数量和适应性

8255A与PC微机的典型连接方式(DB被扩充:1->3

第2节——8255A的外部引脚和内部结构

●8255A的基本特点

❶功能

♦扩充数据总线的数量(1->3):PA,PB,PC

♦适应输入/输出,查询,中断等多种应用场合

♦具有3个输入/输出并口(PA,PB,PC)

❷特点

♦可选择某特定并口连接CPU与外设

♦每个并口可以指定输入/输出方向

♦与CPU之间的数据传送方式可选择

♦有4个8位端口:PA,PB,PC,控制端口

❸8255的外部引脚(面向CPU侧

①数据总线:D0~D7

♦命令、数据、状态等数据

②地址总线:A1,A0(CS)

♦4个端口:PA,PB,PC,控制口

③控制总线:RD,WR

♦读,写信号

④其他总线RESET,GND,VCC

♦RESET:高电平有效。清除控制寄存器将三个端口置输入方式并且屏蔽中断请求

❹8255的外部引脚(面向外设侧

①三组并口线

♦PA0~PA7:对应PA端口

♦PB0~PB7:对应PB端口

♦PC0~PC7:对应PC端口

②说明

♦PA,PB与PC的作用和方式可以编程:可以做8位并行数据线,PC还可以按位控制作控制线来用

❺8255的操作与端口

8255A的内部结构

第3节——8255A的控制字

 

8255A的常用控制字

♦方式选择控制字:设置工作方式

♦按位置位/复位字:按位设定PC某位的值

♦注意:控制字必须写在控制端口

 

8255A的3种工作方式

♦方式0——基本输入输出

♦方式1——选通输入输出

♦方式2——双向传送

三个并口(端口)可以独自设置不同的工作方式

           PA:方式0,方式1,方式2

           PB:方式0,方式1

           PC:方式0

           传输方向可以指定

♦工作方式由方式选择控制字设定

 

方式选择控制字

例子:初始化8255:PA口方式一,输入;C口上部输出;PB口方式0,输出;C口下部输入。8255地址:300H~303H

1(特征位)01(PA方式一)1(A输入)0(C上输出)0(B方式0)1(B输出)1(C下输入)

10110011—>B3

所以指令为:

MOV  DX,303H     ;8255A命令口地址

MOV  AL,B1H      ;初始化命令

OUT  DX,AL        ;命令口

 

按位置位/复位控制字

♦作用:按位设定PC某一为电平的高或低

♦格式:8位:最高位固定为0

♦例:PC3复位:0 000 011 0B

♦例:PC3置位:0 000 011 1B

♦例:把PC2置成高电平。命令字:0 000 010 1B或05H

          MOV  DX,303H   ;8255A命令口地址

          MOV  AL,05H    ;使PC2=1的命令字

          OUT  DX,AL      ;送到命令口

 

按位置位/复位字方式控制字的使用

♦D7位区分两命令

♦按位置位/复位字在方式选择控制字之后写入控制端口

♦按位置位/复位字写入命令口,不能写入PC口

♦按位置位/复位字不影响工作方式

第4节——8255的工作方式

 

0方式(基本I/O方式)

♦指无条件传送查询传送

      无条件传送:不用联络信号(状态信息)

      查询传送:联络信号可由任意空闲引脚充当

              没有特定的引脚充当联络信号

              联络信号的时序没有特别约定

♦PA,PB和两个PC4位都可以设定为0方式

♦可以由用户指定输入输出的方向

单向输入或输出

♦输出有锁存能力,输入有缓冲能力而无锁存能力

 

●例子:方式0的应用——并行打印机接口设计(查询方式)

♦设计一个并行打印接口,CPU采用查询方式把存放在BUF缓冲区的256个字符(ASCII码)送去打印机进行打印。

♦数据线:DATA1-8

♦状态忙:BUSY

♦选通:STB

①CPU首先查询BUSY:1表示打印机忙,等待;0表示打印机不忙,通过DATA1-8送新的打印数据

②通过接口把数据传送到DATA1-8上(PA端口)

③STROBE(负脉冲)把数据打入到打印机数据缓冲器

④打印机收到数据后,发出“忙”(BUSY=1)信号

⑤每当一个字符打印完毕,撤销“忙”信号,置BUSY=0

⑥重复上述工作,知道全部字符被打印

 

需要完成的工作:

选定8255的工作方式—>设计8255的电路—>完成程序编写

PA输出:输出8位打印数据

PC7输出:数据选通信号(STB)

PC2输入:接收忙信号(BUSY)

软件实现

MOV DX,303H ;8255A命令口

MOV AL,10000001B ;工作方式字

OUT DX,AL ;A口0方式输出,C4~7输出,C0~3输入)

MOV AL,00001111B ;PC7置高,使STB=1

OUT DX,AL

MOV SI,OFFSET BUF ;打印字符的内存首址

MOV CX,0FFH ;打印字符个数

BUSY: MOV DX,302H ;PC口地址

IN AL,DX ;查BUSY=0? (PC2=0)

AND AL,04H ;测试PC2位是否为0

JNZ BUSY ;忙,则等待

;不忙,则向A口送数

MOV DX,300H ;PA口地址

MOV AL,[SI] ;从内存取数

OUT DX,AL ;送数到A口

MOV DX,303H ;8255A命令口

MOV AL,00001110B ;置STB为低(PC7=0)

OUT DX,AL

DELEY_500MS ;负脉冲宽度(延时)

MOV AL,00001111B ;置STB为高(PC7=1)

OUT DX,AL

INC SI ;内存地址加1

DEC CX ;字符数减1

JNZ BUSY ;未完,继续

BUF DB “256个ASCII字符代码……”

●1方式(选通I/O方式、应答方式)

♦常用于查询(条件)传送或中断传送

需设置专用联络线,联络线指定固定引脚且有固定时序。

♦PA或/和PB为数据口,PC部分引脚固定充当联络信号

   A组:

        PA和PC3 , PC4 , PC5 3位联络信号

        PA和PC3 , PC6 , PC7 3位联络信号

   B组:

        PB和PC0~PC2

♦传送过程会产生状态字,可作查询或中断用:从PC口读取状态字

单向传送

 

●1方式输入时的时序

①外设准备好数据,发送STB信号,把信号输入到8255

②在STB下降沿,数据已锁存到8255缓冲器后,引起IBF变高,表示8255A“输入缓冲器满”,禁止输入新数据

③->④在STB上升沿后,在中断允许(INTE=1)的情况下IBF的高电平产生中断请求,使INTR上升变高,通知CPU,接口中已有数据,请求CPU读数。CPU接受中断命令后,转到相应的中断子程序。在子程序中执行IN指令,将缓冲器中的数据取走。

⑤->⑥CPU读操作(RD)信号的下降沿使INTR复位,为下一次中断请求做好准备

⑦->⑧RD信号上升沿延时一段时间后清除IBF使其变低,表示接口的输入缓冲器没空,允许外设再次输入新数据

●补充

♦若A组和B组都工作与方式1,则PC还留下PC6-7两位,可以做普通I/O用

     这2位可以由方式控制字D3位指定作为输入或输出

     也具有按位置位/复位功能

♦若A组或B组只有一组工作与方式1,则余下13位可以工作在方式0,可以作普通I/O用。

●1方式输出时的时序(假定在中断方式下

③->④数据输出时,CPU准备好数据并写到8255输出数据寄存器。当CPU向8255A写完一个数据后,WR的上升沿使OBF有效,表示8255A的输出缓冲器已满,通知外设读取数据。

①->②WR的下降沿同时使中断请求INTR变低,封锁中断请求。

⑤外设得到OBF有效的通知后,开始读数。当外设读取数据后,用ACK(低电平)回答8255A,表示数据已经收到

⑥ACK下降沿将OBF置高,表示输出缓冲器变空,为下一次输出做准备

⑦->⑧在中断允许的情况下ACK上升沿使INTR变高,产生中断请求。CPU在中断服务程序中,向8255A写(OUT)新数据

 

●1方式的状态字

♦提供8255的状态;辅助CPU识别中断源(不提供中断矢量

♦状态字从PC口读取,与外部引脚无关

♦状态字的格式

●1方式的应用和设计

基本思路:

①确定A组合B的输入/输出

②把PC联络线与外设连好,与CPU相应引脚连好

③确定是采用中断方式还是查询方式与CPU通信

             ♦中断方式:把INTR连线接到CPU或8259A的INTR

                      8255不提供中断矢量,可结合系统的中断控制器使用

             ♦查询方式:把INTR线空着,程序查询状态字INTR位

                     查询INTR位比查询IBF位或OBF位可靠性高

                     注意:查询INTR位时,要确保INTE已经置位

1方式应用例子

甲乙两机(查询方式)传送1K字节[起址0030:0000]

     ♦甲机发送(方式1)—>乙机接收(方式0

     ♦825端口地址:300H~303H

●硬件连接:

确定方式控制字和软件流程

猜你喜欢

转载自blog.csdn.net/weixin_40851250/article/details/84452033