/*****************************************************************************
文件名称:TimerCommand.h
文件标识:_TIMERCOMMAND_H_
摘 要:AVR定时器命令通用头文件
当前版本:V1.0
*****************************************************************************/
#ifndef _TIMERCOMMAND_H_
#define _TIMERCOMMAND_H_
#define Timer0Config(MODE,COM,PRESCALE)
TCCR0 = WGM0(TimerMode(0,MODE)) | COM0(COM) | CS0(PRESCALE)
#ifndef OCR1C
#define Timer1Config(MODE,COMA,COMB,PRESCALE)
do{
TCCR1A = WGM1L(TimerMode(1,MODE)) | COM1A(COMA) | COM1B(COMB);
TCCR1B = WGM1H(TimerMode(1,MODE)) | CS1(PRESCALE);
}while(0)
#else
#define Timer1Config(MODE,COMA,COMB,COMC,PRESCALE)
do{
TCCR1A = WGM1L(TimerMode(1,MODE)) | COM1A(COMA)
| COM1B(COMB) | COM1C(COMC);
TCCR1B = WGM1H(TimerMode(1,MODE)) | CS1(PRESCALE);
}while(0)
#endif
#define Timer2Config(MODE,COM,PRESCALE)
TCCR2 = WGM2(TimerMode(2,MODE)) | COM2(COM) | CS2(PRESCALE)
#define Timer3Config(MODE,COMA,COMB,COMC,PRESCALE)
do{
TCCR1A = WGM3L(TimerMode(3,MODE)) | COM3A(COMA)
| COM3B(COMB) | COM3C(COMC);
TCCR1B = WGM3H(TimerMode(3,MODE)) | CS3(PRESCALE);
}while(0)
#ifdef OCR0
#define Timer0Period(STEPS)
do{
OCR0 = _OCR0(STEPS);
TCCR0 = WGM0(TimerMode(0,CTC) | COM0(0) | _CS0(STEPS);
}while(0)
#endif
#define Timer1Period(STEPS)
do{
OCR1A = _OCR1(STEPS);
TCCR1B = WGM1H(TimerMode(1,CTC)) | _CS1(STEPS);
}while(0)
#define Timer2Period(STEPS)
do{
OCR2 = _OCR2(STEPS);
TCCR2 = WGM2(TimerMode(2,CTC)) | _CS2(STEPS);
}while(0)
#define Timer3Period(STEPS)
do{
OCR2 = _OCR3(STEPS);
TCCR3A = WGM3H(TimerMode(3,CTC)) | _CS3(STEPS);
}while(0)
#define TimerPeriod(X,STEPS) _TimerPeriod(X,STEPS)
#define _TimerPeriod(X,STEPS) Timer##X##Period(STEPS)
#ifndef CPUCLK
#define CPUCLK 8.0
#endif
#define TimerPerioduS(X,t) TimerPeriod(X,(t)*1.0*CPUCLK)
#define TimerPeriodmS(X,t) TimerPeriod(X,(t)*1000.0*CPUCLK)
#endif
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』