微机——8253计数器/定时器
写在前面
微机期末整理重点,复习自用
8253计数器/定时器
内部大致结构同8255,3个通道,A1 ~ A0片选
控制字寄存器

初始化编程步骤
- (控制端口)写入控制字,设置计数通道的工作方式等
- (对应的通道端口)设置计数初值
工作方式
- 方式0 计数结束中断

OUT计数结束产生一个上升沿,可用来触发单次中断
注:触发中断后记得先重新填入计数初值再结束中断
GATE接高电平:允许计数
再使用需要重新设置初值
- 方式1 可编程单稳态输出

GATE上升沿:开始计数
OUT产生一个宽度为时钟脉冲宽度×n的负单脉冲
- 方式2 比率发生器

在最后一次计数时产生一个短暂的负脉冲
可以连续生成一个一定频率的负脉冲序列
可以用来定时触发中断
- 方式3 连续方波

n=偶 连续对称方波
n=奇 基本对称的连续方波,正脉冲会多一个周期
-
方式4 软件触发选通
-
方式5 硬件触发选通
8253应用举例
-
产生各种定时波形
- 输出频率为……的方波(方式3)
- 产生宽度为……的单脉冲(方式1)
- 指定方式触发,给定时间常数(计数初值)
- ……
n=时钟脉冲频率/输出频率=输出脉冲宽度/时钟脉冲宽度
1MHz=106Hz=10-6s=1μs
-
通道级联(这种题一般都是产生连续方波,只是需要分频,算一下计数初值就好)
单通道的计数范围达不到要求,所以必须级联8253使用
就是分频,假设用两个通道分频
总的计数初值=通道0的计数初值×通道1的计数初值
CLK0接时钟脉冲,OUT0接CLK1,OUT1接输出外设
读取计数值
命令字的RL1 RL0两位为00时是锁存,发出命令后计数停止可以用IN读出。
注意:当该通道为同时使用高8位和低8位时,要读两次,先读出低8位,再读出高8位
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效