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

TimerConvert.h头文件下载-AVR定时器参数转换通用头文件

发布时间:2020-06-17 发布时间:
|

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

      文件名称:TimerConvert.h

      文件标识:_TIMERCONVERT_H_

      摘    要:AVR定时器参数转换通用头文件

      当前版本:V1.0

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

#ifndef  _TIMERCONVERT_H_

#define  _TIMERCONVERT_H_



#define  WGM0(WGM)   (((WGM & 0X01) << 6) | ((WGM & 0X02) << 3))

#define  WGM1L(WGM)  (WGM & 0X03)

#define  WGM1H(WGM)  (((WGM) & 0X0C) << 1)

#define  WGM2(WGM)   (((WGM & 0X01) << 6) | ((WGM & 0X02) << 3))

#define  WGM3L(WGM)  (WGM & 0X03)

#define  WGM3H(WGM)  (((WGM) & 0X0C) << 1)



#define  COM0(COM)   ((COM) << 4)


#define  COM1A(COM)  ((COM) << 6)

#define  COM1B(COM)  ((COM) << 4)

#define  COM1C(COM)  ((COM) << 2)


#define  COM2(COM)   ((COM) << 4)


#define  COM3A(COM)  ((COM) << 6)

#define  COM3B(COM)  ((COM) << 4)

#define  COM3C(COM)  ((COM) << 2)



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

PRESCALE --> CSX[2:0]

说明:CS2(PRESCALE)使用了条件编译,这个条件编译是基于如下假设:对于具有定时/计

数器3的AVR单片机,定时/计数器2不存在外部输入引脚; 对于没有定时/计数器3的AVR单

单片机,定时/计数器2必存在外部输入引脚。这是一个尚未证明的假设。   ^_^

另外,如果输入的分频系数不对,则强制CSX[2:0]=0,定时/计数器拒绝运行。

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

#define  CS0(PRESCALE)                                        

   (                                                          

      (PRESCALE) == 0   ? 0 :                                

      (PRESCALE) == 1   ? 1 :                                

      (PRESCALE) == 8   ? 2 :                                

      (PRESCALE) == 64  ? 3 :                                

      (PRESCALE) == 256 ? 4 :                                

      (PRESCALE) == 1024? 5 : 0                              

   )


#define  CS1(PRESCALE)                                        

   (                                                          

      (PRESCALE) == 0   ? 0 :                                

      (PRESCALE) == 1   ? 1 :                                

      (PRESCALE) == 8   ? 2 :                                

      (PRESCALE) == 64  ? 3 :                                

      (PRESCALE) == 256 ? 4 :                                

      (PRESCALE) == 1024? 5 : 0                              

   )


#ifndef  TCNT3

#define  CS2(PRESCALE)                                        

   (                                                          

      (PRESCALE) == 0   ? 0 :                                

      (PRESCALE) == 1   ? 1 :                                

      (PRESCALE) == 8   ? 2 :                                

      (PRESCALE) == 64  ? 3 :                                

      (PRESCALE) == 256 ? 4 :                                

      (PRESCALE) == 1024? 5 : 0                              

   )

#else

#define  CS2(PRESCALE)                                        

   (                                                          

      (PRESCALE) == 0   ? 0 :                                

      (PRESCALE) == 1   ? 1 :                                

      (PRESCALE) == 8   ? 2 :                                

      (PRESCALE) == 32  ? 3 :                                

      (PRESCALE) == 64  ? 4 :                                

      (PRESCALE) == 128 ? 5 :                                

      (PRESCALE) == 256 ? 6 :                                

      (PRESCALE) == 1024? 7 : 0                              

   )

#endif


#define  CS3(PRESCALE)                                        

   (                                                          

      (PRESCALE) == 0   ? 0 :                                

      (PRESCALE) == 1   ? 1 :                                

      (PRESCALE) == 8   ? 2 :                                

      (PRESCALE) == 64  ? 3 :                                

      (PRESCALE) == 256 ? 4 :                                

      (PRESCALE) == 1024? 5 : 0                              

   )



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

STEPS --> OCRX

说明:CS2(PRESCALE)使用了条件编译,这个条件编译是基于如下假设:对于具有定时/计

数器3的AVR单片机,定时/计数器2不存在外部输入引脚; 对于没有定时/计数器3的AVR单

单片机,定时/计数器2必存在外部输入引脚。这是一个尚未证明的假设。   ^_^

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

#define  _OCR0(STEPS)                                        

   (                                                          

      (STEPS) <= 256 ? ((STEPS) - 1) :                        



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

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