标题:
ATmega128 定时器测试
[打印本页]
作者:
liuqq
时间:
2015-5-21 23:45
标题:
ATmega128 定时器测试
功能说明/*全部定时1S*/
#define F_CPU 16000000UL
#include "DS12864.h"
#include <avr/io.h>
#include <avr/interrupt.h>
volatile unsigned int count0=0,flag0=0;
volatile unsigned int count1=0,flag1=0;
volatile unsigned int count2=0,flag2=0;
volatile unsigned int count3=0,flag3=0;
/**************************************************************
隶属模块:定时器测试模块
函数名称:Timer0_Init()
函数功能: 初始化
入口参数: 无
返回参数:无
***************************************************************/
void Timer0_Init()
{
TCNT0 = 0x06;
TCCR0 = 0x03;//64分频
TIMSK |= (1<<TOIE0);//使能定时器0中断
}
/**************************************************************
隶属模块:定时器测试模块
函数名称:Timer1_Init()
函数功能: 初始化
入口参数: 无
返回参数:无
***************************************************************/
void Timer1_Init()
{
TCNT1H = 0x3C;
TCNT1L = 0xB0;
TCCR1A = 0x00;
TCCR1B = 0x03;//64分频
TIMSK |= (1<<TOIE1);//使能定时器1中断
}
/**************************************************************
隶属模块:定时器测试模块
函数名称:Timer2_Init()
函数功能: 初始化
入口参数: 无
返回参数:无
***************************************************************/
void Timer2_Init()
{
TCNT2 = 0x06;
TCCR2 = 0x03;//64分频
TIMSK |= (1<<TOIE2);//使能定时器2中断
}
/**************************************************************
隶属模块:定时器测试模块
函数名称:Timer3_Init()
函数功能: 初始化
入口参数: 无
返回参数:无
***************************************************************/
void Timer3_Init()
{
TCNT3H = 0x3C;
TCNT3L = 0xB0;
TCCR3A = 0x00;
TCCR3B = 0x03;//64分频
ETIMSK |= (1<<TOIE3);//使能定时器3中断
}
/************************测试函数**************************/
int main(void)
{
DDRD = 0xF0;
DDRE = 0xF0;
LCD12864_Init();
SREG &=~(1<<7);
Timer0_Init();
Timer1_Init();
Timer2_Init();
Timer3_Init();
SREG |= (1<<7);
LCD12864_Dis_Str(0,0,"定时器0:");
LCD12864_Dis_Str(0,1,"定时器1:");
LCD12864_Dis_Str(0,2,"定时器2:");
LCD12864_Dis_Str(0,3,"定时器3:");
while(1)
{
//TODO:: Please write your application code
if(count0>1999){
count0=0;
flag0=(flag0+1)%10;
LCD12864_Dis_Ctr(5,0,flag0+0x30);
}
if(count1>4)
{
count1=0;
flag1=(flag1+1)%10;
LCD12864_Dis_Ctr(5,1,flag1+0x30);
}
if(count2>999)
{
count2=0;
flag2=(flag2+1)%10;
LCD12864_Dis_Ctr(5,2,flag2+0x30);
}
if(count3>4)
{
count3=0;
flag3=(flag3+1)%10;
LCD12864_Dis_Ctr(5,3,flag3+0x30);
}
}
}
/**************************************************************
隶属模块:定时器测试模块
函数名称:SIGNAL(TIMER0_OVF_vect)
函数功能: 定时器0中断函数
入口参数: 无
返回参数:无
***************************************************************/
SIGNAL(TIMER0_OVF_vect)
{
TCNT0 = 0x06;
count0++;
}
/**************************************************************
隶属模块:定时器测试模块
函数名称:SIGNAL(TIMER1_OVF_vect)
函数功能: 定时器1中断函数
入口参数: 无
返回参数:无
***************************************************************/
SIGNAL (TIMER1_OVF_vect)
{
TCNT1H = 0x3C;
TCNT1L = 0xB0;
count1++;
}
/**************************************************************
隶属模块:定时器测试模块
函数名称:SIGNAL(TIMER2_OVF_vect)
函数功能: 定时器2中断函数
入口参数: 无
返回参数:无
***************************************************************/
SIGNAL (TIMER2_OVF_vect)
{
count2++;
}
/**************************************************************
隶属模块:定时器测试模块
函数名称:SIGNAL(TIMER3_OVF_vect)
函数功能: 定时器3中断函数
入口参数: 无
返回参数:无
***************************************************************/
SIGNAL (TIMER3_OVF_vect)
{
TCNT3H = 0x3C;
TCNT3L = 0xB0;
count3++;
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1