📜  8254控制字和操作模式

📅  最后修改于: 2021-06-29 00:14:15             🧑  作者: Mango

先决条件– 8254可编程间隔计时器
上电后,8254的状态不确定。未定义所有计数器的模式,计数值和输出。在编程时确定每个计数器的工作方式。必须对每个计数器进行编程,然后才能使用它。未使用的计数器无需编程。通过写一个控制字,然后写一个初始计数来对计数器进行编程。

控制字8254 –
8254的控制字格式为:

在这里,通过使用SC1和SC0的值,我们选择了一个特定的计数器:

SC1 SC0 SELECTION
0 0 C0
0 1 C1
1 0 C2
1 1 Read back status

RW1和RW0的值用于确定读–写操作:

RW1 RW0 SELECTION
0 0 Counter Latch Command
0 1 Read/Write lower byte
1 0 Read/Write higher byte
1 1 Read/Write lower byte followed by higher byte

M2,M1,M0的值用于确定8254的工作模式:

M2 M1 M0 OPERATING MODE
0 0 0 MODE 0
0 0 1 MODE 1
X (0/1) 1 0 MODE 2
X (0/1) 1 1 MODE 3
1 0 0 MODE 4
1 0 1 MODE 5

控制字的LSB用于选择计数器是二进制还是BCD。如果该位为0,则用作二进制计数器;如果其值为1,则用作BCD库。

8254的操作模式:

  1. 模式0(终端计数中断)–模式0通常用于事件计数。写入控制字后,OUT最初为低电平,并将一直保持低电平,直到计数器达到零为止,然后在每个时钟周期后将其递减1。然后OUT变为高电平并保持高电平,直到将新的计数或新的模式0控制字写入计数器为止。 GATE = 1启用计数,GATE = 0禁用计数。
  2. 模式1(硬件可一次触发)– OUT最初为高电平。在触发开始单触发脉冲后,OUT将在CLK脉冲上变为低电平,并且将保持低电平直到计数器达到零为止。
  3. 模式2(速率发生器)–最初的OUT值很低。启用计数后,它会变高,并且此过程会定期重复。计数值=输入频率/输出频率。此模式用作分频器。
  4. 模式3(方波发生器)–当GATE = 1时启用计数,而当GATE = 0时禁用计数。此模式用于生成方波,并生成时间段(等于计数)。
    如果N是计数并且是偶数,则波的开启时间= N / 2,关闭时间= N / 2
    如果N为奇数,则导通时间=(N + 1)/ 2,关闭时间=(N – 1)/ 2
  5. 模式4(软件触发的选通)–在此模式下,通过使用GATE = 1启用计数,并通过GATE = 0禁用计数。最初,OUT的值较高,而当计数值处于最后阶段时,其值为低电平。计数将重新加载,以供随后的时钟脉冲使用。
  6. 模式5(硬件触发的选通)– OUT最初将为高电平。计数由GATE的上升沿触发。当初始计数到期时,OUT将在一个时钟脉冲后变为低电平,然后再次变为高电平。写入控制字和初始计数后,直到触发后的时钟脉冲才加载计数器。