AVR定时器配置程序

/*--------------------------------------------*/
开发环境:CVAVR
创建时间:2012-5-28
单片机::M16
晶振: 内部1M

/---------------------定时器0 --------------------------------/

/**************普通模式**************/
TCCR0 = 0x01;
TCNT0 = 0x00; //初值
OCR0 = 0x00;
TIMSK | = 0x01; //开启中断
#asm("sei")
/*中断入口*/
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0 = 0x00; //初值
} //->最长延时 240us
/*****CTC定时模式********************/
TCCR0=0x09;
TCNT0=0x00;
OCR0=100; //定时100us
TIMSK = 0x02;
#asm("sei")
interrupt [TIM0_COMP] void timer0_comp_isr(void)
{
}
/******计数模式********************/
TCCR0=(1<TCNT0=0x00;
---------------------------------------------------
/*************CTC输出*********************/
TCCR0 = 0x19;
TCNT0 = 0x00;
OCR0 = 0x00; //调频 越大频率越低
DDRB| = 0x08;//对应端口配置为输出

/***********快速PWM******************/
TCCR0 = 0x69;
TCNT0 = 0xff;
OCR0 = 0x80; //调节占空比 f = 1/220 M = 4.55K 1M晶振
//与高电平时间成正比
DDRB| = 0x08;//对应端口配置为输出

/------------------定时器1 ---------------------------------/

/***************普通模式*****************/
TCCR1A = 0x00;
TCCR1B = 0x01; //无预分频
TCNT1H = 0xff;
TCNT1L = 0x9c;
TIMSK | = 0x04;
#asm("sei")

interrupt [TIM1_OVF] void timer0_ovf_isr(void)
{
TCNT1H = 0xff;
TCNT1L = 0x9c;
}
备注:可使用单片机小工具进行初值配置
TCCR1A=0x00;
TCCR1B=0x09;
OCR1A = 500; //500us
TIMSK = 0x10;
#asm("sei")
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
// Place your code here
}
/******计数模式********************/
TCCR1=(1<TCNT0=0x00;
-------------------------------------------------
/************CTC模式 4 A输出***************/
TCCR1A = 0x40;
TCCR1B = 0x09;
OCR1A = 0xffF0; //调频

PORTD = 0x00;
DDRD = 0x20;

/*CTC模式 B输出*/
TCCR1A = 0x10;
TCCR1B = 0x09;
OCR1AH = 0xff;
OCR1AL = 0x00;
PORTD = 0x00;
DDRD = 0x30;
-------------------------------------------------
/******** 7 快速PWM 3FF 模式 A输出**********/
TCCR1A = 0x83;
TCCR1B = 0x09;
OCR1AH = 0x1;
OCR1AL = 0xff; //f = 1.1k 1.1hz 调整高电平时间 50%占空比
DDRD = 0x20;
/********** 7 快速PWM 3FF 模式 B输出********/
TCCR1A = 0x23;
TCCR1B = 0x09;
OCR1BH = 0x1;
OCR1BL = 0xff;//f = 1k 调整高电平时间

-----------------------------------------------
/******* 3 相位修正PWM 3FF 模式 A输出*******/
TCCR1A = 0x83;
TCCR1B = 0x01;
OCR1AH = 0x1; //0.56k
OCR1AL = 0xff;
DDRD = 0x20;
/******** 3 相位修正PWM 3FF 模式 B输出******/
TCCR1A = 0x23;
TCCR1B = 0x01;
OCR1BH = 0x1;
OCR1BL = 0xff;//f = 2.5k 调整高电平时间50%占空比
DDRD = 0x10;
DDRD = 0x10;

------------------------

-------------------------
/********* 6 快速PWM 1FF 模式 A输出********/
TCCR1A = 0x82;
TCCR1B = 0x09;
OCR1AH = 0x0; //2.2k
OCR1AL = 0xff;
DDRD = 0x20;
/* 6 快速PWM 1FF 模式 B输出*/
TCCR1A = 0x22;
TCCR1B = 0x09;
OCR1BH = 0x0;
OCR1BL = 0xff;//f = 2.5k 调整高电平时间50%占空比
DDRD = 0x10;

-------------------------------------------------
/****** 2 相位修正PWM 1FF 模式 A输出*******/
TCCR1A = 0x82;
TCCR1B = 0x01;
OCR1AH = 0x0; //1.1k
OCR1AL = 0xff;
DDRD = 0x20;
/* 2 相位修正PWM 1FF 模式 B输出*/
TCCR1A = 0x22;
TCCR1B = 0x01;
OCR1BH = 0x0;
OCR1BL = 0xff;//f = 2.5k 调整高电平时间50%占空比
DDRD = 0x10;

--------------------------------------------------
/******** 5 快速PWM FF 模式 A输出**********/
TCCR1A = 0x81;
TCCR1B = 0x09;
OCR1AH = 0x0; //4.5k
OCR1AL = 0x80;
DDRD = 0x20;
/* 5 快速PWM FF 模式 B输出*/
TCCR1A = 0x21;
TCCR1B = 0x09;
OCR1BH = 080;//f = 5k 调整高电平时间50%占空比
DDRD = 0x10;

-------------------------------------------------
/* *****1 相位修正PWM FF 模式 A输出*******/
TCCR1A = 0x81;
TCCR1B = 0x01;
OCR1AH = 0x0;
OCR1AL = 0x80;
/******* 1 相位修正PWM FF 模式 B输出*****/
TCCR1A = 0x21;
TCCR1B = 0x01;
OCR1BH = 0x80;//f = 2.5k 调整高电平时间50%占空比
DDRD = 0x10;

--------------------------------------------------
/*********15 快速PWM 模式 B输出***********/
TCCR1A = 0x23;
TCCR1B = 0x19;
OCR1A = 500; //调频 f = 1000/500 k
OCR1B = 250; //条占空比 50% 250/500
DDRD = 0x120;
/****11 相位修正PWM 模式相位调整 B输出***/
TCCR1A = 0x23;
TCCR1B = 0x11;
OCR1A = 500; //调频 f = 1000/500 /2k
OCR1B = 250; //条占空比 50% 250/500
DDRD = 0x10;
/***** 9 频率相位修正 9 模式 B输出********/
TCCR1A = 0x21;
TCCR1B = 0x11;
OCR1A = 500; //调频 f = 1000/500 /2k
OCR1B = 250 //条占空比 50% 250/500
DDRD = 0x10;

/-----------------定时器2------------------------------/
TCCR2 = (1<TCNT2 = 0;
OCR2 = (BASIC_TIME*1000)/32;
TIMSK |=1<#asm("sei")
interrupt [TIM2_COMP] void timer2_ovf_isr(void)
{

}
/******计数模式********************/
TCCR0=(1<TCNT0=0x00;






相关文档
最新文档