ATmega16开发板教程(4)——定时器

发布者:沈阳阿荣最新更新时间:2022-01-06 来源: eefocus关键字:ATmega16  开发板教程  定时器 手机看文章 扫描二维码
随时随地手机看文章

5、定时器

这里主要编写定时器0和1的定时功能,通过数码管显示。


定时器T0

首先T0是一个8位定时器,其主要由TCNT0(初值寄存器)、TCCR0(控制寄存器)。


TCCR0:FOC0,WGM00,COM01,COM00,WGM01,CS02,CS01,CS00。

如图,第5和6位是用来设置T/C的4种工作模式,这里主要是一般的定时器功能,所以WGM01和WGM00=0,即可。

其次,低3位是用来设置分频,程序里面设置1024分频,而时钟是11.0592MHz,所以定时时间=1024*(255-初值TCNT0)/11059200=10ms,所以初值寄存器TCNT0=147。T0是向上计数,溢出后清零,触发中断。


除了以上设置定时器0的基本初值和分频外,还有定时器0的使能位在寄存器TIMSK中,它包括3个定时器的使能以及比较中断的使能。


TIMSK:OCIE2,TOIE2,TICIE1,OCIE1A,OCIE1B,TOIE1,OCIE0,TOIE0


其中TOIE0=1,使能定时器0;OCIE0=1,是使能比较匹配中断,类似51单片机的TR0。其余是定时器1和2的使能位。


总中断-SREG:I,T,H,S,V,N,Z,C。总中断的最高位I=1即可,类似于51单片机的EA。


具体编程讲解如下图:

定时器0中断服务函数——按照格式写,更改向量名称即可

与51单片机类似,TCNT0在中断函数中重新赋值。


定时器T1

首先T1是一个16位定时器,其初值由TCNT1H、TCNT1L(初值寄存器)控制、工作模式由TCCR1A和TCCR1B控制。


TCNT1H和TCNT1L的初值设置与T0类似,根据分频设置来计算所得,如本例中定时器10ms,分频256,所以10ms=256*(65535- TCNT1)/11059200,得到TCNT1= 65535-432,然后将其分为2个8位字节,与51单片机类似的做法:TCNT1H =(65535-432)/ 256;TCNT1L= (65535-432)% 256。


TCCR1A:COM1A1,COM1A0,COM1B1,COM1B0,FOC1A,FOC1B,WGM11,WGM10


TCCR1B:ICNC1,ICES1,Dummy5,WGM13,WGM12,CS12,CS11,CS10


工作模式寄存器与T0类似,TCCR1B的低3位是设置分频,所以设置为100,即256分频,TCCR1B = 0x04。

如图,其中WGM13/WGM12/WGM11/WGM10是用来设置定时计数器的工作模式,这里是普通模式,所以TCCR1A = 0x00。


定时器1的使能位也在TIMSK中,TICIE1,OCIE1A,OCIE1B,TOIE1第2-5位都是设置定时器1的,其中TOIE1 = 1即可使能。


具体编程讲解如下图:

设置分频、计算初值、开启定时器即可完成所有配置。

与T0类似,定时器1的中断向量设置完毕后,重新赋初值。最后通过数码管显示定时器定时效果。


/**

******************************************************************************

*   @file      main.c

*   @author    Alex——小白

*   @version   V1.0

*   @date      2021.1.20

*   @brief     定时器定时,数码管显示

*   @store     Proteus仿真店子

*   @Link      https://shop484534014.taobao.com/

*   @Email     844545015@qq.com

******************************************************************************

*   @attention  All Rights Reserved  

**/

#include

/*定义驱动数码管显示段和位,此处为共阴极数码管编码,共阳极可直接取反即可*/

uint8_t table_duan[16]={

  0x3f,0x06,0x5b,0x4f,

  0x66,0x6d,0x7d,0x07,

  0x7f,0x67,0x77,0x7c,

  0x39,0x5e,0x79,0x71

};

uint8_t table_wei[8]={         

  0xfe,0xfd,0xfb,0xf7,

  0xef,0xdf,0xbf,0x7f

};

void main(void)

{

    SEG.SEG_Init();

    TIMER.Timer0_Init();

    TIMER.Timer1_Init();

    while(1)

    {

        SEG.SEG_Display(table_wei[0],table_duan[TIMER.Timer0_Sec%10]);

        SEG.SEG_Display(table_wei[1],table_duan[TIMER.Timer0_Sec/10]);

        SEG.SEG_Display(table_wei[6],table_duan[TIMER.Timer1_Sec%10]);

        SEG.SEG_Display(table_wei[7],table_duan[TIMER.Timer1_Sec/10]);        

    }

}

关键字:ATmega16  开发板教程  定时器 引用地址:ATmega16开发板教程(4)——定时器

上一篇:ATmega16开发板教程(6)——串口通信
下一篇:ATmega16开发板教程(3)——74HC595驱动数码管显示

推荐阅读最新更新时间:2024-11-03 02:22

