×
单片机 > 单片机程序设计 > 详情

TimerCommand.h头文件下载-AVR定时器命令通用头文件

发布时间:2020-05-30 发布时间:
|

/*****************************************************************************

      文件名称: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



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址