6.3 可编程接口芯片8255与8253


6.3 可编程接口芯片 8255 与 8253

本节摘要:8255 用一个方式字指挥三个并行口,8253 用一个控制字指挥三个十六位计数器——两颗芯片把"寄存器编程替代硬件改动"的理念做到极致,是所有可编程外设的教科书标本。

前两站备好了门牌与路径,本站请出主角。选 8255 与 8253 当标本的理由与选 8086 相同:结构裸露、行为确定,而且它们封装的思想——用控制字定制硬件行为——在今天的每一颗现代外设里原样活着。

两颗改变工控史的芯片

图 6-2:8255 与 8253 的内部资源地图

图 6-2:8255 与 8253 的内部资源地图

8255:方式字驱动的三口并口

8255 提供三个八位口。方式 0 是裸输入裸输出,写完方式字口就是普通并行口;方式 1 带联络——口 C 的若干位自动转职为"输入缓冲满""输出缓冲空""中断申请"等握手线,数据流从此有节拍;方式 2 只有口 A 能用,八位数据线双向轮换,配五根口 C 联络线,相当于一台小型总线接口。

方式字的算法是本节的硬功夫。控制寄存器是四个端口里地址最高的那个,且只能写。最高位为 1 时是方式设定:从高到低依次是口 A 方式两位、口 A 进出一位、口 C 高四位进出、口 B 方式一位、口 B 进出、口 C 低四位进出。要"口 A 方式 0 输出、口 B 方式 0 输入、口 C 全部输出",方式字就是 10000010B(82H)。最高位为 0 时是按位操作:低四位选口 C 的某一位,第一位定置一还是清零——不惊动其他位就能单独发一根控制线,发门铃、启停电机都靠它。

; 8255 基本使用:口A输出接灯,口B输入接开关 MOV DX, 363H ; 控制口地址(6.1 节译码分配) MOV AL, 82H ; 方式字:A 口方式0输出,B 口方式0输入 OUT DX, AL MOV DX, 361H ; 口 B 地址 IN AL, DX ; 读开关状态 NOT AL ; 取反:开关闭合点亮对应灯 MOV DX, 360H ; 口 A 地址 OUT DX, AL ; 灯随开关

8253:三只十六位计数器

8253 内部三只独立减一计数器,每只引出时钟输入、门控、输出三根信号线。输出方式六种,工程上出镜率最高的是方式 3:初值装入后,输出端自动产生连续方波,频率等于时钟输入除以初值——这就是"定时器的数学",一行除法替代一整片分频电路。

; 8253 通道0 产生 1kHz 方波:输入时钟 1.19318MHz MOV DX, 367H ; 控制口 MOV AL, 36H ; 通道0 先低后高装初值 方式3 二进制计数 OUT DX, AL MOV AX, 1193 ; 初值 = 1193186 除以 1000 约等于 1193 MOV DX, 364H ; 通道0 数据口 OUT DX, AL ; 低字节 MOV AL, AH OUT DX, AL ; 高字节

初值换算是高频考点也是高频事故:时钟频率除以目标频率得到初值;初值为零等价于最大值 65536;方式 3 下初值为奇数时占空比会略偏——对蜂鸣器无所谓,对驱动倍频的时钟就致命。算完初值先验算一遍输出频率,再上电。

案例展开:一位之差,全板瘫痪

背景:学生做综合演练,8255 接好后在自检环节口 A 读回的永远是高电平,口 B 输出正常。操作:逐项核对——译码电路扫址正常,电源与地线通,最后把方式字逐位摊开对照:学生写的是 90H(口 A 输入口 B 输出),与他要的方向恰好写反;更隐蔽的是口 C 被设成输入,而联络用的门控信号正接在口 C 高四位上,输入方向的口 C 让握手线永远读不到电平变化。结果:改为 82H 并把口 C 设输出后,口 A 立即读到开关值。解读:方式字是芯片的"宪法",一个方向位写反,外设行为整体颠倒;而口 C 的兼职引脚让错误加倍隐蔽——排查方式字问题时,把每一位写成表格逐位核对,比凭记忆重写可靠得多。变式:方式 1 与方式 2 下,口 C 的部分位被硬件征用,软件再怎么写这些位也不起作用——设计接线前先查"哪几位被征用",可避免一半的接线返工。

方式一的联络戏与 8253 的方式谱

方式 0 是哑巴并口,方式 1 才有对话。以口 A 方式 1 输入为例,口 C 被硬件征用三根线:外设把数据放上口 A 时拉低"输入锁存请求",芯片锁存数据并拉高"输入缓冲满";若中断允许位已置,芯片同时用"中断申请"线向 8259 举手;CPU 读走数据后缓冲满自动落下,外设见状可以送下一笔。三个信号构成一条完整的对话链——方式字的允许位决定芯片开不开口说话,联络线决定对话的节奏。方式 2 的双向对话是这条链的加长版,多了方向协商的回合。

8253 的六种方式各有脾气:方式 0 计数到零输出跳高,适合一次性定时到点叫人;方式 1 可重触发的单脉冲,门控线上来一个边沿就出一个定宽脉冲;方式 2 节拍发生器,周期性打点;方式 3 方波,工程首选;方式 4、5 软件与硬件触发的单拍选通。选型口诀:要连续节拍选 2 或 3,要单次定时选 0,要外部事件定宽选 1 或 5。方式字的每一位都要查手册核对手册的定义位序——各通道控制字格式一致,但初值装载的顺序与门控的响应方式因方式而异。

门控信号也该专门认识一下。8253 每个通道的第三根输入线是门控,它像一道闸:方式 0 下门控拉低即暂停计数,拉高续跑;方式 1 下门控的上升沿是发令枪,触发一次单脉冲输出;方式 2、3 下门控拉低会立刻强制输出回到约定状态。很多"定时器行为诡异"的案例,最后都查到一根没接对电平的门控线上——不用它也必须接有效电平,悬空的门控是定时器世界里最常见的幽灵。

高频追问两则

问:8255 的口 C 按位操作能用来做什么? 它是软件控制引脚的万能钥匙:向控制口写"某位清零"就等于亲手把那根线按下去。步进电机的相序、继电器的吸放、指示灯的点灭,都靠这招逐位发号。配合 6.4 节的演练,你会频繁用到它。

问:8253 计数到零之后会停吗? 看方式:方式 0 停在终态等人重来;方式 2、3 自动重装初值循环往复;方式 1、5 等下一次门控或触发。"到零之后的行为"是选方式的核心判据——把六种方式的终态行为列成一行,选型题就成了一道连线题。

本节要点回顾

  • 控制字定行为:两颗芯片共享同一哲学,硬件供能力,软件挑能力。
  • 8255 方式字逐位算:最高位分岔,方式设定与按位操作两条路。
  • 口 C 是多面手:可拆上下四位、可按位操作、方式 1 和 2 下被征用作联络线。
  • 8253 的数学:输出频率等于时钟除初值,先验算再上电。
  • 方式字排错法:逐位列表核对,方向位与征用位重点复查。

单颗芯片的手感有了,下一站把 8255、8253、8259 焊成一台完整的小机器——综合演练见真章。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U