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

目录

第1节——并行接口的概念
<https://blog.csdn.net/weixin_40851250/article/details/84452033#%E7%AC%AC1%E8%8A%82%E2%80%94%E2%80%94%E5%B9%B6%E8%A1%8C%E6%8E%A5%E5%8F%A3%E7%9A%84%E6%A6%82%E5%BF%B5>

●并行接口的特点
<https://blog.csdn.net/weixin_40851250/article/details/84452033#%E2%97%8F%E5%B9%B6%E8%A1%8C%E6%8E%A5%E5%8F%A3%E7%9A%84%E7%89%B9%E7%82%B9>

第2节——8255A的外部引脚和内部结构
<https://blog.csdn.net/weixin_40851250/article/details/84452033#%E7%AC%AC2%E8%8A%82%E2%80%94%E2%80%948255A%E7%9A%84%E5%A4%96%E9%83%A8%E5%BC%95%E8%84%9A%E5%92%8C%E5%86%85%E9%83%A8%E7%BB%93%E6%9E%84>

●8255A的基本特点
<https://blog.csdn.net/weixin_40851250/article/details/84452033#%E2%97%8F8255A%E7%9A%84%E5%9F%BA%E6%9C%AC%E7%89%B9%E7%82%B9>

第3节——8255A的控制字
<https://blog.csdn.net/weixin_40851250/article/details/84452033#%E7%AC%AC3%E8%8A%82%E2%80%94%E2%80%948255A%E7%9A%84%E6%8E%A7%E5%88%B6%E5%AD%97>

●8255A的3种工作方式
<https://blog.csdn.net/weixin_40851250/article/details/84452033#%E2%97%8F8255A%E7%9A%843%E7%A7%8D%E5%B7%A5%E4%BD%9C%E6%96%B9%E5%BC%8F>

●方式选择控制字
<https://blog.csdn.net/weixin_40851250/article/details/84452033#%E2%97%8F%E6%96%B9%E5%BC%8F%E9%80%89%E6%8B%A9%E6%8E%A7%E5%88%B6%E5%AD%97>

第4节——8255的工作方式
<https://blog.csdn.net/weixin_40851250/article/details/84452033#%E7%AC%AC4%E8%8A%82%E2%80%94%E2%80%948255%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%96%B9%E5%BC%8F>

●0方式(基本I/O方式)
<https://blog.csdn.net/weixin_40851250/article/details/84452033#%E2%97%8F0%E6%96%B9%E5%BC%8F%EF%BC%88%E5%9F%BA%E6%9C%ACI%2FO%E6%96%B9%E5%BC%8F%EF%BC%89>

●1方式(选通I/O方式、应答方式)
<https://blog.csdn.net/weixin_40851250/article/details/84452033#%E2%97%8F1%E6%96%B9%E5%BC%8F%EF%BC%88%E9%80%89%E9%80%9AI%2FO%E6%96%B9%E5%BC%8F%E3%80%81%E5%BA%94%E7%AD%94%E6%96%B9%E5%BC%8F%EF%BC%89>

●甲乙两机(查询方式)传送1K字节[起址0030:0000]
<https://blog.csdn.net/weixin_40851250/article/details/84452033#%E2%97%8F%E7%94%B2%E4%B9%99%E4%B8%A4%E6%9C%BA%EF%BC%88%E6%9F%A5%E8%AF%A2%E6%96%B9%E5%BC%8F%EF%BC%89%E4%BC%A0%E9%80%811K%E5%AD%97%E8%8A%82%5B%E8%B5%B7%E5%9D%800030%3A0000%5D>

第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

●硬件连接:



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













所有有疑问的人,可以推荐一个老师给你们:


搜索“慕课”,然后去主页搜索“苏曙光”,这个老师真的真的优秀!讲课从不拖泥带水,精简干练,而且条理清晰,层次分明,超级严谨的!(我不是夸张,你可以当做我是个脑残粉)他目前还没有开设“微机原理”这门课,但是他开了一门《操作原理系统》。你点进去就可以加入学习了,然后去讨论区里去问他!!!


友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信