找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3208|回复: 0
收起左侧

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

[复制链接]
ID:71259 发表于 2014-12-30 12:34 | 显示全部楼层 |阅读模式
本帖最后由 daming 于 2014-12-30 12:37 编辑

在代码下方点复制代码,然后另存到电脑磁盘即可下载.


  1. /*****************************************************************************

  2.       单    位:广西民族大学物理与电子工程学院07物本班
  3.       文件名称:TimerConvert.h
  4.       文件标识:_TIMERCONVERT_H_
  5.       摘    要:AVR定时器参数转换通用头文件
  6.       当前版本:V1.0
  7.       作    者 【白 羽】
  8.       完成日期:2010年11月16日

  9. *****************************************************************************/
  10. #ifndef  _TIMERCONVERT_H_
  11. #define  _TIMERCONVERT_H_


  12. #define  WGM0(WGM)   (((WGM & 0X01) << 6) | ((WGM & 0X02) << 3))
  13. #define  WGM1L(WGM)  (WGM & 0X03)
  14. #define  WGM1H(WGM)  (((WGM) & 0X0C) << 1)
  15. #define  WGM2(WGM)   (((WGM & 0X01) << 6) | ((WGM & 0X02) << 3))
  16. #define  WGM3L(WGM)  (WGM & 0X03)
  17. #define  WGM3H(WGM)  (((WGM) & 0X0C) << 1)


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

  19. #define  COM1A(COM)  ((COM) << 6)
  20. #define  COM1B(COM)  ((COM) << 4)
  21. #define  COM1C(COM)  ((COM) << 2)

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

  23. #define  COM3A(COM)  ((COM) << 6)
  24. #define  COM3B(COM)  ((COM) << 4)
  25. #define  COM3C(COM)  ((COM) << 2)


  26. /*****************************************************************************
  27. PRESCALE --> CSX[2:0]
  28. 说明:CS2(PRESCALE)使用了条件编译,这个条件编译是基于如下假设:对于具有定时/计
  29. 数器3的AVR单片机,定时/计数器2不存在外部输入引脚; 对于没有定时/计数器3的AVR单
  30. 单片机,定时/计数器2必存在外部输入引脚。这是一个尚未证明的假设。   ^_^
  31. 另外,如果输入的分频系数不对,则强制CSX[2:0]=0,定时/计数器拒绝运行。
  32. *****************************************************************************/
  33. #define  CS0(PRESCALE)                                        \
  34.    (                                                          \
  35.       (PRESCALE) == 0   ? 0 :                                 \
  36.       (PRESCALE) == 1   ? 1 :                                 \
  37.       (PRESCALE) == 8   ? 2 :                                 \
  38.       (PRESCALE) == 64  ? 3 :                                 \
  39.       (PRESCALE) == 256 ? 4 :                                 \
  40.       (PRESCALE) == 1024? 5 : 0                               \
  41.    )

  42. #define  CS1(PRESCALE)                                        \
  43.    (                                                          \
  44.       (PRESCALE) == 0   ? 0 :                                 \
  45.       (PRESCALE) == 1   ? 1 :                                 \
  46.       (PRESCALE) == 8   ? 2 :                                 \
  47.       (PRESCALE) == 64  ? 3 :                                 \
  48.       (PRESCALE) == 256 ? 4 :                                 \
  49.       (PRESCALE) == 1024? 5 : 0                               \
  50.    )

  51. #ifndef  TCNT3
  52. #define  CS2(PRESCALE)                                        \
  53.    (                                                          \
  54.       (PRESCALE) == 0   ? 0 :                                 \
  55.       (PRESCALE) == 1   ? 1 :                                 \
  56.       (PRESCALE) == 8   ? 2 :                                 \
  57.       (PRESCALE) == 64  ? 3 :                                 \
  58.       (PRESCALE) == 256 ? 4 :                                 \
  59.       (PRESCALE) == 1024? 5 : 0                               \
  60.    )
  61. #else
  62. #define  CS2(PRESCALE)                                        \
  63.    (                                                          \
  64.       (PRESCALE) == 0   ? 0 :                                 \
  65.       (PRESCALE) == 1   ? 1 :                                 \
  66.       (PRESCALE) == 8   ? 2 :                                 \
  67.       (PRESCALE) == 32  ? 3 :                                 \
  68.       (PRESCALE) == 64  ? 4 :                                 \
  69.       (PRESCALE) == 128 ? 5 :                                 \
  70.       (PRESCALE) == 256 ? 6 :                                 \
  71.       (PRESCALE) == 1024? 7 : 0                               \
  72.    )
  73. #endif

  74. #define  CS3(PRESCALE)                                        \
  75.    (                                                          \
  76.       (PRESCALE) == 0   ? 0 :                                 \
  77.       (PRESCALE) == 1   ? 1 :                                 \
  78.       (PRESCALE) == 8   ? 2 :                                 \
  79.       (PRESCALE) == 64  ? 3 :                                 \
  80.       (PRESCALE) == 256 ? 4 :                                 \
  81.       (PRESCALE) == 1024? 5 : 0                               \
  82.    )


  83. /*****************************************************************************
  84. STEPS --> OCRX
  85. 说明:CS2(PRESCALE)使用了条件编译,这个条件编译是基于如下假设:对于具有定时/计
  86. 数器3的AVR单片机,定时/计数器2不存在外部输入引脚; 对于没有定时/计数器3的AVR单
  87. 单片机,定时/计数器2必存在外部输入引脚。这是一个尚未证明的假设。   ^_^
  88. *****************************************************************************/
  89. #define  _OCR0(STEPS)                                         \
  90.    (                                                          \
  91.       (STEPS) <= 256 ? ((STEPS) - 1) :                        \
  92.       (STEPS) <= 256*8 ? ((STEPS)/8 - 1) :                    \
  93.       (STEPS) <= 256*64 ? ((STEPS)/64 - 1) :                  \
  94.       (STEPS) <= 256*256 ? ((STEPS)/256 - 1) :                \
  95.       (STEPS) <= 256*1024 ? ((STEPS)/1024 - 1) : 255          \
  96.    )

  97. #define  _OCR1(STEPS)                                         \
  98.    (                                                          \
  99.       (STEPS) <= 65536 ? ((STEPS) - 1) :                      \
  100.       (STEPS) <= 65536*8 ? ((STEPS)/8 - 1) :                  \
  101.       (STEPS) <= 65536*64 ? ((STEPS)/64 - 1) :                \
  102.       (STEPS) <= 65536*256 ? ((STEPS)/256 - 1) :              \
  103.       (STEPS) <= 65536*1024 ? ((STEPS)/1024 - 1) : 65535      \
  104.    )

  105. #ifndef  TCNT3
  106. #define  _OCR2(STEPS)                                         \
  107.    (                                                          \
  108.       (STEPS) <= 256 ? ((STEPS) - 1) :                        \
  109.       (STEPS) <= 256*8 ? ((STEPS)/8 - 1) :                    \
  110.       (STEPS) <= 256*64 ? ((STEPS)/64 - 1) :                  \
  111.       (STEPS) <= 256*256 ? ((STEPS)/256 - 1) :                \
  112.       (STEPS) <= 256*1024 ? ((STEPS)/1024 - 1) : 255          \
  113.    )
  114. #else
  115. #define  _OCR2(STEPS)                                         \
  116.    (                                                          \
  117.       (STEPS) <= 256 ? ((STEPS) - 1) :                        \
  118.       (STEPS) <= 256*8 ? ((STEPS)/8 - 1) :                    \
  119.       (STEPS) <= 256*32 ? ((STEPS)/32 - 1) :                  \
  120.       (STEPS) <= 256*64 ? ((STEPS)/64 - 1) :                  \
  121.       (STEPS) <= 256*128 ? ((STEPS)/128 - 1) :                \
  122.       (STEPS) <= 256*256 ? ((STEPS)/256 - 1) :                \
  123.       (STEPS) <= 256*1024 ? ((STEPS)/1024 - 1) : 255          \
  124.    )
  125. #endif

  126. #define  _OCR3(STEPS)                                         \
  127.    (                                                          \
  128.       (STEPS) <= 65536 ? ((STEPS) - 1) :                      \
  129.       (STEPS) <= 65536*8 ? ((STEPS)/8 - 1) :                  \
  130.       (STEPS) <= 65536*64 ? ((STEPS)/64 - 1) :                \
  131.       (STEPS) <= 65536*256 ? ((STEPS)/256 - 1) :              \
  132.       (STEPS) <= 65536*1024 ? ((STEPS)/1024 - 1) : 65535      \
  133.    )


  134. /*****************************************************************************
  135. //STEPS --> CSX[2:0]
  136. 说明:CS2(PRESCALE)使用了条件编译,这个条件编译是基于如下假设:对于具有定时/计
  137. 数器3的AVR单片机,定时/计数器2不存在外部输入引脚; 对于没有定时/计数器3的AVR单
  138. 单片机,定时/计数器2必存在外部输入引脚。这是一个尚未证明的假设。   ^_^
  139. *****************************************************************************/
  140. #define  _CS0(STEPS)                                          \
  141.    (                                                          \
  142.       (STEPS) == 0 ? 0 :                                      \
  143.       (STEPS) <= 256 ? 1 :                                    \
  144.       (STEPS) <= 256*8 ? 2 :                                  \
  145.       (STEPS) <= 256*64 ? 3 :                                 \
  146.       (STEPS) <= 256*256 ? 4 : 5                              \
  147.    )

  148. #define  _CS1(STEPS)                                          \
  149.    (                                                          \
  150.       (STEPS) == 0 ? 0 :                                      \
  151.       (STEPS) <= 65536 ? 1 :                                  \
  152.       (STEPS) <= 65536*8 ? 2 :                                \
  153.       (STEPS) <= 65536*64 ? 3 :                               \
  154.       (STEPS) <= 65536*256 ? 4 : 5                            \
  155.    )


  156. #ifndef  TCNT3
  157. #define  _CS2(STEPS)                                          \
  158.    (                                                          \
  159.       (STEPS) == 0 ? 0 :                                      \
  160.       (STEPS) <= 256 ? 1 :                                    \
  161.       (STEPS) <= 256*8 ? 2 :                                  \
  162.       (STEPS) <= 256*32 ? 3 :                                 \
  163.       (STEPS) <= 256*64 ? 4 :                                 \
  164.       (STEPS) <= 256*128 ? 5 :                                \
  165.       (STEPS) <= 256*256 ? 6 : 7                              \
  166.    )
  167. #else
  168. #define  _CS2(STEPS)                                          \
  169.    (                                                          \
  170.       (STEPS) == 0 ? 0 :                                      \
  171.       (STEPS) <= 256 ? 1 :                                    \
  172.       (STEPS) <= 256*8 ? 2 :                                  \
  173.       (STEPS) <= 256*64 ? 3 :                                 \
  174.       (STEPS) <= 256*256 ? 4 : 5                              \
  175.    )
  176. #endif


  177. #define  _CS3(STEPS)                                          \
  178.    (                                                          \
  179.       (STEPS) == 0 ? 0 :                                      \
  180.       (STEPS) <= 65536 ? 1 :                                  \
  181.       (STEPS) <= 65536*8 ? 2 :                                \
  182.       (STEPS) <= 65536*64 ? 3 :                               \
  183.       (STEPS) <= 65536*256 ? 4 : 5                            \
  184.    )



  185. #endif
复制代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表