标题: 单片机定时中断,不能正常运行,请大师帮助看看,问题出在哪儿? [打印本页]

作者: jmkl128    时间: 2018-6-3 10:11
标题: 单片机定时中断,不能正常运行,请大师帮助看看,问题出在哪儿?
做了一个定时中断,不能正常运行,请高人帮助指点!
  1. #include <STC15F104E.H>                                        //12MHz
  2. #define uchar unsigned char //宏定义字符型变量
  3. #define uint  unsigned int        //宏定义整型变量
  4. #define  MAIN_Fosc 12000000L
  5. sbit jiance=P3^0;  
  6. sbit in=P3^1;
  7. sbit out=P3^3;
  8. uchar oldjiance=0;
  9. uchar flag=0;
  10. long        jishu=0;
  11. /************************************/
  12. /**********延时函数******************/
  13. /************************************/
  14. void  delay(unsigned char ms)
  15. {
  16.      unsigned int i;
  17.          do{
  18.               i = MAIN_Fosc/13000;
  19.                   while(--i)        ;   //14T per loop
  20.      }while(--ms);
  21. }
  22. /************************************/
  23. /**********定时器初始化******************/
  24. /************************************/
  25. void InitTimer(void)
  26. {   EA = 1;
  27.            AUXR |= 0x40;                //定时器1时钟1T模式,30us进行一次休眠检测
  28.         TMOD &= 0x0F;                //设置定时器模式
  29.         TL1 = 0x98;                //设置定时初值
  30.         TH1 = 0xFE;                //设置定时初值
  31.         TF1 = 0;                //清除TF1标志
  32.         TR1 = 1;                //定时器1开始计时

  33. }
  34. /************************************/
  35. /**********定时器1,休眠检测*********/
  36. /************************************/
  37. void tm1_isr() interrupt 3 using 1
  38. {
  39.     TR1=0;                 //关闭定时器T1
  40.          jishu++;
  41.    if(jiance==~oldjiance)         {jishu=0;}
  42.          
  43.    if(jishu>=5000000){flag=1;}        //2.5分钟,降温
  44.    if(jishu>=10000000){flag=2;} //5分钟,更低降温
  45.    if(jishu>=20000000){flag=3;jishu=20000000;}        //10分钟,停止加热         
  46.          oldjiance=jiance;
  47.     TR1=1;                  //启动定时器T1
  48. }
  49. /************************************/
  50. /************主函数******************/
  51. /************************************/
  52. main()
  53. {
  54. InitTimer();
  55. while(1)
  56. {
  57. switch (flag)
  58.             {
  59.                 case 0:  out=in;break;
  60.                 case 1: out=0;delay(100);out=in; break;
  61.                 case 2: out=0;delay(500);out=in; break;
  62.                 case 3: out=0; break;
  63.                 default: break;
  64.             }

  65.         
  66. }
  67. }
复制代码


作者: jmkl128    时间: 2018-6-3 11:06
找到了原因了,还是基础不牢,低级错误
作者: wulin    时间: 2018-6-3 11:21
貌似定时器1中断ET1没有开.
作者: angmall    时间: 2018-6-3 22:06
STC15F100系列单片机只有定时器0和定时器2,无定时器1
作者: wulin    时间: 2018-6-4 08:11
angmall 发表于 2018-6-3 22:06
STC15F100系列单片机只有定时器0和定时器2,无定时器1



作者: jmkl128    时间: 2018-6-4 21:42
谢谢各位!是的,同时错了两个地方。没有定时器1和缺少ET1=1;




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1