微机原理笔记分享
课程链接:https://www.bilibili.com/video/BV1qv411Y7AA?share_source=copy_web
可编程定时器
概述
定时与计数是微机系统中经常使用的功能
实现定时与计数的方法有三种:
-
软件法
- 编写程序实现延时/计数
- 特点:节省费用,灵活方便;但浪费CPU时间
-
硬件法
- 采用硬件电路实现定时/计数
- 特点:不占CPU时间;不可程序控制调节,精度低
-
软硬结合
- 采用8253等可编程定时/计数器
- 特点:定时期间不占CPU时间,程控调节定时时间,精度高
8253工作方式
工作方式
-
结构与引脚
-
3个相同且独立的通道
-
每个通道有一个16位减法计数器
-
每个通道可设定6种工作方式
-
-
8253-定时与计数
-
8253工作过程
-
对CLK引脚上的脉冲按二进制或BCD格式计数。每来一个脉冲,内部计数器减1,减至0,从OUT端输出一个脉冲。
-
定时:对等间隔脉冲计数即可实现定时。
- 定时时间=脉冲周期×计数次数
-
计数:只计脉冲个数,可不等间隔。
-
-
CLK引脚输入脉冲的频率
- 8253: fCLK≤2MHz
- 8254: fCLK≤5MHz~10MHz
-
门控信号GATE
-
通常:
-
-
控制字
初始化编程
-
写控制字:
- 选择通道,工作方式,计数格式等
-
写计数初值:
- 初值8位:OUT一次即可
- 初值16位:OUT两次.先低位后高位
-
例
-
例:设8253口地址分别为3FOH, 3F2H, 3F4H, 3F6H。要求通道0工作于方式3,计数初值n=1234H(BCD)。试编写初始化程序。
-
6种工作方式-方式0
-
1.方式0—计数结束中断
- 设定方式0,写入控制字, OUT立即变低
- 设GATE=1,写入计数初值n后,再来一个CLK脉t:n丁具.正装入计数器。之后,每来一个CLK(下降沿),计数器减1,减至0后, OUT由低变高,可请求中断。
- 若GATE=0,暂停计数;GATE=1,继续进行。
- 应用:定时/计数。定时/计数结束后,可请求中断
-
方式1-可编程单稳脉冲
- 设定方式1,写入控制字后, OUT立即变高
- 写入n后,并不开始计数,直至GATE出现上升沿,则在下一个CLK到来时, OUT变低并开始计数
- 计数结束, 0UT变高
- 负脉冲宽度=TOLK×n
- 可重复触发:计数未结束, GATE又来上升沿,则n重新装入并计数
- 应用:作单稳态触发器,暂态宽度可调节
-
方式2-负脉冲发生器/分频器
- 设定方式2,写入控制字后,0UT立即变高
- 设GATE=1,则写入初值后的下一个CLK开始计数
- 当计数值减至1时,OUT变低,减至0时, OUT又变高,同时将n的初值自动重新装入并重复上述过程
- OUT端输出一系列连续的负脉冲,频率=fclk/n
- 若计数过程中写入新的n值,则本次计数结束后按新的n值进行
- GATE=0,禁止计数,OUT变高;GATE变高, n自动装入并工作
- 应用:作分频器/负脉冲序列发生器
-
方式3-方波发生器
- 设定方式3,写入控制字后, OUT立即变高
- 与方式2相同之处:产生连续的脉冲,频率= fclk/n
- 与方式2不同之处:输出脉冲为正负对称的方波(n为偶数)
- 若n为奇数,输出脉冲的负脉宽比正脉宽少一个CLK周期
- 应用:作方波发生器/分频器
-
方式4-软件触发选通
- 设定方式4,写入控制字后, OUT立即变高
- 设GATE=1,写入n后的下一个CLK开始计数,当计数值减为0时, OUT变低,一个TCLK后,又变高,形成一个负脉冲
- 软件触发(即:装入n值)一次,仅输出一个负脉冲
- GATE=0,停止计数,GATE变高后,重新装入n,开始计数
- 应用:(定时)产生选通脉冲(软件触发)
-
方式5-硬件触发选通
- 设定方式5,写入控制字后, OUT立即变高
- 写入n后,并不开始计数,直至GATE出现上升沿,则在下一个CLK到来时开始计数,计数值减为0后,OUT输出一个TcLR的负脉冲,并自动再装入n,等待GATE再来上升浴触发
- 硬件(GATE)触发一次,仅输出一个负脉冲
- 若计数过程中GATE又来上升沿,则重新装入n,开始计数若计数
- 过程中写入新的n值,则在下次GATE上升沿装入新n值并计数
- 应用:(定时)产生选通脉冲(硬件触发)
8253工作方式总结
8253应用例子
例1定时功能之一:产生各种定时波形
-
编写初始化程序
例2定时功能之二:长延时
-
设8253口地址:81H, 83H, 85H, 87H
-
欲输出方波:T=20s,f=0.05Hz
-
分频系数
- n=2M/0.05=40,000,000
-
通道0、1串联:
- n0=5000, n1=8000
-
例3.计数功能
-
设8253口地址:FOH, F2H, F4H, F6H对工件计数,每500个中断一次
- 应用场合:卷烟,高速车辆,统计人数等
- *8254可一次锁存多个计数器值