智能车制作

标题: 在线仿真正常,重启后定时就延长了 [打印本页]

作者: hellozj    时间: 2009-4-3 19:25
标题: 在线仿真正常,重启后定时就延长了
本帖最后由 hellozj 于 2009-4-3 19:27 编辑
  1. ///////////////////////////////////////////////////////////////////
  2. //TCNT标准计时器 周期1s
  3. //2009-4-02 chowjun
  4. ///////////////////////////////////////////////////////////////////
  5. #include <hidef.h>      /* common defines and macros */
  6. #include <mc9s12dg128.h>     /* derivative information */
  7. #pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
  8. int count=0;
  9. void Start_PLL(void)   //busCLK=16M
  10. {
  11.   REFDV=0x01;          // PLLCLK =2*OSCCLK*(SYNR + 1)/(REFDV + 1)
  12.   SYNR=0x01;          //        =2*16M*2/2=32M
  13.   asm{
  14.     BRCLR CRGFLG,#$08,*
  15.     BSET CLKSEL,#$80
  16.     }               
  17. }
  18. /*************************************************
  19. 定时器初始化程序
  20. *************************************************/
  21. void Timer_init(void)
  22. {
  23.   TSCR2_PR=0x04;      // 预分频系数为4  16M/16 = 1M
  24.   //TSCR1_TFFCA=1;      // 快速清除标志位
  25.   TSCR2_TOI=1;        // TOF置1时申请硬件中断
  26.                       //(1/1M)=1um 机器周期
  27.   TCNT=0xffff-0x2710; // 设置定时计数器初值 2710H = 10000
  28.   TSCR1_TEN=1;        // 禁止定时器
  29.   //0.01s
  30. }
  31. /************************************************
  32. 主程序main
  33. ************************************************/
  34. void main(void)
  35. {
  36.   DisableInterrupts;
  37.   Start_PLL();
  38.   Timer_init();
  39.   DDRB=0xff;   //OUT
  40.   PORTB=0xaa;
  41.   for(;;)
  42.       {
  43.         EnableInterrupts;
  44.       }
  45. }
  46. /*************************************************
  47. 定时器溢出中断程序
  48. *************************************************/
  49. #pragma CODE_SEG __NEAR_SEG NON_BANKED
  50. interrupt 16 void TimerOverflow_ISR(void)
  51. {
  52.   DisableInterrupts;
  53.   TCNT=0xffff-0x2710; // 重新载入定时计数器初值
  54.   count++;
  55.   if(count == 50) {
  56.     PORTB = ~PORTB;
  57.     count=0;
  58.   }
  59.   TFLG2_TOF=1; // 写1清标志位
  60. }
  61. #pragma CODE_SEG DEFAULT
复制代码
这个程序bdm烧录后运行正常,但是我重启一次定时就明显延长了,用TBDML软件复位再运行又恢复正常,非常奇怪?希望有人解答下
作者: hellozj    时间: 2009-4-3 21:21
我把TCNT的值给0xffff-0xe710 重启会正常 , 好像跟这个值有关系  ,不知道有没有人能解答下
作者: hellozj    时间: 2009-4-3 21:21
我把TCNT的值给0xffff-0xe710 重启会正常 , 好像跟这个值有关系  ,不知道有没有人能解答下




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2