虽然写这个博客主要目的是为了给我自己做一个思路记忆录,但是如果你恰好点了进来,那么先对你说一声欢迎。我并不是什么大触,只是一个菜菜的学生,如果您发现了什么错误或者您对于某些地方有更好的意见,非常欢迎您的斧正!
目录
第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
●硬件连接:
确定方式控制字和软件流程
所有有疑问的人,可以推荐一个老师给你们:
搜索“慕课”,然后去主页搜索“苏曙光”,这个老师真的真的优秀!讲课从不拖泥带水,精简干练,而且条理清晰,层次分明,超级严谨的!(我不是夸张,你可以当做我是个脑残粉)他目前还没有开设“微机原理”这门课,但是他开了一门《操作原理系统》。你点进去就可以加入学习了,然后去讨论区里去问他!!!
热门工具 换一换