0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AVR单片机定时计数器学习笔记分享

h1654155282.3538 来源:网络整理 2018-04-26 14:18 次阅读

定时计数器的结构与应用定时计数器(Timer/Counter)常用于计数、延时、测量 周期、频率、脉宽、提供定时脉冲信号等。在实际应用中,对于转速,位移、速度、流量等物理量的 测量,通常也是由传感器转换成脉冲电信号,通过使用定时计 数器来测量其周期或频率,再经过计算处理获得。

AVR的定时计数器接口功能: 通过定时计数器与比较匹配寄存器相互配合,生成占空比 可变的方波信号,即脉冲宽度调制输出PWM信号,可用于 D/A、马达无级调速控制、变频控制等。本文主要介绍的是AVR单片机定时/计数器学习笔记,具体的跟随小编来了解下。

AVR单片机定时/计数器学习笔记

定时/计数器1(16位)有普通模式、CTC模式、快速PWM模式、相位修正PWM模式等工作模式。

1、普通模式(设为溢出中断工作方式,向量号为9)

工作原理:在设定的时钟频率下,计数寄存器由初值逐次加1,当达到计数最大值(65535)时,溢出,执行中断子程序。

需要配置的寄存器:T/C1控制寄存器B(TCCR1B)、计数寄存器(TCNT1H和TCNT1L)、T/C1中断屏蔽寄存器(TIMSK)。

(1)由TCCR1B的bit2、bit1、bit0设置时钟频率(有内部和外部)

(2)由TCNT1H和TCNT1L设置计数初值(注意应先写H,再写L)

(3)由TIMSK的bit2设置中断使能(注意最后还应开启总中断SREG|=BIT(7))

编程时中断的声明 #pragma interrupt_handler 中断函数名:中断向量号

注意:在中断子程序中,应该再次装入计数初值,因为进入中断时计数初值变成了0。

2、CTC模式(需要用到OC1A、OC1B两个引脚)

应用:用于产生占空比为50%的方波信号

AVR单片机定时计数器学习笔记分享

( N为分频系数 )

需要配置的寄存器:T/C1控制寄存器A(TCCR1A)、T/C1控制寄存器B(TCCR1B)、输出比较寄存器1A(OCR1A)。

(1)TCCR1A的bit7、bit6用于设置OC1A脚的比较输出模式,bit5、bit4用于设置OC1B脚的比较输出模式。(此处我们都设为,比较匹配时OC1A、OC1B电平取反)

(2)TCCR1B的bit4、bit3和TCCR1A的bit1、bit0组合来设置波形产生模式。(此处我们设为模式4—CTC模式)

(3)TCCR1B的bit2、bit1、bit0设置时钟频率。

(4)OCR1A用来设置计数的上限值

例程:

#include 《iom16v.h》

#include 《macros.h》

void main()

{

DDRD|=0X30; //PD4、PD5设为输出

TCCR1A=0X50; //比较匹配时取反

TCCR1B=0X09; //CTC模式,无预分频

OCR1A=1999; //OC1A、OC1B均产生2KHz的方波信号(系统时钟为8MHz)

}

3、快速PWM模式(需要用到OC1A、OC1B两个引脚)

前提:由TCCR1B的bit4、bit3和TCCR1A的bit1、bit0组合来设置波形产生模式为模式15(快速PWM)。

AVR单片机定时计数器学习笔记分享

(1)TCCR1A的bit7、bit6用于设置OC1A脚的比较输出模式,bit5、bit4用于设置OC1B脚的比较输出模式。(此处我们设为,OC1A比较匹配时取反;OC1B比较匹配时清零,TOP时置位)

(2)TCCR1B的bit2、bit1、bit0设置时钟频率。

(3)OCR1A用来设置计数的上限值,OCR1B用来设置计数的匹配值

例程1:

#include 《iom16v.h》

#include 《macros.h》

void main()

{

DDRD|=0X30;

TCCR1A=0X63; //15模式,OC1B比较匹配时清零,TOP时置1;OC1A匹配时取反

TCCR1B=0X1B; //64预分频

OCR1A=1249; //上限值,OC1B输出100Hz;OC1A输出50Hz方波

OCR1B=250; //匹配值,OC1B输出占空比为20%

}

例程2:

#include《iom16v.h》

#include《macros.h》

//产生38KHz 占空比为50%的信号

void main()

{

DDRD|=0X30;

TCCR1A=0X23; //配置寄存器,OC1A作为普通IO口;OC1B比较匹配时清零,TOP时置1

TCCR1B=0X19; //15模式,无预分频

OCR1A=209; //上限值,得到38KHz的PWM信号(OC1B口)

OCR1B=104; //匹配寄存器,2分之1的占空比

}

例程3:

#include《iom16v.h》

#include《macros.h》

//产生1Hz 占空比为50%的信号

void main()

