可编程定时计数器 8253

  • 可编程芯片:可以通过软件命令,控制芯片的工作方式
    • 数据传输方向
    • 输入 / 输出方式

image.png

  • 时钟脉冲由外部时钟电路提供
  • 给定计数初值,芯片启动后,开始数脉冲个数

image.png

  • 功能:定时、计数

    外部引线及内部结构

    image.png

  • CS:片选信号

  • 两位片内地址 A0,A1,说明片内有 4 个端口
  • GATE:输入信号,启动计数的控制信号
  • OUT:输出信号,在定时时间到,或定时过程中,OUT 端呈现波形特点
  • 三组 CLK、GATE、OUT 信号,说明芯片内部有三个完全独立的定时计数器

image.png

  • 三个计数器可以独立工作
  • 因为每个计数器内部有 2 个 16 位的寄存器,两个寄存器共用一个地址,所以每个计数器占用一个端口地址
    • 16 位的初值寄存器:用来存初值,不变化
    • 16 位的计数寄存器:用来计数,一开始是存初值,然后开始递减
  • 控制寄存器:8 位,占一个端口地址,存放控制命令字
  • 综上,8253 接口芯片占 4 个端口地址

image.png
image.png

  • 4 个端口的地址是固定的
  • A1 和 A0 区分 3 个计数器和控制寄存器

    计数启动方式

    image.png

  • 一般把 GATE 接到正电源上,表示软件启动

    工作方式

  • 8253 接口芯片有 6 中工作方式

  • 不同的工作方式,OUT 端输出波形不同

image.png

  • 方式 0 是软件启动,GATE 端需要输入高电平
  • 不自动重复计数,意味着计数器中的计数寄存器减到 0,这一计数过程就结束
  • WR:由图知,有两个写入信号,也就是两条 OUT 指令被执行

    • 第一个 OUT 指令写入命令字,写完后,OUT 端一定变成低电平
      • 命令字:告诉 IO 接口芯片如何工作,其中有一个信息就是工作在方式几,该命令字存到 IO 接口中的控制寄存器
    • 第二个 OUT 指令写入初值,写完后,OUT 端一定变成低电平
      • 初值:存到 IO 接口芯片中的计数器
  • 必须先写命令字,再写初值
  • 当初值写完,开始计数,每过一个 CLK 脉冲,值减 1,直至 0,计数结束后,OUT 端变成高电平
  • 其输出信号 (高电平),可用于外部可屏蔽中断请求信号,方式 0 也称为计数结束产生中断请求的一种工作方式

image.png image.png image.png image.png image.png

控制字

image.png

  • 0000:将计数器 0 中的计数寄存器内容读入 CPU
  • 最大计数初值为 0:若选择 16 位 BCD 数,则 0-1=9999;若选择 16 位二进制数,则 0-1=FFFF

    8253 的应用

    硬件设计

    image.png

  • 与系统的连接

  • 每一次启动计数,需有两次写操作:

    • 写控制字
    • 写计数器初值
      • 如果初值为 8 位字长,则一次写入;若初值为 16 位字长,由于芯片数据通道只有 8 位,则需两次写入
    • 每个计数器的控制命令字均送入控制寄存器
    • 各计数器的计数初值送到该计数器的计数寄存器及初值寄存器

      软件设计

      image.png image.png image.png
  • 初始化程序流程

    • 写入控制字
    • 置计数初值

【例】8253 芯片应用
image.png

  • CNT0:“每”,说明输出连续波形,不是方式 2 就是方式 3,方式 3 是输出对称方波,方式 2 是每次计数结束,输出一个低电平,所以是方式 2
  • CNT1:能输出连续波形的只有方式 23,方式 3 是输出对称方波,所以是方式 3
  • CNT2:定时时间到,输出高电平,可以是方式 01,区别是方式 0 软件启动,方式 1 硬件启动,由于题目没有其他要求,所以选择方式 0 软件启动,线路简单

image.png

  • 时钟频率 2MH=1/2MH=0.5 微秒,CNT0 要求每 10ms 输出一个负脉冲,所以,计数初值为 10ms/0.5us=20000
  • 00:计数器 0;11:先读计数器低 8 位,再读高 8 位;010:方式 2;0:二进制计数

image.png

  • GATE 端高电平:软件启动
  • CLK 端连接外部时钟电路
  • OUT 端连接外部设备

image.png

  • A0 和 A1 区分 3 个计数器和控制寄存器
    • 0123H=0000 0001 0010 0011,说明 0123H 是控制寄存器的地址
    • 0120H=0000 0001 0010 0000,说明 0120H 是计数器 0 的地址
  • 上面已经得到控制字 0011 0100=34H
  • 前三句:将控制字写入控制寄存器
  • CNT0 计数初值:20000
  • 第六句:先将低 8 位写入计数器 0
  • 第七句:因为 OUT 指令不需要操作数是 AH,所以要先将 AH 送入 AL

image.png

可编程并行接口 8255

