📄 timer.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 + -