文章目录
2. 定时/计数技术
2.1 定时和计数的概念及类型
2.2 外部定时方法及硬件定时器
2.3 可编程定时/计数器82C54A
2.3.1 外部特性和内部结构
2.3.1.1 外部特性
2.3.1.2 内部结构
2.3.2 8254的命令字
方式命令:
【例】使用计数器T1工作在4方式,且时间常数为3F8H;设307H是整个8254的命令寄存器的地址,305H是8254中定时器1的数据口地址,则初始化程序段为
MOV DX,307H ;命令口
MOV AL,01111000B ;方式字
OUT DX,AL
MOV DX,305H ;T1数据口
MOV AL,0F8H ;低8位计数值
OUT DX,AL
MOV AL,03H ;高8位计数值
OUT DX,AL
锁存命令
【例】要求在计数器通道1的计数过程中读取当前的计数值,并把读取的计数值装入到AX寄存器中。设4个端口的地址为:304H(通道0),305H(通道1),306H(通道2),307H(命令寄存器)
MOV DX,307H
MOV AL,01000000B ;锁存计数器1
OUT DX,AL
MOV DX,305H
IN AL,DX ;读低字节
MOV BL,AL
IN AL,DX ;读高字节
MOV AH,AL
MOV AL,BL
读回命令
D1,D2,D3用于选择3个计数器
1:选中,0:未选中;
D4,D5用于选择读当前状态还是当前计数值
0:要读取,1:不读取
【例】
读取计数器2的当前计数值,读回命令=11011000B
读取计数器2的当前状态,读回命令=11101000B
读取计数器2的当前计数值和状态,读回命令=11001000B
读取全部计数器的当前计数值和状态,读回命令=11001110B
状态字
状态字中的低6位D0-D5与方式字中的低6位是相同的;
D6表示计数器的输出状态:
1:输出引脚为逻辑1, 0:输出引脚为逻辑0
D7表示是否有空计数值:
1:空计数值,0:计数值有效
2.3.3 8254的工作方式
六种工作方式的比较:
(1)0方式和1方式的输出波形类似,但0方式靠软件启动,1方式靠硬件启动。
(2)2方式(分频器)和3方式(方波发生器),这两种方式共同的特点是具有自动再加载功能(装入能力)。
(3) 4方式和5方式的输出波形类似,但4方式靠软件启动,5方式靠硬件启动。
方式0
① 设定工作方式
② 设定计数初值
④ 计数初值送入计数器
⑤ 计数过程
⑥ 计数结束
方式1
① 设定工作方式
② 设定计数初值
③ 硬件启动
④ 计数值送入计数器
⑤ 计数过程
⑥ 计数结束
方式2
设置为2方式,OUT→1 ,写初值寄存器后,计数器启动,当计数器减到1,OUT→0,输出宽度为一个CLK周期的负脉冲,并自动重新装入初始值,自动启动计数。可以通过GATE=0暂停计数
方式3
计数值为偶数时,占空比为1:1。计数值为奇数时,
高电平比低电平多一个时钟周期
方式4
此方式设定后,输出OUT变成高电平;当写完计数初值后,计数器开始计数,计数回零结束,输出宽度为一个时钟脉冲的负脉冲,然后恢复高电平,并一直保持高电平不变
方式5
当写入计数初值后,计数器不启动计数,要由门控信号的上升沿启动才开始计数。
2.3.4 8254的计数初值及装入
2.3.5 8254的初始化
【例】选择2号计数器,工作在3方式,计数初值为533H(2 字节),采用二进制计数
MOV DX,307H ;命令口
MOV AL,10110110B; 方式命令字
OUT DX,AL ;
MOV DX,306; 2号计数器数据口
MOV AX, 533H; 计数初值
OUT DX, AL; 先送低字节到2号计数器
MOV AL,AH; 取高字节送AL
OUT DX,AL ; 后送高字节到2号计数器