在系统中,常常需要对事件进行定时或者计数,定时的方法有很多,常用的方法分为三种:软件定时、不可编程的硬件定时和可编程的硬件定时。
软件定时:比如循环一段延时子程序,但是这种方式不同的机器所产生的延时不一样,而且程序会占用CPU时间。
不可编程的硬件定时:延长时间的长短固定,不够灵活。
可编程的硬件定时:以上优点都包括,且应用灵活。用到芯片,比如常用的8253计数器。
因此这篇文章着重介绍8253的芯片功能,以及它的内部构造。
组成结构:
8253由3个独立的16位计数器通道组成的,它们单独工作,每次通过程序编码选择要工作的通道。计数器有6种工作方式,也是通过编程设定。此外,还可以按照二进制或者BCD十进制的方式计数。
由此可以看出,在编程设定的代码中(也就是所谓的“控制字”),需要包含:
1、 通道的选择
由于有三个通道,因此需要两位。00 01 10 分别代表计数器0、1、2
2、 工作方式的选择
一共有6种工作方式,因此需要3位。000 001 X10 X11 100 101 分别代表方式0 ~