ZigBee基础实验(八)--定时器
1、概述   睡眠定时器用于设置系统进入和退出低功耗睡眠模式之间的周期。睡眠定时器还用于当进入低功耗睡眠模式时,维持定时器2 的定时。   睡眠定时器的主要功能如下: ● 24 位的定时器正计数器,运行在32kHz 的时钟频率 ● 24 位的比较器,具有中断和DMA 触发功能 ● 24 位捕获   睡眠定时器是一个24 位的定时器,运行在一个32kHz 的时钟频率(可以是RCOSC 或XOSC)上。定时器在复位之后立即启动,如果没有中断就继续运行。定时器的当前值可以从SFR 寄存器ST2:ST1:ST0 中读取。 2、定时器比较   一次定时器比较发生在定时器的值等于24位比较器的值,寄存器ST2:ST1:ST0可以用来设置比
[单片机]
ZigBee基础实验(八)--<font color='red'>定时器</font>一
单片机C语言程序设计:定时器控制单只LED
/* 名称:定时器控制单只 LED 说明:LED 在定时器的中断例程控制下不断闪烁。 */ #include reg51.h #define uchar unsigned char #define uint unsigned int sbit LED=P0^0; uchar T_Count=0; //主程序 void main() { TMOD=0x00; //定时器 0 工作方式 0 TH0=(8192-5000)/32; //5ms 定时 TL0=(8192-5000)%32; IE=0x82; //允许 T0 中断 TR0=1;
[单片机]
单片机C语言程序设计:<font color='red'>定时器</font>控制单只LED
MSP430F5529学习笔记(四)——定时器|PWM
本节我们讲述定时器的应用,在使用定时器前补充一点关于MSP430.H头文件自带的延时函数的知识,该头文件自带__delay_cycles(x);的延时函数,根据官方信息说延时时间是一个周期,内部可以放入常量和表达式,根据其特性我们可以运用其设计较为准确的US,MS级延时函数,操作方法为将以下函数段放入头文件之下宏定义即可在后续程序中调用。 #define CPU_F ((double)8000000)//CPU_F 为系统主时钟频率 #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//微秒 #define delay_ms(x) __de
[单片机]
MSP430F5529学习笔记(四)——<font color='red'>定时器</font>|PWM
迅为4412开发板Linux驱动教程之内核开发基础
主要内容 • Linux体系结构 • Linux内核结构 • Linux内核源码目录结构 Linux体系结构 从上图可知,Linux体系结构由用户空间和内核空间构成 • 为什么Linux体系要分为用户空间和内核空间? • 从程序员的角度分析 – 将linux底层和应用分开,做应用的做应用,做底层的做底层,各干各的。 经济学的原理是,分工产生效率。 从安全性的角度分析,为了保护内核。现代CPU通常都实现了不同的工作模式。以ARM为例:ARM实现了7种工作模式,不同模式下CPU可以执行的指令或者访问的寄存器不同: – (1)用户模式usr (2)系统模式sys(3)管理模式svc(4)快速中断fiq(5)外部中断irq
[单片机]
迅为4412<font color='red'>开发板</font>Linux驱动<font color='red'>教程</font>之内核开发基础
TIM2定时器中断与中断嵌套
/************************************************************ Copyright (C), 2012-2022, yin. FileName: main.c Author: ycw Version : 1.0 Date: 2012.04.22 Description: TIM2 EXIT0 NVIC Version: V1.0 Function List: TIM2 EXIT0 NVIC History: author time version desc YCW 12/04/22 1.0
[单片机]
Atmega 16的按键使用
#include avr/io.h #include util/delay.h #define uchar unsigned char #define uint unsigned int void init() { DDRD&=~(_BV(PD4)|_BV(PD5)|_BV(PD6)|_BV(PD7));//PD口高四位为输入,接有按键 DDRB|=_BV(PB4)|_BV(PB5)|_BV(PB6)|_BV(PB7);//PB口高四位为输出,接有LED PORTD|=_BV(PD4)|_BV(PD5)|_BV(PD6)|_BV(PD7);//使能PD口高四位的上拉电阻,必须要有该语句,否则无法判别按键 PORTB&=~
[单片机]
S5PC100看门狗定时器源码解读
看门狗(WatchDog)定时器和PWM定时功能目的不一样。它的特点是,需要不停地接受信号(一些外置看门狗芯片)或重新设置计数值(如S5PC100的看门狗控制器),保持计数值不为0。一旦一段时间接收不到信号,或计数值到0,看门狗将发出复位信号复位系统或产生中断。(扩展阅读:脉冲宽度调制定时器) 看门狗的作用是微控制器受到干扰进入错误状态后,使系统在一定时间间隔内复位。因此看门狗是保证系统长期、可靠和稳定运行的有效措施。目前大部分的嵌入式芯片内都集成了看门狗定时器来提高系统运行的可靠性。 S5PC100处理器的看门狗是当系统被故障(如噪声或者系统错误)干扰时,用于微处理器的复位操作,也可以作为一个通用的16位定时器来请求中断操作。看
[单片机]
S5PC100看门狗<font color='red'>定时器</font>源码解读
简仪计数器/定时器模块满足严格的工业标准和安全要求
应用 在电气开关柜的控制模组中,精确的时延控制对于确保高电压设备的安全运行至关重要。控制模组需要输出固定时延的脉冲信号,以控制外部的高电压设备。这种应用场景要求脉冲信号的时延精度达到10 ns级别,以满足严格的工业标准和安全要求。 挑战 传统的脉冲边沿检测方法通常采用示波器或时间间隔计时器等仪表进行测量,但这些方法存在精度不够高、测量速度慢、操作繁琐等弊端,难以满足高压控制模组测试的苛刻要求。 解决方案 针对这一挑战,简仪提供的PCIe-5211计数器/定时器模块成为了理想的解决方案。该模块具备8通道定时器,每个通道都能独立进行双边沿测量,完美契合了客户的测试需求。内部搭载的100 MHz高精度时钟,确保了每次测量都能达到
[嵌入式]
简仪计数器/<font color='red'>定时器</font>模块满足严格的工业标准和安全要求
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved