汇编与接口——8253

笔记 · 2023-11-12 · 638 人浏览

8253

引脚与内部结构

引脚信号

  • 8位数据线D0~D7
  • 寻址控制线A0、A1、
  • 读写控制线
  • 各种通道与外设的接口
  • 时钟输入:CLK
  • 门控输入:GATE
  • 波形输出:OUT

内部结构

  • 数据总线缓冲器

    • 8253与数据总线连接时的接口电路,8位双向三态缓冲器组成
    • 与CPU进行读写的信息都经D7~D0传送

      • 初始化编程8253时CPU写入的控制字
      • CPU向某一计数器写入的计数初值
      • CPU从计数器读出的计数值
  • 读/写控制逻辑

    • 接收

      • I/O端口译码电路产生

        • 为0时工作
        • 为0时向3个计数器和控制口写入数据
        • 为0时从3个计数器读出数据,但不能读控制口
      • A1A0,端口选择信号

        • 00,通道0
        • 01,通道1
        • 10,通道2
        • 11,控制字寄存器
  • 计数器或计数通道0~3

    • 3个相同而独立的计数器/定时器通道,每通道含有1个8位控制字寄存器、1个16位计数初值寄存器、1个计数执行部件、1个输出锁存器。

      • CR

        • 16位初值寄存器
      • CE

        • 减一计数器

          • 执行部件
      • OL

        • 输出锁存器

          • 随时记录计数器的值,必要时可从中读出瞬时值。
    • 写入计数初值后,在门控信号控制下,对CLK脚上的脉冲进行-1计数。计数结束时,从OUT引脚输出脉冲信号。
    • 定时时间=时钟脉冲周期tc×预置的计数初值n
    • 计数初值=输入频率/输出频率
  • 控制字寄存器

    • 控制字写入控制字寄存器。用来选定计数通道,各通道工作方式、读写格式和计数数制。

      • 2通2读写锁3方式1二/BCD

初始化编程和门控信号功能

初始化编程步骤

  • 先写入控制字

    • 控制字用来选定计数通道,规定工作方式和计数格式。
  • 后写入计数初值n

    • 写入8/16位计数初值。16位要执行2条OUT指令,先送低8位,后送高8位。
    • 二进制计数时,n=0000-FFFFH,0表示65536,BCD计数时,n=0000-9999,0表示10000。

读出计时器当前的计数值

  • 给控制字寄存器写入锁存命令
    MOV AL,10000000B
  • 读低8位
  • 读高8位

8253的工作方式

方式种类

  • 方式0:计数结束中断,输出一个正跳变

    • 向计数通道写入计数初值n,OUT置为0。
    • 只有GATE=1才能进行计数
    • n写入1个CLK后才开始-1计数,在(n+1)个CLK后计数值减为0,从OUT输出1个正跳变可作中断请求信号。
    • 计数过程中可重写或改变计数值。
  • 方式1:可编程单稳输出,输出一个宽度可调的负脉冲

    • 写入控制字置为方式1,OUT变低。
    • 装入计数初值,GATE产生正跳变时,才启动计数
    • 计数器减为0时, OUT由低变高,产生1个负脉冲。
    • 允许当前计数未完时,由GATE多次触发计数,OUT输出会保持N个CLK脉宽的低电平
    • 下个GATE正跳变到来时将初值n重装入,从n开始计数
  • 方式2:比率发生器,输出序列负脉冲

    • GATE=1,写入计数初值n后减1计数,减到1时OUT输出1个与CLK脉冲等宽的负脉冲,然后自动装入n,重开始计数。
    • 这样,每隔n个时钟脉冲就会输出1个负脉冲,对时钟脉冲进行n分频。
    • 计数过程中装入新初值n’后,下次计数时按n’计数。
    • GATE变低停止计数,由低变高后重装入初值计数。
  • 方式3:方波发生器。方式2,3均可n分频

    • 类似于方式2,对时钟脉冲进行n分频,但输出方波
    • 若初值为偶数,每次-2,减到0时OUT=0;又从初值起-2,减到0时OUT=1,不断循环进行,输出一系列对称方波
    • 若初值为奇数,先-1,后每次-2,减到0时OUT=0 ;又从初值起先-3,后每次-2,减到0时OUT=1,循环进行,输出不完全对称方波
    • 计数过程中GATE变低,停止计数。变高后,重新从n开始计数。
  • 方式4:软件触发选通,写入n开始计数

    • GATE=1,写入计数初值n后,触发减1计数,减到0时输出1个脉宽的单个负脉冲,n一次有效。
    • 如要继续计数,必须重新装入n
    • 计数过程中GATE变低,停止计数,由低变高后,重新装入初值开始计数,减到0后输出一个负脉冲
  • 方式5:硬件(GATE上升沿)触发选通

    • 写入计数初值后,等GATE产生正跳变,由硬件触发计数。
    • 计数值减到0,输出1个脉宽的负脉冲,并自动装入计数初值,但不计数,仍要等硬件触发计数
    • 计数过程中,允许当前计数未完时的多次重触发,从计数初值开始计数
    • 也允许写入新计数值,硬件触发按新初值计数

工作流程

  • 开始计数

    • 硬件触发还是软件触发
      写入方式字OUT引脚电平
  • 计数中

    • 计数中OUT输出波形
    • 计数过程中门控信号GATE对计数操作的影响
  • 计数结束

    • 是否重复计数

门控信号控制功能

  • 写入计数初值后,方式0,2,3,4,在GATE为高时允许计数。
  • 方式1,5,由GATE的上升沿触发计数。

小结

  • 初始化后OUT输出:

    • 只有方式0,在写入控制字后输出为低:其余5种方式,都是在写入控制字后输出为高。
  • 计数开始的触发方式:

    • 方式0,2,3,4都是写入计数初值后,计数过程开始了,为软件触发,方式1和方式5在写入计数初值后,需要由外部GATE信号的上升沿触发启动,为硬件触发计数。
  • 自动重复计数:

    • 方式2和方式3为自动重复工作方式,其他4种方式都是一次性计数,要继续工作需要重新启动。

思维导图

8253.png

Theme Jasmine by Kent Liao