微机原理关于8253计数初值
程序员文章站
2024-01-30 23:31:16
...
计数初值的计算
计数初值在计算时以下几种情况:
一、当计数器工作在方式2或者方式3的时候,功能实际上是一个分频器,因此计数常数就是分频系数。
分频系数=输入CLK频率/OUT端输出频率
二、当计数器作为定时器工作时,CLK一般来自系统内部的时钟,计数常数就是定时系数。
定时系数(计数初值)N = 定时时间(T)× 输入时钟频率(ƒCLK)
= 定时时间(T)/时钟脉冲周期(tCLK)
注:
- 1GHz=1000MHz,1MHz=1000kHz,1kHz=1000Hz
- 1s=1000ms,1 ms=1000μs,1μs=1000ns
- s(秒)、ms(毫秒)、μs(微秒)、ns(纳秒)
时钟周期与时钟频率互为倒数,可得如下
- 时钟频率 时钟周期
1Hz 1s
1KHz 1ms
1MHz 1μs
1GHz 1ns - 知道这些,便能很快换算周期与频率.
比方10KHz, 那么就是1/10 = 0.1ms, 即100μs.
比方100ns, 那么就是1/100 = 0.01GHz, 即10MHz.
例题练习
- 8253通道0的CLK0外接频率ƒCLK为1MHz的时钟信号,若按二进制计数方式工作,若要定时10ms则设置的计数初值为多少?
- 解:时钟脉冲周期(tCLK)=1/1MHz=1/106=10-6 秒=10-3 毫秒
定时系数(计数初值)N = 10/10-3 =10000
- 计数器0工作在方式3下,输出的重复频率为2KHz,计数脉冲的输入为2.5MHz,计算计数初值。
- 解:(计数初值) N=2.5MHz/2KHz=2.5×106Hz/2×103 Hz=1250
- 设某8088系统中,8253占有口地址70H~73H,其实现产生电子时钟基准(定时时间为50ms)和产生方波用作扬声器音调控制(频率为1kHz),设系统中提供计数频率为2MHz
,试为其编制8253的初始化程序。
- 解:
(1)根据题意8253的3个通道和控制寄存器口地址分别为:
通道0 | 通道1 | 通道2 | 控制寄存器 |
---|---|---|---|
70H | 71H | 72H | 73H |
(2)产生电子时钟基准可采用方式2,计数初值N=50ms/(1/2MHz)=100000>65535故要两个计数通道协作完成,选用通道0和通道1
通道0 | 通道1 |
---|---|
控制字=00110100B,计数初值N0=1000 | 控制字=01010100B,计数初值N1=100 |
(3)产生方波方式采用方式3
(计数初值)N=2MHz/1KHz=2×106Hz/1×103 Hz=2000 可选用计数通道2,控制字=10100111B
初始化程序段:
;对通道0初始化
MOV AL,00110100B
OUT 73H,AL ;送通道0的方式控制字
MOV AX,1000
OUT 70H,AL
MOV AL,AH
OUT 70H,AL ;送通道0的计数初值
;对通道1初始化
MOV AL,01010100B
OUT 73H,AL ;送通道1的方式控制字
MOV AL,100
OUT 71H,AL ;送通道1的计数初值
;对通道2初始化
MOV AL,10100111B
OUT 73H,AL ;送通道2的方式控制字
MOV AL,20H
OUT 72H,AL