AVR 定时器中断程序

发布者:小九分析仪最新更新时间:2018-05-18 来源: eefocus关键字:AVR  定时器  中断程序 手机看文章 扫描二维码
随时随地手机看文章

基于7.3728M晶振作AVR定时器的时钟源进行1S定时! 
实验内容: 
使用AVR的定时器T1做1S定时,并使用PD口的LED指示灯做简单指示。

#include

#include


#define DISP_DDR   DDRD

#define DISP_PORT  PORTD


/*--------------------------------------------------------

程序名称:定时器1初始化程序

--------------------------------------------------------*/

void timer1_init(void)

{

 TCCR1B = 0x00;  //stop timer


 TCNT1H = 0xE3;  //设置 TC1 的 计数寄存器 高8位值,基于7.3728M晶振

 TCNT1L = 0xDF;  //设置 TC1 的 计数寄存器 低8位值,基于7.3728M晶振


 //OCR1AH = 0x1C; //设置 TC1 的 输出比较寄存器A 高8位值

 //OCR1AL = 0x20; //设置 TC1 的 输出比较寄存器A 低8位值


 //OCR1BH = 0x1C; //设置 TC1 的 输出比较寄存器B 高8位值

 //OCR1BL = 0x20; //设置 TC1 的 输出比较寄存器B 低8位值


 //ICR1H  = 0x1C; //设置 TC1 的 输入捕获寄存器 高8位值

 //ICR1L  = 0x20; //设置 TC1 的 输入捕获寄存器 低8位值


 TCCR1A = 0x00;

 TCCR1B = 0x05;  //设置TC1 为 CLK/1024分频,启动TC1

//选择时钟为晶振1024分频即7372800/1024=7200HZ

//定时1s (65535-初值)/(定时器时钟7200)=1s

//得初值换算十六进制给TCNT1H TCNT1L

 MCUCR = 0x00;  //设置 MCU 的 控制寄存器

 GICR  = 0x00;  //设置 中断控制寄存器

 TIMSK = 0x04;  //设置 定时计数器 的 屏蔽寄存器(TIMSK = BIT(2);)溢出中断使能

 //SEI();  //enable interrupts

}

/*--------------------------------------------------------

程序名称:定时器1中断服务程序

--------------------------------------------------------*/

#pragma interrupt_handler timer1_ovf_isr:9

void timer1_ovf_isr(void)

{

 TCNT1H = 0xE3;  //reload counter high value

 TCNT1L = 0xE1;  //reload counter low value

 DISP_PORT++;  //每加1S,显示加1

}


void main(void)

{

 DISP_DDR = 0XFF; //设置显示口为输出

 timer1_init();

 SEI();

 while(1);

}



关键字:AVR  定时器  中断程序 引用地址:AVR 定时器中断程序

上一篇:AVR外部中断INT1检测按键,使用LED作指示
下一篇:Avr128 看门狗设置

推荐阅读最新更新时间:2024-03-16 16:03

