可编程定时/计数器 8254

1 8254 基本功能

8254 是 8253 的改进型,基本功能相同,硬件组成、外部引脚、编程特性完全兼容

  1. 3 个独立的 16 位计数器
  2. 6 种工作方式
  3. 读回命令,除了读取当前技术单元内容,还可以读出状态寄存器的内容

2 8254 内部结构和外部引脚

在这里插入图片描述

数据总线缓冲器:用于将 8254 与系统数据总线相连。写入 8254 工作模式,向计数器写入计数初值,某计数器读取当前的计数值

读/写逻辑电路:选定制定寄存器,并指定读写操作

A0A1说明
00计数器0
01计数器1
10计数器2
11控制寄存器

控制寄存器:决定计数器的工作方式

计数器:拥有 3 个相互独立,结构完全一样的计数器。每个计数器有 3 个引脚:GATEi 门控信号输入端,CLKi 计数脉冲输入端,OUTi 信号输出端

部件说明
计数器初值寄存器 CR存放计数初值
计数器工作单元 CE用于进行 -1 操作

向计数器初值寄存器写值,会自动传入计数器工作单元,直到减到某值,OUTi 产生信号

3 8254 工作方式

软件启动:GATEi 为高电平

硬件启动:GATEi 有一个上升沿

重复计数:计数完毕后,初值寄存器的值又回存入工作单元

工作方式启动方式是否重复计数输出信号
0结束输出低电平
1计数输出低,结束输出高
2软、硬结束前一个输出低
3软、硬输出对称方波
4结束输出 CLK 宽度的低电平
5结束输出 CLK 宽度的低电平

输出不对称方波时,(N+1)/2 个时钟周期输出为高电平,(N-1)/2 个时钟周期输出为低电平,也就是高电平比低电平多一

4 8254 控制字及其状态字

8254 控制字有两个:一个是用来设置工作方式的方式控制字;另一个是用来设置读回命令的读出控制字

方式控制字

D7D6D5D4D3D2D1D0
计数器选择读写格式选择工作方式选择是否使用 BCD

D5D4 = 0,锁存
D5D4 = 1,只读写低 8 位
D5D4 = 2,只读写高 8 位
D5D4 = 3,先读写低 8 位,再读写高 8 位

十进制(BCD 码)计数值范围为 1 ~ 10000,取最大值时写入 0000H
二进制计数值范围为 0 ~ 65536,取最大值时写入 0000H

读出控制字

D7D6D5D4D3D2D1D0
110 则锁存计数值0 则锁存计数器状态工作方式选择0

D4 = 0 则会将计数器状态存入状态寄存器

状态字

D7D6D5D4D3D2D1D0
OUT 引脚现行状态计数初值是否装入工作方式选择

5 8254 应用

注意

  1. 每次启动计数,需要两个写操作,第一个写脉冲写入控制字,第二个写脉冲写入计数初值寄存器
  2. 每个计数器的控制字均送入控制寄存器
  3. 计数初值 = fCLK / fOUT

举例

8254 的计数器 0 做频率 4 kHz 的方波发生器,8254 的端口地址位 40H ~ 43H, fCLK0 = 12 MHz

;方波发生器所以工作在方式3
;计数初始值=12Mhz/4kHz=3000
;方式控制字00110111B
MOV AL,00110111B
OUT 43H,AL				;写控制字
MOV AX,3000H			;选择的是BCD计数
OUT 40H,AL				;写计数初值低8位
MOV AL,AH				;OUT不允许是H所以要先给L
OUT 40H,AL				;写计数初值高8位

8254 的计数器 2 做 1s 标准时钟,端口地址为 0360H、0362H、0364H、0366H,fCLK0 = 10 MHz

;计数初值=10MHz/1HZ=10 000 000 > 65535 
;所以一个计数器不行,要用俩,且能重复计数,做1s标准时钟
;所以计数器2工作在方式2,计数器0工作在方式3
;计数器2计数初值=2000,计数器0计数初值=5000
;计数器2方式控制字10110101B,计数器0方式控制字00110101B
MOV AL,00110111B
OUT 0366H,AL
MOV AX,2000H
MOV 0360H,AL
MOV AL,AH
MOV 0360H,AL
MOV AL,10110101B
OUT 0366,AL
MOV AX,5000H
MOV 0364H,AL
MOV AL,AH
MOV 0364,AL

8254 端口地址为 40H ~ 43H,读出计数器 2 的计数值

MOV  AL,1100100B	
OUT  43H,AL			;写控制字
IN   AL,42H
MOV  DL,AL			;读状态
IN   AL,42H			;读低8位
MOV  AH,AL
IN   AL,42H			;读高8位
XCHG AH,AL
  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值