并行接口芯片 8255 特点

  • 8253 是一个非通道型的接口,用来控制外部设备
  • 8255 是一个通道型的接口,用来控制外部设备,可以用来做数据的输入和输出

image.png

8255 接口芯片结构

image.png

引线

image.png

  • A0 和 A1 是两个低位地址信号,选择 3 个端口和控制寄存器

image.png image.png

  • 译码器输入端是高位地址信号,片选

    工作方式

    image.png

    基本输入 / 输出方式 (方式 0)

  • 相当于三个独立的 8 位简单接口

  • 各端口既可设置为输入口,也可设置为输出口,但不能同时实现输入及输出
  • C 端口可以是一个 8 位的简单接口,也可以分为两个独立的 4 位端口
  • 常用于连接简单外设,适于无条件或查询方式

方式 0 的应用:

  • 习惯上:
    • A 端口和 B 端口作为 8 位数据的输入或输出口
    • C 口的某些位作为状态输入
  • 注:
    • 若使 C 端口低 4 位中某一位作为输入口,则低 4 位中其他位都应作为输入口
    • 同时可设高 4 位作为输出

image.png

  • 假设外设状态信息 (打印机缓冲区是否空闲) 连接到 PC0
  • 若外设当前状态适合传输数据,则通过 A 端口 (PA0-PA7) 输出数据到外设
  • 同时,B 口可作为其他外设的输入
  • 若 B 口连接的外设也可以提供状态信息,则可以用 C 口的高位读入第二个外设的状态信息

    选通工作方式 (方式 1)

  • 利用一组选通控制信号控制 A 端口和 B 端口的数据输入输出

  • A 口、B 口作输入或输出口,C 口的部分位用作选通控制信号
  • A 口、B 口在作为输入输出时的选通信号不同

image.png

  • A 端口工作在方式 1,输出时,C 端口的 PC367 作为选通信号
  • B 端口工作在方式 1,输出时,B 端口的 PC012 作为选通信号
  • 综上,若 AB 端口同时工作在方式 1 输出时,C 端口只有 PC45 空余
  • IBF 信号通知外部设备数据已经准备好,可以取走了
  • INTR 是外部可屏蔽的中断请求信号,告诉 CPU,数据已经被读走,可以继续发来数据

image.png

  • 方式 1 的应用:

    • 方式 1 主要用于中断控制方式下的输入输出
    • C 口的 8 位除用作选通信号外,其余位可工作于方式 0 下,作为输入或输出口

      双向传送方式 (方式 2)

  • 双向输入输出方式

    • 可以既作为输入口,又作为输出口
    • 不需要通过软件控制字命令来改变数据传输方向,只需要时钟脉冲就可以改变数据传输方向
  • 只有 A 端口可工作在方式 2 下
    • 因为选通信号有限

image.png

  • PC34567 作为 A 端口的选通控制信号
  • IOW:A 口作为输出
  • STB 信号有效:外部设备将数据写入 A 口,A 口作为输入

方式 2 的应用:

  • 可使 A 端口作为双向端口所有
  • 用于中断控制方式
  • 当 A 口工作于方式 2 时:
    • B 口可工作于方式 1
      • 此时 C 口的所有位都用作选通控制信号的输入输出
    • B 口也可工作于方式 0
      • 此时 C 口的剩余 3 位也可工作于方式 0
  • 8255 的 ABC 三个端口都可以工作在方式 0,AB 端口可以工作在方式 1,只有 A 端口可以工作在方式 2

    方式控制字及位控制字

  • 方式控制字:

    • 用于确定 3 个端口的工作方式及数据传送方向;
  • 位控制字
    • 仅用于 C 端口
    • 可设置 C 口某位的初始状态(为高电平或低电平)
    • 当其工作于方式 0 下且作为输出口时,一般需要对作为输出的位设置初始状态(即初始化)

image.png

  • 方式控制字最高位一定为 1
  • 最高位后面的 4 位控制 A 组,A 组中包含 A 端口,A 端口有 3 种工作方式,所以用高 2 位进行工作方式选择
    • 8255 内部的 3 个端口在控制逻辑上分为 A 组和 B 组
      • A 组:A 端口 8 位和 C 端口高 4 位
      • B 组:B 端口 8 位和 C 端口低 4 位
    • 由于 C 端口不能工作在方式 12,所以 01、1x 对 C 端口无意义
  • 低三位控制 B 组,B 组中包含 B 端口,B 端口有 2 种工作方式,所以用高 1 位进行工作方式选择
  • 8255 一个控制字可以控制 3 个端口

    8255 芯片的应用

  • 芯片与系统的连接

  • 芯片的初始化
  • 相应的控制程序

【例】8255 应用
image.png image.png

  • 地址信号低 2 位 A0、A1 是片内寻址,不参与译码

image.png image.png

  • 1023H:控制寄存器地址
  • 10010000:方式控制字
  • 1021H:B 端口地址
  • 80H:1000 0000,PB7 位保证为高电平
  • 1020H:A 端口地址
  • 3:计数,亮灭 3 次
  • 1022H:C 端口地址
  • 1:0000 0001,PC0 为高电平