{

DDRD|=0X30;

TCCR1A=0X23; //配置寄存器,OC1A作为普通IO口;OC1B比较匹配时清零,TOP时置1

TCCR1B=0X1D; //15模式,1024预分频

OCR1A=7811; //上限值,得到1Hz的PWM信号(OC1B口)

OCR1B=3905; //匹配寄存器,2分之1的占空比

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AVR单片机
    +关注

    关注

    22

    文章

    607

    浏览量

    55046
收藏 人收藏

    评论

    相关推荐

    基于PWM功能的AVR单片机定时计数器设计要点

    广泛)定时/计数器的PWM工作方式。AVR定时/计数器的PWM模式可以分成快速PWM和频率(相位)调整PWM两大类。PWM频率 = 系统时钟
    发表于 09-09 16:08

    AVR单片机如何用C语言写定时器/计数器的中断?

    求助:AVR单片机如何用C语言写定时器/计数器的中断?各位大侠,小弟我以前只用C51单片机,现在突然换mega8了,有点儿不知所措。
    发表于 07-23 17:47

    51单片机内的两个定时计数器能否同时定时

    51单片机内的两个定时计数器可否同时定时?例如,我写一个时钟的程序,可否用定时器0定时,而用定时器
    发表于 04-14 18:15

    利用51单片机定时计数器怎么实现计数中断

    利用51单片机定时计数器计数模式,怎么实现计数中断,比如记满十个数中断,用C语言,谢谢了
    发表于 04-16 21:28

    求助51关于定时计数器程序

    本人新手,初学单片机定时计数器那里学的不是很懂,求哪位大手给我一段完整的使用定时计数器编写的流水灯汇编程序,或者只让一个灯在规定时间内亮,我可以根据这个修改。谢谢了
    发表于 06-21 11:37

    定时计数器T0作定时应用技术(一)

    定时计数器T0作定时应用技术(一) 1. 实验任务 用AT89S51单片机定时/计数器T0产生一秒的
    发表于 04-16 10:39 3288次阅读
    <b class='flag-5'>定时计数器</b>T0作<b class='flag-5'>定时</b>应用技术(一)

    单片机定时计数器_从零开始学习单片机系列

    【从零开始学习单片机系列】第05章单片机定时计数器
    发表于 01-06 17:55 0次下载

    AVR单片机定时计数器的介绍及其应用

    单片机内部,一般都会集成由专门硬件电路构成的可编程定时计数器定时计数器最基本的功能就是对脉冲信号“自动”进行计数。这里所谓的“自动”,指计数
    发表于 10-22 16:19 5次下载
    <b class='flag-5'>AVR</b><b class='flag-5'>单片机</b><b class='flag-5'>定时</b>器<b class='flag-5'>计数器</b>的介绍及其应用

    单片机教程之单片机定时计数器与串行接口的详细资料说明

    本文档的详细介绍的是单片机教程之单片机定时计数器与串行接口的详细资料说明主要内容包括了:1.定时计数器结构和工作原理,2.定时计数器的控制
    发表于 02-14 17:33 16次下载
    <b class='flag-5'>单片机</b>教程之<b class='flag-5'>单片机</b>的<b class='flag-5'>定时计数器</b>与串行接口的详细资料说明

    51单片机——定时计数器

    要的全部时间,以机器周期为单位。在51单片机中有两组定时计数器,与CPU相互独立,。工作原理是随机器内部的时钟或者外部脉冲信号对寄存器数据加1,当计数器加到全1时,再加1便会置0溢出,使相应终端...
    发表于 11-10 20:50 8次下载
    51<b class='flag-5'>单片机</b>——<b class='flag-5'>定时计数器</b>

    51单片机学习笔记(三):定时/计数器

     1.  51单片机有2个16位定时/计数器定时器 位置 简称 定时器0 P3.4 T0
    发表于 11-14 13:36 10次下载
    51<b class='flag-5'>单片机</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>(三):<b class='flag-5'>定时</b>/<b class='flag-5'>计数器</b>

    单片机定时器和计数器学习笔记

    单片机stc89c52rc中有两个定时器/计数器,T0和T1。每个定时器/计数器既可以实现定时
    发表于 11-14 18:21 10次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>定时</b>器和<b class='flag-5'>计数器</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>

    8052单片机定时计数器T2的使用

    8052单片机定时计数器T2的使用最近做毕业设计用到了8052单片机,因为8052单片机的性能更强一些,而且有6个中断源,相较于8051单片机
    发表于 11-20 11:21 10次下载
    8052<b class='flag-5'>单片机</b><b class='flag-5'>定时计数器</b>T2的使用

    51单片机-矩阵键盘和数码管设计 -定时计数器

    矩阵键盘和数码管设计 -定时计数器【实验目的】1.学习单片机定时计数器的结构;2.学习单片机
    发表于 11-23 16:51 20次下载
    51<b class='flag-5'>单片机</b>-矩阵键盘和数码管设计 -<b class='flag-5'>定时计数器</b>

    51单片机定时计数器

    一、作用 定时器/计数器定时器的作用最为突出。一般来说涉及到定时器,都可以算作定时器算法。简单的如秒表等。复杂的如果系统内核的
    发表于 02-11 15:32 1次下载
    51<b class='flag-5'>单片机</b>的<b class='flag-5'>定时计数器</b>