可编程计数器8253

控制口

8253控制字

SC1 SC0 计数器选择 RW1 RW0 计数器读/写选择
0 0 计数器0 0 0 锁存计数器当前计数值
0 1 计数器1 0 1 读/写计数值低8位
1 0 计数器2 1 0 读/写计数值高8位
1 1 非法 1 1 先低8位,再高8位
M2 M1 M0 计数器工作方式选择 BCD 计数器进制选择
0 0 0 方式0 0 16位二进制计数
0 0 1 方式1 1 BCD码计数
x 1 0 方式2
x 1 1 方式3
1 0 0 方式4
1 0 1 方式5

方式0 — 计数结束产生中断方式

  1. 写入控制字后OUT即变为低电平计数到0时,OUT变为高电平,并停止计数
  2. 计数初值N写入后在下一个CLK下降沿才送入计数装置开始计数,因此实际计数为N+1个脉冲
  3. GATE为高电平时允许计数,为低电平时停止计数
  4. 若计数过程中写入新的计数初值,则在下一个CLK按新值重新计数

方式1 — 可重新触发单稳态触发器方式

  1. 写入控制字后OUT即变为高电平等待GATE上升沿后,下一个CLK的下降沿才开始计数,并置OUT为低电平计数到0时OUT又变为高电平
  2. 计数结束后,若GATE端再来上升沿,则会再次触发一轮计数周期
  3. 若计数过程中写入新的计数初值,需等待GATE端再次触发后才按新的初值计数

方式2 — 分频器方式

  1. 写入控制字后OUT即变为高电平,写入计数初值后,下一个CLK的下降沿开始计数,减到1时OUT变为低电平,持续一个CLK后OUT又变为高电平,并自动开始下一次计数过程。 Fout = Fclk/N
  2. GATE为高电平时允许计数,为低电平时停止计数
  3. 计数期间送入新值,不影响当前计数周期,下一周期才按新值计数

方式3 — 方波发生器方式

  1. 写入控制字后OUT即变为高电平,写入计数初值后,下一个CLK的下降沿开始计数,计数到一半时OUT变为低电平,计到终值时OUT又变为高电平,并自动开始下一次计数过程。 Fout = Fclk / N
  2. 若N为偶数,则高、低电平持续时间相等,均为N/2个CLK,即OUT输出为方波;若N为奇数,则高电平持续时间为(N+1)/2个CLK,低电平持续时间为(N–1)/2个CLK
  3. GATE为高电平允许计数,为低电平则停止计数
  4. 计数期间送入新值,不影响当前计数周期,下一周期才按新值计数

方式4 — 软件触发选通方式

  1. 写入控制字后OUT即变为高电平,写入计数初值后,下一个CLK的下降沿开始计数,计数到0时,OUT输出一个CLK的负脉冲,并停止计数
  2. GATE为高电平允许计数,为低电平则停止计数
  3. 若计数过程中写入新的计数初值,则在下一个CLK按新值重新计数

方式5 — 硬件触发选通方式

  1. 写入控制字后OUT即变为高电平,写入计数初值,等待GATE上升沿后。下一个CLK的下降沿才开始计数,计数到0时OUT输出一个CLK的负脉冲,并停止计数
  2. 计数结束后,若GATE端再来上升沿,则会再次触发一轮计数周期
  3. 若计数过程中写入新的计数初值,需等待GATE端再次触发后才按新的初值计数