STM32同时开启两个定时器,其一个定时器不能设置断点的原因
最近在编写程序的时候发现stm32单片机的定时器不同的类型其配置是不一样的。 在编程的过程中开了两个定时器,结果在调试程序的时候发现TIM6中断程序不能设置断点,就说明这段程序可能没有被运行,后来我又换了TIM1也是一样不行。 查看数据手册如下: 从stm32f030c8t6的数据手册可以看出,定时器有三个类型,分别是高级定时器,通用定时器以及基本定时器,我猜想可能是定时器的类型不一样,因此配置上面也不一样,因此我选用了TIM14作为我第二个定时器,配置和TIM3一样,这一次就成功的可以设置断点了。事实证明我的猜想是对的。
[单片机]
STM32同时开启两个<font color='red'>定时器</font>,其一个<font color='red'>定时器</font>不能设置断点的原因
51单片机定时器的方式0使用注意
当 51单片机工作模式寄存器 设置为 TMOD.M1M0 = 00 工作方式0 TMOD.C/T = 0 定时工作模式 定时器/计数器0 将工作在 13bit 定时器模式。。 与想当然的 13 bit = 5bit(TH0 ) + 8bit (TL0)的搞法不同的是。。(谁让你不看规格) 13bit = 8bit(TH0) + 5bit(TL0) TL0的高三位没有用到。。 假设定时器工作频率为2M,那么中断服务程序定长1ms的写法应该是。。 1 /* 2 * @Func: void TIMER0_IRQHandler(void) interrupt 1 3 * @Usage: timer0
[单片机]
codeblocks+winavr开发avr单片机(atmega16)
在avrfeaks论坛里,有一个帖子是关于在codeblocks环境下(与winavr结合)开发avr单片机的,挺不错的,这里转载一下: I got curious, so I downloaded the current C::B installer. It looks better than when I last used it (a year ago?): - A working installation program, with no need to install graphics packages and stuff (WxWidget, MinGW) separately. - A user manual
[单片机]
codeblocks+winavr开发<font color='red'>avr</font>单片机(atmega16)
AVR IO输出之数码管扫描程序
系统功能 使用AVR扫描四个数码管,动态扫描,动态显示,左扫,右扫,来回扫。。。 硬件设计 AVR主控电路原理图 数码管动态扫描电路原理图 软件设计 下面部分从TXT拷出,拷到网页,代码部分缺省了很多空格,比较凌乱,请谅解! //目标系统: 基于AVR单片机 //应用软件: ICC AVR /*01010101010101010101010101010101010101010101010101010101010101010101 ---------------------------------------------------------------------- 实验内容: 动态的循环显示“0-9
[单片机]
<font color='red'>AVR</font> IO输出之数码管扫描<font color='red'>程序</font>
AVR控制舵机的程序
利用相位修正pwm模式,因为有反相器的原因用的模式11 #include iom128v.h #include macros.h #define uchar unsigned char #define uint unsigned int //延时函数 void Delay_ms(uint i) {uint j; for(;i 0;i--) { for(j=8000;j 0;j--); } } //相位修正PWM初始化函数 void PBPWM_Init() { DDRB|=BIT(5)|BIT(6);//PB5~PB6为输出 PORTB=0x00; } void timer1() { TCCR1A=0x73;
[单片机]
AVR单片机及其特点
什么是AVR单片机? AVR单片机有什么优点? 什么要选择AVR单片机? AVR单片机是ATMEL公司研制开发的一种新型单片机,它与51单片机、PIC单片机相比具有一系列的优点: 1:在相同的系统时钟下AVR运行速度最快; 2: 芯片内部的Flsah、EEPROM、SRAM容量较大; 3:所有型号的Flash、EEPROM都可以反复烧写、全部支持在线编程烧写(ISP); 4:多种频率的内部RC振荡器、上电自动复位、看门狗、启动延时等功能,零外围电路也可以工作; 5:每个IO口都可以以推换驱动的方式输出高、低电平,驱动能力强; 6:内部资源丰富,一般都集成AD、DA模数器;PWM;SPI、USART、TW
[单片机]
STM32F407定时器11之PWM
实验现象:LED一亮一灭闪烁 在main函数中改变比较寄存器的值 /**************************************************************************************** *函 数 名:bsp_InitTIM11 *函数功能:初始化IO 和定时器11 *形 参:arr重装载寄存器的值 psc预分频 *返 回 值:无 *****************************************************************************************/ void bsp_InitTIM11(uint16_t
[单片机]
探索STC12C5A60S2定时器
  STC12C5A60S2单片机集成了共4个16位定时器,两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器 做串行通讯的波特率发生器,再加上2路PCA模块可再实现2个16位定时器;   1. 基本特性   STC12C5A60S2单片机集成了两个16位定时/计数器。   1)寄存器   1.1)TMOD 定时器工作方式控制寄存器,包括13位寄存器、16位寄存器、8位寄存器等;   1.2)TCON 定时器控制寄存器,主要包括定时器启动控制位等;   1.3)AUXR 辅助寄存器,用以设置分频;默认12分频   1.4)TH0/1:定时器高8位寄存器   1.5)TL0/1:定时器
[单片机]
探索STC12C5A60S2<font color='red'>定时器</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved