版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第九章 并行I/O接口芯片8255A,9-1 8255A的工作原理,一、8255A的结构与功能 8255A的外部引脚和内部结构分别如下图所示。8255A主要由以下几个部分组成:,8255A的外部引脚,1.数据端口A、B、C,8255A内部包含3个8位的输入输出端口A、B、C,通过外部的24根输入输出线与外设交换数据或进行通信联络。端口A和端口B都可以用作一个8位的输入口或8位的输出口,C端口既可作为一个8位的输入或输出口用,又可作为两个4位的输入输出口(C口上半部分和C口下半部分)使用,还通常来配合A口和B口工作,分别用来产生A口和B口的输出控制信号和输入A口和B口的端口状态信号。,2.A组和
2、B组控制逻辑,这是两组根据CPU的编程命令控制8255A工作的电路。它们内部有控制寄存器,用来接收CPU送来的命令字,然后分别决定A组和B组的工作方式,或对端口C的每一位执行置位或复位等操作。 8255A的端口A和端口C的上半部分(PC7PC4)由A组控制逻辑管理,端口B和端口C的下半部分(PC3PC0)由B控制逻辑管理。这两组控制逻辑都从读/写控制逻辑接受命令,从内部数据总线接收控制字,然后向各有关端口发出相应的控制命令。,3.数据总线缓冲器,这是一个双向三态的8位缓冲器,用作8255A和系统数据总线之间的接口。通过这个缓冲器和与之相连的8位数据总线D7D0,接收CPU送来的数据或控制字,外
3、设传送给CPU的数据或状态信息,也要通过这个数据总线缓冲器送给CPU。,4.读/写控制逻辑,这部分电路用来管理所有的内部或外部数据信息、控制字或状态字的传送过程。,它接收从CPU的地址总线和控制总线来的信号,并产生对A组和B组控制逻辑进行操作的控制信号。系统送到读/写控制逻辑的信号包括:,8255A的控制信号与执行的操作之间的对应关系,8255A与CPU的连接及寻址,4个端口地址的确定: 当A7A6A5=111,A4A3A0=100时, =0,选中8255A。 则, A15 A8,A7 A6 A5 A4 A3 A2 A1 A0 A口地址为: 1 1 1 1 0 0 0 0 =00F0H B口地
4、址为: 0 1 =00F2H C口地址为: 1 0 =00F4H 命令控制口地址为: 1 1 =00F8H 可以看出,8255A的4个端口地址是4个连续的偶地址! 不过地址重叠。,二、8255A的控制字,8255A有两类控制字:,方式选择控制字:用来定义A、B、C端口 的工作方式。,置位复位控制字:用来对端口C的任意一 位进行置位或复位操作。,1.方式选择控制字,8255A具有3种基本的工作方式,在对8255A进行初始化编程时,应向命令控制端口写入方式选择控制字,用来规定8255A各端口的工作方式。这3种基本工作方式为:,方式0基本输入输出方式 方式1选通输入输出方式 方式2双向总线I/O方式
5、,当系统复位后,8255A的RESET输入端为高电平,使8255A复位,所有的数据端口都被置成输入方式;当复位信号撤消后8255A继续保持复位时的输入方式。如果希望它以这种方式工作,就不用另外再进行初始化了。,通过用输出指令对8255A的控制字寄存器编程,写入设定工作方式的控制字,可以让3个数据端口A、B、C以不同的方式工作。,方式选择控制字的格式如下图所示:,例如,要求 8255A的端口A工作在方式0,输出;端口B工作在方式1,输入;端口C的高4位为输出端口,低4位为输入端口,则其方式选择控制字为:,2.置位/复位控制字,端口C的数位常用作控制或应答信号,通过对8255A的控制口写入置位/复
6、位控制字,可使端口C的任意一个引脚的输出单独置1或置0,或者为应答式数据传送发出中断请求信号。在基于控制的应用中,经常希望在某一位上产生一个TTL电平的控制信号,利用端口C的这个特点,只需要用简单的程序就能形成这样的信号,从而简化了编程。,置位/复位控制字格式如下图所示:,例如,若想从端口C的PC3端输出高电平,则该控制字为: 0 0 0 0 0 1 1 1 =07H,再如,若想从端口C的PC5端输出波形: 我们可以通过对PC5这一位进行置位和复位来实现, PC5置位控制字为: 0 0 0 0 1 0 1 1 =0BH PC5复位控制字为: 0 0 0 0 1 0 1 0 =0AH 假设825
7、5A的控制命令口地址为80H,则程序如下: MOV AL,0AH OUT 80H,AL ;PC5端输出低电平 MOV AL,0BH OUT 80H,AL ;PC5端输出高电平 MOV AL,0AH OUT 80H,AL ,当然要预先把PC5 设置成输出口,三、8255A的工作方式和C口状态字,8255A具有3种工作方式,通过向8255A的控制命令寄存器(端口)写入方式选择控制字,就可以规定各端口的工作方式。当8255A工作方式1和方式2时,C口可用作A口或B口的联络信号,用输入指令可以读取C口的状态。下面具体介绍这3种不同的工作方式和C口状态字格式。,1.方式0,方式0称为基本输入输出方式,它
8、适用于不需要联络信号的简单输入输出场合。在这种方式下,A口和B口可作为8位的端口,C口的高4位和低4位可作为两个4位的端口。这4个端口中的任何一个既可作输入也可作输出,共有16种不同的输入输出组合状态。在实际应用时,C口的两半部分也可以合在一起,构成一个8位的端口。这样8255A可构成 3个8位的I/O端口,或2个8位、2个4位的I/O端口,以适应各种不同的应用场合。,2.方式1,方式1也称为选通输入/输出方式。在这种方式下,A口和B口作为数据口,均可工作于输入或输出方式。而且,这两个8位数据口的输入、输出数据都能锁存,但它们必须在联络信号控制下才能完成I/O操作。端口C的6根线用来产生或接收
9、这些联络信号。,(1)选通输入方式 如果A口和B口都工作于选通输入方式,则它们的端口状态、联络信号和控制字如下图所示。,方式选择控制字,端口A:方式1,端口B:方式1,选 通 输 入 方 式,各控制联络信号的含义如下: :选通信号,低电平有效,由外设输入。当该信号有 效时,8255A将外部设备通过端口数据线PA7PA0(A口而 言)或PB7PB0(B口而言)输入的数据送到所选端口的输 入缓冲器中。端口A的选通信号 从PC4引入,端口B的 选通信号 由PC2引入。 IBF:输入缓冲器满信号,高电平有效。这是8255A送给外 设的状态信号,当它有效时,表示输入设备送来的数据已传 送到8255A的输
10、入缓冲器中,即缓冲器已满,8255A不能再接 收新的数据。此信号一般供CPU查询使用。IBF由信号 所 置位,而由读信号的后沿(上升沿)将其复位,复位后表示 输入缓冲器已空,又允许外设将一个新的数据送到8255A。 PC5作端口A的输入缓冲器满信号IBFA,PC1作端口B的输入 缓冲器满信号IBFB。 INTE:中断允许信号。这是一个控制8255A是否能向CPU,发中断请求的信号,它没有外部引出脚。在A组和B组的控制 电路中,分别设有中断请求触发器INTE A和INTE B,只有 用软件才能使这两个触发器置1或置0。其中INTE A由置位/ 复位控制字中的PC4位控制,INTE B由PC2位控
11、制。当我们 对8255A写入置位/复位控制字使PC4位置1时,INTE A被置1, 表示允许A口中断;若使PC4位清0,INTE A也被清0,则禁 止A口发中断请求,也就是使A口处于中断屏蔽状态。同样, 可以通过编程PC2位来控制INTE B,允许或禁止B口中断。 注意:由于这两个触发器无外部引出脚,因此PC4或PC2引脚 上出现高电平或低电平信号时,并不会改变中断允许 触发器的状态。 INTR:中断请求信号。它是8255A向CPU发出的中断请求 信号,高电平有效。只有当 、IBF和INTE三者都为高电 平时,INTR才能被置位高电平。也就是说,当选通信号结束, 已将输入设备提供的一个数据送到
12、输入缓冲器中,输入缓冲,器满信号IBF已变成高电平,并且中断是允许的情况下,8255A 才能向CPU发出中断请求信号INTR。CPU响应中断后,可用 IN指令读取数据,读信号的下降沿将INTR复位为低电平。A口 的中断请求信号INTRA由PC3引脚输出,B口的中断请求信号 INTRB由PC0引脚输出。,方式1选通输入时序,(2)选通输出方式 如果A口和B口都工作于选通输出方式,它们的联络信 号和控制字的格式如下图所示:,方式选择控制字,选 通 输 出 方 式,各控制联络信号的含义如下: :输出缓冲器满信号,输出,低电平有效。当它为低 电平时,表示CPU已将数据写到8255A的指定输出端口,即
13、数据已被输出锁存器锁存,并出现在端口数据线PA7PA0 或PB7PB0上,通知外设将数据取走。实际上,它是由 8255A送给外设的选通信号。 由输出指令 的上升沿 置成低电平,而外设应答信号 将其恢复成高电平。PC7 被指定作A口的输出缓冲器满信号 ,PC1被指定作B 口的输出缓冲器满信号 。 :外设的应答信号,低电平有效,由外设送给8255A。 当它为低电平时,表示CPU输出到8255A的A口或B口的数据 已被外设接收。PC6被指定用作A口的应答信号 ,PC2 被指定用作B口的应答信号。 INTE:中断允许信号。其含义与选通输入方式一样。A口 的中断允许信号由INTE A由PC6控制,B口的
14、中断允许信号,INTE B由PC2控制,它们均由置位/复位控制字将其置为1或 清为0,以决定中断是允许还是被屏蔽。 INTR:中断请求信号,高电平有效。 在中断允许的情况下,当输出设备已收到CPU输出的 数据之后,该信号变高,可用于向CPU提出中断请求,要求 CPU再输出一个数据给外设。只有当 、 和INTE都 为1时,才能使INTR置1。写信号将INTR复位为低电平。 PC3引脚被指定用作A口的中断请求信号线INTRA,PC0为 B口的中断请求信号线INTRB。,方式1选通输出时序,(3)选通输入/输出方式组合 8255A工作于方式1时,还允许对A口和B口分别进行定 义,一个端口作输入,一个
15、端口作输出。分两种情况如下图 所示:,方式选择控制字,(1)A口输入B口输出,方式选择控制字,(2)A口输出B口输入, 对于选通方式1,还允许将A口或B口中的一个端口定义 为方式0,另一个端口定义为方式1。,3.方式2 方式2称为双向总线方式。只有A口可以工作在这种 方式。在这种方式下,CPU与外设交换数据时,可在单一 的8位端口数据线PA7PA0上进行,既可以通过A口把数 据传送到外设,又可以从A口接收从外设送过来的数据, 而且输入和输出数据均能锁存,但输入和输出过程不能同 时进行。在主机和软盘驱动器交换数据时就采用这种方式。 端口A工作于方式2时,端口C的5位(PC3PC7) 作A口的联络
16、控制信号,对应关系如下图所示:,方式选择控制字,4.C口状态字 当8255A工作于方式0时,C口各位作输入输出用。当 它工作于方式1和方式2时,C口产生或接收与外设间的联络 信号,这时,读取C口的内容可使编程人员测试或检查外设 的状态,用输入指令对C口进行读操作就可读取C口的状态。 C口的状态字有以下几种格式: (1)方式1状态字 输入状态字,输出状态字,(2)方式2状态字,其中D7D3位为A组状态字,D2D0位为B组所用, 当B口工作于方式1时,这几位作B口状态字,B口工作于 方式0时,这几位不是状态位,而是作输入输出用。,9-2 8255A的应用举例,一、基本输入输出应用举例 例1 在某一
17、系统中,有8个开关K7K0,要求不断检测它们的 通断状态,并随时在发光二极管LED7LED0上显示出来。开 关断开,相应的LED熄灭;开关闭合,相应的LED点亮。此系 统的硬件电路如下图所示。 8255A各端口的地址: A口:F0H; B口:F2H C口:F4H; 控制命令口:F6H 方式选择控制字的确认: A口输入,检测开关状态;B口输出,显示开关 状态;A、B都工作在方式0;C口状态无关。所 以,方式选择控制字为: 10010000B=90H,对应的程序段如下: MOV DX,0F6H ;指向命令控制口 MOV AL,90H ;设置方式选择控制字 OUT DX,AL ;方式选择控制字命令控
18、制口 TEST:MOV DX,0F0H ;指向A口 IN AL,DX ;从A口读开关的状态 NOT AL MOV DX,0F2H ;指向B口 OUT DX,AL ;从B口输出开关状态,控制 ;LED的点亮与熄灭。 JMP TEST ;循环检测,二、键盘接口 对于大多数的键盘,按键被排成行和列的矩阵。下面以 机械式开关构成的16个键的键盘为例,来讨论键盘接口的工作 原理。 设16个键分别位16进制数字09和AF,键盘排列、连 线及接口电路如图914所示。16键排成4行4列的矩阵,接到 并行接口8255A上,其中端口A作输出,端口B作输入。矩阵的 4条行线接到输出端口A的PA3PA0,用程序能改变
19、这4条行线 上的电平。4条列线连到输入端口B的PB3PB0,4条行线还同 时接到输入端口B的PB7PB4上。这样,用输入指令读取B口 数据时,即可读取键盘的行列号。,图914 键盘接口电路,识别键盘上哪个键被按下的过程称为键盘扫描,上述键 盘的扫描包含以下几步: (1)检测是否所有键都松开了,若没有则反复检测。 (2)当所有键都松开了,再检测是否有键按下,若无键按下则 反复检测。 (3)若有键按下,要消除键抖动,确认有键按下。 (4)对按下的键进行编码,将该键的行列信号转换成16进制码, 由此确定哪个键按下了。如出现多键同时按下的情况,只有在 其他按键均释放后,仅剩一个键闭合时,才把此键当作本
20、次按 下的键。 (5)该键释放后,再回到(2)。 下面时键盘检测、去抖动、键值编码和确定键盘名的汇 编语言程序。程序运行后,若返回值AH=0,表示已读到有效的 键值,并在AL存有0F键的16进制代码;若AH1,则表示出 错。,;端口地址 PORT_AEQU0FF9H;8255 A口地址 PORT_BEQU0FFBH;8255 B口地址 PORT_CTLEQU0FFFH;8255 控制口地址 ;数据段,键盘扫描码表 DATASEGMENT TABLEDB77H,7BH,7DH,7EH,0B7H,0BBH DB0BDH,0BEH,0D7H,0DBH,0DDH DB0DEH,0E7H,0EBH,0E
21、DH,0EEH DATAENDS ;代码段 CODESEGMENT ASSUMECS:CODE,DS:DATA START:MOVAX,DATA MOVDS,AX ;初始化8255A,方式0,A口输出, B口输入(C口输入),MOVDX,PORT_CTRL ;指向控制口 MOVAL,10001011B ;控制字 OUTDX,AL ;写入控制字 ;向所有行送0 MOVDX,PORT_A;指向A口 MOVAL,00H OUTDX,AL;向A口各位输出0 ;读列,查看是否所有键均松开 MOVDX,PORT_B;指向B口 WAIT_OPEN:INAL,DX;键盘状态读入B口 ANDAL,0FH;只查低
22、4位(列值) CMPAL,0FH;是否都为1(各键均松开)? JNEWAIT_OPEN;否,继续查 ;各键均已松开,再查列是否有0,即是否有键按下 WAIT_PRES:INAL,DX;读B口 ANDAL,0FH;只查低4位,CMPAL,0FH;是否有键按下 JEWAIT_PRES;无,等待 ;有键按下,延时20ms,去抖动 MOVCX,16EAH DELAY:LOOP DELAY ;再查列,看键是否仍被按下 INAL,DX ANDAL,0FH CMPAL,0FH JEWAIT_PRES ;已送开,转出等待按键 ;键仍被按下,确定哪一个键被按下 MOVAL,0FEH;先使PA0=0 MOVCL,
23、AL;CL=1111 1110B NEXT_ROW:MOVDX,PORT_A ;指向A口 OUTDX,AL;向一行输出低电平 MOVDX,PORT_B;指向B口,INAL,DX;读取B口状态 ANDAL,0FH;只截取列值 CMPAL,0FH;是否均为1? JNEENCODE;否,表示有键按下,转去编码 ROLCL,1 ;均为1,使下行输出0 MOVAL,CL JMPNEXT_ROW;查看下行 ;已找到有一列为低电平,对按键的行列值编码 ENCODE:MOVBX,000FH;建立地址指针,先指向F键 ;对应的地址 INAL,DX;从B口读取行列号 NEXT_TRY:CMPAL,TABLEBX;读取的行列值与表中 ;查得的相等吗? JEDONE;相等,转出 DECBX;不等,指向下一个(键值较小者)地址 JNSNEXT_TRY;若地址尚未减为负值,继续查,MOVAH,01H;若减为负值,置出错码01AH JMPEXIT;退出 DONE:MOV
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 鼓号队活动总结
- 社区民政的工作总结
- 2023年初中政治教学计划表-初中政治教学计划(三篇)
- 下半年工作计划
- 办公室行政个人年终总结
- 护理大专自我鉴定
- 2021学院军训活动总结5篇
- 关于调查问卷和的制作
- 六单元写作《发挥联想和想象》课件
- 《肺动脉高压的护理》课件
- 【MOOC】Java程序设计-北京林业大学 中国大学慕课MOOC答案
- 办公楼室内装修工程施工组织设计(方案)
- 围手术期疼痛
- 活在课堂里 课件
- 机械CAD、CAM-形考任务一-国开-参考资料
- 电气专业述职报告
- 腰椎病的中医护理查房
- 成都锦城学院《操作系统与nux管理》2022-2023学年期末试卷
- 餐饮服务电子教案 学习任务4 摆台技能(2)-中餐宴会摆台
- 《弧弦圆心角》说课稿课件
- 中职班级建设三年规划方案
评论
0/150
提交评论