⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.c

📁 avr单片机的定时器使用范例
💻 C
字号:
//#include <iom16.h>
#include <avr/io.h> 
#include <avr/interrupt.h>
//程序目地:简单了解avr定时器的设置--SIGNAL(中断向量)
//模式:定时器1中断模式
//测试方法:把uc_Led输出到io口,例如PORTB(在main函数设置相应的io口为输出)
//演示效果:io口的灯依次闪烁,最低位的改变周期为1秒
unsigned char uc_Led;

void timer1_init(void)  //定时器1中断函数
{
 TCCR1B=0X00;//先停止定时器1
 TCNT1H=0Xfc;//设定计数器初值65536-1000000/1024= 64559 = 0xfc2f //定时一秒 内 部震荡 1 M 赫兹
 TCNT1L=0X2f;
 TCCR1A=0X00;//启动定时器1,使用1024分频
 TCCR1B=0X05;
}
SIGNAL(SIG_OVERFLOW1)     //interrupt[TIM1_OVF]
{
 TCNT1H=0Xfc; //重设初始值
 TCNT1L=0X2f; //完成一次工作
 PORTB=uc_Led;//输出
 //TCCR1B=0X05;
 uc_Led++; 

}
 
int main(void)
{
  DDRB=0XFF;
  SREG|=0X80;// 全局中断使能即  sei();
  TIMSK|=0X04;
  timer1_init();
    
  while(1)
   {
     //代码
   };
   
}
//总结:1.定时器的设置通用性不够
//      2.定时器的设置通用性不够好

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -