找回密码
 立即注册

QQ登录

只需一步,快速开始

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

ATmega128 定时器测试

[复制链接]
ID:80436 发表于 2015-5-21 23:45 | 显示全部楼层 |阅读模式
  1. 功能说明/*全部定时1S*/

  2. #define F_CPU 16000000UL

  3. #include "DS12864.h"

  4. #include <avr/io.h>

  5. #include <avr/interrupt.h>

  6. volatile unsigned int count0=0,flag0=0;

  7. volatile unsigned int count1=0,flag1=0;

  8. volatile unsigned int count2=0,flag2=0;

  9. volatile unsigned int count3=0,flag3=0;

  10. /**************************************************************

  11. 隶属模块:定时器测试模块

  12. 函数名称:Timer0_Init()

  13. 函数功能: 初始化

  14. 入口参数: 无

  15. 返回参数:无

  16. ***************************************************************/

  17. void Timer0_Init()

  18. {

  19. TCNT0 = 0x06;

  20. TCCR0 = 0x03;//64分频

  21. TIMSK |= (1<<TOIE0);//使能定时器0中断

  22. }

  23. /**************************************************************

  24. 隶属模块:定时器测试模块

  25. 函数名称:Timer1_Init()

  26. 函数功能: 初始化

  27. 入口参数: 无

  28. 返回参数:无

  29. ***************************************************************/

  30. void Timer1_Init()

  31. {

  32. TCNT1H = 0x3C;

  33. TCNT1L = 0xB0;

  34. TCCR1A = 0x00;

  35. TCCR1B = 0x03;//64分频

  36. TIMSK |= (1<<TOIE1);//使能定时器1中断

  37. }

  38. /**************************************************************

  39. 隶属模块:定时器测试模块

  40. 函数名称:Timer2_Init()

  41. 函数功能: 初始化

  42. 入口参数: 无

  43. 返回参数:无

  44. ***************************************************************/

  45. void Timer2_Init()

  46. {

  47. TCNT2 = 0x06;

  48. TCCR2 = 0x03;//64分频

  49. TIMSK |= (1<<TOIE2);//使能定时器2中断

  50. }

  51. /**************************************************************

  52. 隶属模块:定时器测试模块

  53. 函数名称:Timer3_Init()

  54. 函数功能: 初始化

  55. 入口参数: 无

  56. 返回参数:无

  57. ***************************************************************/

  58. void Timer3_Init()

  59. {

  60. TCNT3H = 0x3C;

  61. TCNT3L = 0xB0;

  62. TCCR3A = 0x00;

  63. TCCR3B = 0x03;//64分频

  64. ETIMSK |= (1<<TOIE3);//使能定时器3中断

  65. }

  66. /************************测试函数**************************/

  67. int main(void)

  68. {

  69. DDRD = 0xF0;

  70. DDRE = 0xF0;

  71. LCD12864_Init();

  72. SREG &=~(1<<7);

  73. Timer0_Init();

  74. Timer1_Init();

  75. Timer2_Init();

  76. Timer3_Init();

  77. SREG |= (1<<7);

  78. LCD12864_Dis_Str(0,0,"定时器0:");

  79. LCD12864_Dis_Str(0,1,"定时器1:");

  80. LCD12864_Dis_Str(0,2,"定时器2:");

  81. LCD12864_Dis_Str(0,3,"定时器3:");

  82.     while(1)

  83.     {

  84.         //TODO:: Please write your application code

  85.   if(count0>1999){

  86.   count0=0;

  87.   flag0=(flag0+1)%10;

  88.   LCD12864_Dis_Ctr(5,0,flag0+0x30);

  89.   }

  90.   if(count1>4)

  91.   {

  92.    count1=0;  

  93.    flag1=(flag1+1)%10;

  94.    LCD12864_Dis_Ctr(5,1,flag1+0x30);

  95.   }

  96.   if(count2>999)

  97.   {

  98.    count2=0;  

  99.    flag2=(flag2+1)%10;

  100.    LCD12864_Dis_Ctr(5,2,flag2+0x30);

  101.   }

  102.   if(count3>4)

  103.   {

  104.    count3=0;  

  105.    flag3=(flag3+1)%10;

  106.    LCD12864_Dis_Ctr(5,3,flag3+0x30);

  107.   }

  108.     }

  109. }

  110. /**************************************************************

  111. 隶属模块:定时器测试模块

  112. 函数名称:SIGNAL(TIMER0_OVF_vect)

  113. 函数功能: 定时器0中断函数

  114. 入口参数: 无

  115. 返回参数:无

  116. ***************************************************************/

  117. SIGNAL(TIMER0_OVF_vect)

  118. {

  119. TCNT0 = 0x06;

  120. count0++;

  121.    

  122. }

  123. /**************************************************************

  124. 隶属模块:定时器测试模块

  125. 函数名称:SIGNAL(TIMER1_OVF_vect)

  126. 函数功能: 定时器1中断函数

  127. 入口参数: 无

  128. 返回参数:无

  129. ***************************************************************/

  130. SIGNAL (TIMER1_OVF_vect)

  131. {

  132. TCNT1H = 0x3C;

  133. TCNT1L = 0xB0;

  134. count1++;

  135. }

  136. /**************************************************************

  137. 隶属模块:定时器测试模块

  138. 函数名称:SIGNAL(TIMER2_OVF_vect)

  139. 函数功能: 定时器2中断函数

  140. 入口参数: 无

  141. 返回参数:无

  142. ***************************************************************/

  143. SIGNAL (TIMER2_OVF_vect)

  144. {

  145. count2++;

  146. }

  147. /**************************************************************

  148. 隶属模块:定时器测试模块

  149. 函数名称:SIGNAL(TIMER3_OVF_vect)

  150. 函数功能: 定时器3中断函数

  151. 入口参数: 无

  152. 返回参数:无

  153. ***************************************************************/

  154. SIGNAL (TIMER3_OVF_vect)

  155. {

  156. TCNT3H = 0x3C;

  157. TCNT3L = 0xB0;

  158. count3++;

  159. }
复制代码


回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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