8253的3个计数器是完全独立的,可以分别使用,在使用时主要做如下两项工作:一是先根据实际应用要求,设计0~2计数器的硬件电路接口;二是分别对该0~2计数器进行初始化编程,只有初始化后8253才可以按要求正常工作。下面举例说明8253作为定时器和计数器的应用。
1.8253初始化编程
例6-1若8253端口地址为304H~307H,要使计数器2工作在方式0,仅用8位二进制计数,初值为128;要使计数器1工作在方式4,按BCD码计数,初值为1234,对其进行初始化编程。
例6-2 在例6-1的基础上,若要求在计数过程中每间隔一段时间就读一次计数器1的当前计数值,并检测是否减到0。
例6-3 将8253的计数器0作为10ms定时器,设CLK0时钟脉冲频率为200kHz,编写8253的初始化程序。
解:1)先计算初值n,已知CLK0频率为200kHz,即时钟周期为5μs,所以n=10ms/5μs=2000
2)初始化程序:
2.8253定时应用
例6-4 8253通道1接有一个发光二极管,要使发光二极管以点亮1s、熄灭1s的间隔工作,通道2也接有一个发光二极管,要使发光二极管以点亮2s、熄灭2s的间隔工作,8253各通道端口地址分别FFE8H~FFEBH。电路硬件图如图6-13所示,试编程完成以上工作。
解:根据要求,8253通道l应输出一个占空比为1∶1、周期为2s的方波。通道2应输出一个占空比为1∶1、周期为4s的方波。从图6-13可知,通道0的CLK0输入时钟周期为1μs,若通道0工作为定时,其输出最大定时时间为1μs×65536=65.5ms,可见使用一个通道达不到定时时间2s或4s的要求。因此,采用通道级联的办法,将通道0的输出OUT0作为通道1和通道2的输入脉冲,就能方便地实现本题要求的工作。
图6-13 8253级联定时应用
设置8253的通道0工作于分频器方式,其输出端OUT0的输出脉冲是相对于1MHz频率的分频脉冲,若选定OUT0输出脉冲周期为2ms,则通道0的计数初值为2000。周期为2ms的脉冲作为通道1的输入,要求输出端OUTl的波形为方波且周期为2s,所以通道1的计数初值选定为1000。同理,周期为2ms的脉冲作为通道2的输入,要求输出端OUT2的波形为方波且周期为4s,则通道2的计数初值选定为2000。(www.xing528.com)
各通道的控制字分别为
通道0的控制字 00110111B
通道1的控制字 01110111B
通道2的控制字 10110111B
各端口地址分别为
通道0端口地址 0FFE8H
通道1端口地址 0FFE9H
通道2端口地址 0FFEAH
控制字端口地址 0FFEBH
各通道计数初值分别为
通道0计数初值(BCD码) 2000
通道1计数初值(BCD码) 1000
通道2计数初值(BCD码) 2000
下面是完成级联定时应用的程序
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。