单片机C语言定时计数器
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计数器与定时器
一个12MHz的晶振,它提供给计数器的脉冲时间间 的晶振,它提供给计数器的脉冲时间间 一个 的晶振 是多少呢? 隔是多少呢? 就是12MHz/12等于 等于1MHz,也就是 个us 就是 等于 ,也就是1个 结论:计数脉冲的间隔与晶振有关。 结论:计数脉冲的间隔与晶振有关。 12MHz的晶振,计数脉冲的间隔是1us 的晶振,计数脉冲的间隔是 的晶振 6MHz的晶振,12分频为 的晶振, 分频为 分频为6MHz/12等于 等于0.5MHz, 的晶振 等于 , 计数脉冲的间隔也就是2us 计数脉冲的间隔也就是 计数脉冲的间隔即是1个机器周期( 计数脉冲的间隔即是 个机器周期(12/fosc) 个机器周期 )
定时/计数器的控制方法 定时 计数器的控制方法
定时/计数器方式寄存器TMOD(89H) 定时 计数器方式寄存器 计数器方式寄存器 ( )
T1 GATE C / T M1 M0 GATE C / T T0 M1 M0
TMOD
M1 M0:工作方式定义位 :
0 0:方式0 :方式 0 1:方式1 :方式 1 0:方式2 :方式 1 1:方式3 :方式
能否考虑硬 能否考虑硬 件延时? 件延时 定时/计数器 定时 计数器
计数器与定时器
计数概念的引入 计数概念的引入
选票画“ 选票画“正” 家里面用的电度表、汽车上的里程表 家里面用的电度表、汽车上的里程表 电度表
计数器的容量 计数器的容量
一个水盆在水龙头下,水滴不断落下, 一个水盆在水龙头下,水滴不断落下,盆的容量是有限 过一段时间之后,水就会逐渐变满。 的,过一段时间之后,水就会逐渐变满。 电度表的计数器最多只计到99999… … 电度表的计数器最多只计到 AT89S51单片机中有两个16位的计数器(T0、T1), 单片机中有两个 位的计数器( 、 ), 单片机中有两个 位的计数器 最大的计数量是65536。 。 最大的计数量是
计数器与定时器
定时概念 定时概念
AT89S51单片机中的计数器:计数作用、定时作用。 单片机中的计数器:计数作用、定时作用。 单片机中的计数器 作用 作用 定时(时钟)的用途: 定时(时钟)的用途: 打铃器,电视机定时关机,空调定时开关等等 打铃器,电视机定时关机,空调定时开关等等 定时关机 定时开关 计数器是如何作为定时器来用的呢? 计数器是如何作为定时器来用的呢? 是如何作为定时器来用的呢 将闹钟定时在1个小时后闹响( 秒针走了3600次) 将闹钟定时在 个小时后闹响(是秒针走了 个小时后闹响 走了 次 时间就转化为秒针走的次数的(计数的次数) 时间就转化为秒针走的次数的(计数的次数) 计数的次数和时间之间十分相关。关系:秒针每 计数的次数和时间之间十分相关。关系:秒针每一 之间十分相关 走动的时间正好是1s。 次走动的时间正好是 。
Tx端 Tx端 TRx位 TRx位 GATE位 GATE位 INTx端 INTx端
≥1
C/T=1
&
与门 或门
定时/计数器的工作方式 定时 计数器的工作方式1 计数器的工作方式
方式1 定时初值/ 方式1:定时初值/定时时间计算
定时器的每个机器周期自动加 直到溢出 定时器的每个机器周期自动加1直到溢出 每个机器周期自动 定时时间: 定时时间:T= ( 12 / fosc ) * (65536 - X) X为定时初值 为定时初值
定时/计数器的控制方法 定时 计数器的控制方法
T1 GATE C / T M1 M0 GATE C / T T0 M1 M0
TMOD
振荡器
÷12 C/T=0 TLx THx (8位) (8位) 位 位 控制 =1 开关接通 TFx 申请 中断
Tx端 Tx端 TRx位 TRx位 GATE位 GATE位 INTx端 INTx端
计数器与定时器
计数初值
12MHz的晶振,计数脉冲是1us,则计满 的晶振,计数脉冲是 的晶振 ,则计满65536个脉冲 个脉冲 定时10ms就可以了,怎么 就可以了, 需65.536ms,但现在我只要定时 ,但现在我只要定时 就可以了 办? 定时10ms为10000个us,在计数器里面放进 为 定时 个 ,在计数器里面放进55536就 就 可以。 可以。 赋给定时器计数器寄存器TH1、TL1 将55536赋给定时器计数器寄存器 赋给定时器计数器寄存器 、 TH1 = D8H TL1 = F0H
12MHz晶振呢? 晶振呢? 晶振呢
定时/计数器的工作方式 定时 计数器的工作方式1 计数器的工作方式
产生500us定时进行初始化。 (晶振 定时进行初始化 晶振=6MHz) 例:要求对T0产生 要求对 产生 定时进行初始化。 晶振 由分析得知: 选择方式 选择方式1,初值=FF06H 由分析得知:T0选择方式 ,初值
编译、下载、 编译、下载、调试
编译软件: 编译软件:keil 下载软件:STC-ISP 下载软件:
引例
LED闪烁 闪烁 程序 软件延时
定时时间不 够精确 CPU利用率 利用率 不高
//ledoneflash.c #include <reg52.h> sbit LED_CS=P1^4; sbit LED1=P0^0; void mDelay(unsigned int Delay) { unsigned int i; for(;Delay>0;Delay--) { for(i=0;i<114;i++) {;} } } void main() { LED_CS=0; while(1) { LED1=!LED1; mDelay(300); } }
定时/计数器的工作方式 定时 计数器的工作方式1 计数器的工作方式
若晶振频率为6MHz,工作方式 下单片机 例:若晶振频率为 若晶振频率为 ,工作方式1下单片机 最小与最大定时时间。 的最小与最大定时时间。
分析: 分析:已知 fosc = 6MHz 则: (机器周期)1Tm = 12Tclk = 12/6MHz = 2µs 机器周期) µ 粗略地说: 粗略地说:Tmin ≈ 2µs µ Tmax = 65536×2 us= 131072µS × µ =131.072ms
≥1
C/T=1
&
与门 或门
定时/计数器的控制方法 定时 计数器的控制方法
定时/计数器控制寄存器TCON(88H) 定时 计数器控制寄存器 计数器控制寄存器 ( )
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
TFx: T0 (T1) 计数溢出标志位。 : 计数溢出标志位。 =1 计数溢出; 计数溢出; =0 计数未满 TFx标志位可用于申请中断或供CPU查询。 标志位可用于申请中断或 CPU查询。 查询 标志位可用于申请中断 中断方式:自动清零; 查询方式:必须软件清零。 中断方式:自动清零;但查询方式:必须软件清零。 软件清零 TRx: T0 (T1) 运行控制位。 : 运行控制位。 启动计数; =1 启动计数; =0 停止计数
定时/计数器的工作方式 定时 计数器的工作方式1 计数器的工作方式
例:从P1.0 脚输 出频率=1KHz方波, 出频率 方波, 方波 晶振为6MHz。 晶振为 。 要求: 定时器 ; 要求:用定时器0;工 方式1 作方式1 分析:确定 的工作 分析:确定T0的工作 方式TMOD、定时 方式 、 初值TH0、TL0 初值 、
定时/计数器的控制方法 定时 计数器的控制方法
工作方式
方式0: 个 位定时 位定时/计数器 方式 :2个13位定时 计数器 方式1: 个 位定时/计数器 计数器T0、 (常用) 方式 :2个16位定时 计数器 、T1(常用) 方式2: 个 位自动重装定时/计数器 位自动重装定时 计数器T0、 (常用) 方式 :2个8位自动重装定时 计数器 、T1(常用) 方式3: 分为2个 位 方式 :T0 分为 个8位Timer;T1 此时不工作 ;
定时/计数器的控制方法 定时 计数器的控制方法
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
IEx: 外部中断 请求标志。 : 外部中断0/1请求标志 请求标志。 =1 存在中断请求; =0 无中断请求 存在中断请求; ITx: 外部中断触发方式选择。 : 外部中断触发方式选择。 =1 低电平触发; =0 下降沿触发 低电平触发;
TMOD GATE C / T M1 M0 GATE C / T M1 X X X X 0 0 0 M0 1
初始化: 初始化:TMOD = 0X01; TH0 = 0xFF; TL0 = 0x06; EA = 1; ET0 = 1; TR0 = 1;
// 选T0方式 方式1 方式 // 赋初值高 位 赋初值高8位 // 赋初值低 位 赋初值低8位 // 开总中断 // 开 T0中断 中断 // 启动 T0定时 定时
GATE门控位 Timer可由软件与硬件两者控制 门控位: 门控位 可由软件与硬件两者控制
• GATE = 0 ——软件启动 软件启动 软件 Timer的启动 停止由软件对 的启动/停止由软件对 位写1/0控制 的启动 停止由软件对TR0 (TR1) 位写 控制 • GATE = 1 —— 硬件启动
定时/计数器的工作方式 定时 计数器的工wenku.baidu.com方式1 计数器的工作方式
工作方式1: 个 位的定时/计数器 工作方式 : 2个16位的定时 计数器 最大计数脉冲个数: 最大计数脉冲个数:65536(216) 计数脉冲个数
振荡器 ÷12 C/T=0 TLx THx (8位) (8位) 位 位 控制 =1 开关接通 TFx 申请 中断
计数器与定时器
定时概念 定时概念
只要计数脉冲的间隔相等, 只要计数脉冲的间隔相等,则计数值就代表了时间的流 间隔相等 定时) 逝(定时) 结论:单片机中的定时器和计数器是 结论:单片机中的定时器和计数器是一个东西 定时器 计数器是记录的单片机外界发生的事情, 计数器是记录的单片机外界发生的事情, 单片机外界发生的事情 定时器则是单片机内部提供一个非常稳定的计数源。 定时器则是单片机内部提供一个非常稳定的计数源。 单片机内部提供一个非常稳定的计数源 提供给定时器的是计数源:单片机的晶振经过 分频 提供给定时器的是计数源:单片机的晶振经过12分频后 定时器的是计数源 晶振经过 分频后 获得的一个脉冲源,晶振的频率很准, 获得的一个脉冲源,晶振的频率很准,所以这个计数脉 冲的时间间隔也很准。 冲的时间间隔也很准。
定时/计数器的控制方法 定时 计数器的控制方法
T1 GATE C / T M1 M0 GATE C / T T0 M1 M0
TMOD
C/T :计数器 定时器选择位 计数器/定时器选择位
= 1 外部事件计数器。对T0 (T1) 引脚的负脉冲计数; 外部事件计数器 计数器。 引脚的负脉冲计数; = 0 片内时钟定时器。对机器周期脉冲计数定时。 片内时钟定时器。对机器周期脉冲计数定时。 定时器
任务五
定时/ 定时/计数器
任务分析: 定时 计数器实现LED闪烁 计数器实现 任务分析:用定时/计数器实现 闪烁 硬件
单片机片内定时/计数器的结构 单片机片内定时 计数器的结构 计数器的 定时/计数器的工作方式 定时 计数器的工作方式 计数器的
软件
定时/计数器的初始化 定时 计数器的初始化 计数器的 定时/计数器的编程 定时 计数器的编程 计数器的
计数器与定时器
溢出
当水不断落下,盆中的水不断变满, 当水不断落下,盆中的水不断变满,最终有一滴水使得 盆中的水满了。这时如果再有一滴水落下,就会发生什 盆中的水满了。这时如果再有一滴水落下, 么现象?水会漫出来 用个术语来讲就是“溢出” 漫出来, 么现象?水会漫出来,用个术语来讲就是“溢出” 水溢出是流到地上,而计数器溢出后将使得 水溢出是流到地上, 计数器溢出后将使得TFx(溢出 后将使得 ( 标志位) 变为1。 标志位)会由0变为 。 变为 一旦TFx由0变成 ,就会引发事件,就象定时的时间一 由 变成 变成1,就会引发事件, 一旦 闹钟就会响一样。 到,闹钟就会响一样。 要有多少个计数脉冲才会使TFx由0变为 ? 变为1? 要有多少个计数脉冲才会使 多少个计数脉冲才会使 由 变为