所谓定时(计数)就是通过硬件或软件的方法产生一个时间基准,以此来实现对系统的定时或延时控制。要实现定时或延时控制,有三种主要方法:软件定时、纯硬件定时及可编程的硬件定时器/计数器。
双箭头:可双向传输
单箭头:如控制字寄存器,只能写入而不能读出
写入计数初值则启动
只计数一次
GATE=1时,才允许计数
如果GATE=0则计数暂停,当GATE=1后接着计数
计数由GATE启动
当计数到0后,不用送计数值,可再次由GATE脉冲启动,输出同样宽度的单拍脉冲。
写入计数初值则启动
通过计数值N,可对输入脉冲进行N分频
当GATE=0时,暂停计数;当GATE变高自动恢复计数初值,重新开始计数
写入计数初值则启动
输出位周期性的方波,周期为N个CLK脉冲的宽度
若计数值为偶数,则输出对称方波。如果计数值为奇数,则前(N+1)/2个CLK脉冲期间输出为高电平,后(N—1)/2个CLK脉冲期间输出为低电平。
当GATE=0时,暂停计数;当GATE变高自动恢复计数初值,重新开始计数
输出的波形不同
计数过程中GATE信号对计数操作的影响不同
启发计数器的触发方式不同
两种方式
①对每个计数器分别进行初始化,先写控制字,后写计数值。如果计数值是16位的,则先写低8位再写高8位。
②先写所有计数器的方式字,再写各个计数器的计数值。如果计数值是16位的,则先写低8位再写高8位。
控制字一般为尾地址
例如:假设一个8253在某系统中的端口地址40H—43H,如果要将计数器0设置为设置为工作方式3,计数初值为3060H,采用二进制计数法,则初始化方法如下:
MOV AL,36H ;设置控制字00110110(计数器0,方式3,写两个字节,二进制计数)
OUT 43H,AL ;写入控制寄存器
MOV AX,3060H ;设置计数值
OUT 40H,AL ;写低8位至计数器0
MOV AL,AH
OUT 40H,AL ;写高8位至计数器0
8254的计数频率可由直流至6MHz,8254-2可高达10MHz。而8253最高只能达到2.6MHz。
可以使三个计数器的计数值一次锁存
9.8 在一个定时系统中,8253的端口地址范围是480H~483H,试对8253的三个计数器进行编程。其中,计数器0工作在方式1,计数初值为3680H。
MOV AL,32H ;设置控制字0011 0010(计数器0,方式1,写两个字节(故读写格式选11),二进制
MOV DX,483H ;控制字地址
OUT DX,AL ;写入控制寄存器
MOV AX,3680H ;设置计数初值
MOV DX,480H ;计数器地址
OUT DX,AL ;先写第八位
MOV AL,AH
OUT DX,AL ;在写高八位