在这里,我们将看到8254可编程间隔定时器芯片的控制字和操作模式。
在讨论其工作模式和控制字属性之前,我们应该了解该芯片的一些重要事实。
芯片加电时,状态不确定。当时未定义模式,计数值和输出。
每个计数器在使用前都必须编程。我们不需要对一些未使用的计数器进行编程。
计数器是通过编写控制字和一个初始计数来编程的。
计数器的结构是这样的-
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
SC1 | 0SC0 | RW1 | RW2 | M2 | M1 | M0 | BCD /二进制 |
我们可以通过SC1和SC0选择计数器。
SC1 | SC0 | Selection |
---|---|---|
0 | 0 | Counter 0 |
0 | 1 | Counter 1 |
1 | 0 | Counter 2 |
1 | 1 | 读取返回状态 |
RW1和RW2的值用于表示读取和写入操作。
RW1 | RW0 | Selection |
---|---|---|
0 | 0 | 计数器锁存命令 |
0 | 1 | 读或写低字节 |
1 | 0 | 读取或写入高位字节 |
1 | 1 | 读或写低字节,后跟高字节 |
M2,M1和M0的三位用于确定编程模式。这些如下所示:
M2 | M1 | M0 | 操作模式 |
---|---|---|---|
0 | 0 | 0 | Mode 0 |
0 | 0 | 1 | Mode 1 |
X | 1 | 0 | Mode 2 |
X | 1 | 1 | Mode 3 |
1 | 0 | 0 | Mode 4 |
1 | 0 | 1 | Mode 5 |
控制字的最后一位(LSb)用于选择计数是二进制还是BCD。如果该值为0,它将充当二进制计数器,否则将充当BCD计数器。
现在让我们看看8254芯片的这六个工作模式:
模式 | 类型 | 描述 |
---|---|---|
Mode 0 | 中断和终端计数 | 这用于事件计数。写入控制字后,OUT首先为低电平。它会一直保持低电平,直到计数器达到0,然后在每个时钟周期后递减1。 然后,OUT变为高电平,并保持高电平,直到有一个新计数或将新的模式0控制字写入计数器为止。GATE = 1表示启用计数,0表示禁用计数。 |
Mode 1 | 硬件可再触发一次 | OUT首先将为高电平,在触发一个脉冲开始后,时钟脉冲将为低电平。它将保持为0,直到计数器达到0。 |
Mode 2 | 速率发生器 | 最初,OUT为低电平。启用计数后,它会变高。此过程会定期重复。此模式用作分频器。 |
Mode 3 | 方波发生器 | 如果GATE为1,则启用计数,否则禁用。此模式用于生成方波。时间段等于计数。如果计数为偶数,则波形的接通时间为count / 2。 否则,开启时间为(count + 1)/ 2,关闭时间为(count-1)/ 2。 |
Mode 4 | 软件触发的频闪 | 如果GATE为1,则启用计数,否则禁用。当计数处于最后阶段时,初始OUT值较高,而较低。再次为后续时钟脉冲重新加载计数。 |
Mode 5 | 硬件触发频闪 | 最初,OUT为高。计数由门的上升沿触发。当初始计数到期时,OUT会在一个时钟脉冲内变为低电平,然后再次变为高电平。 写入控制字和初始计数后,直到一次触发后的时钟脉冲才加载计数器。 |