打印

关于定时中断

[复制链接]
1575|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xzh510781|  楼主 | 2010-1-20 09:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
mohanwei| | 2010-1-21 08:34 | 只看该作者
你可以贴出代码看看……
这种情况可能是你本身动态扫描,又没有合理分配好时间。

使用特权

评论回复
板凳
xzh510781|  楼主 | 2010-1-24 11:28 | 只看该作者
void delayms(unsigned int ms)
{
  unsigned char i;
  while (ms--)
  {
    for (i = 0; i < 114; i++)
      ;
  }
}

void show_value(unsigned int ad_data)
{
  aa = ad_data * 1.2207;

  bb=aa/1000;
  cc=aa%1000/100;
  dd=aa%1000%100/10;
  ee=aa%1000%100%10;
  P2=0xfe;
   P0=table[ee];
   delayms(3) ;
  
   P2=0xfd;
   P0=table1[dd];
   delayms(3);

   P2=0xfb;
   P0=table[cc];
   delayms(3);

   P2=0xf7;
  P0=table[bb];
   delayms(3);

}


void main()
{
    unsigned int test,i;

    double rin;                    //  PID 输入
Proportion = 1;               //  设定PID值
    Integral = 1;
    Derivative = 0;
    SetPoint = 200;
    // PID输出值            //  设定控制目标值
   init();
   while(1)
  {
    receivebuf[0] =0;         
    receivebuf[0] = ADConverOneChannel(0);//AD转换的值付给receibebuf[0]
   show_value(receivebuf[0]);
               
        }
   
}
void T0_time() interrupt 1
{

  TH0=(65536-45872)/256;
  TL0=(65536-45872)%256;

    num++;
   if(num==20)
      
     {
       num=0;   
      }
   
}
void T1_time() interrupt  3
{
     // double  T;
// rout=T;
   TH1=(65536-45872)/256;
     TL1=(65536-45872)%256;
    temp++;

  if (temp==20)
   {
     KW=1;   //电炉加热,P1^3给高电平
         
    }
    else if(temp==300)
    {
       KW=0;
     delayms(5000);
     temp=0 ;
    }
   
}

使用特权

评论回复
地板
HWM| | 2010-1-24 14:08 | 只看该作者
没看出在中断中显示数据,却看到了定时中断中的长时间延时(画蛇添足)。显示不正常,多半原因是显示扫描中插入了长时间的中断所致。

使用特权

评论回复
5
laslison| | 2010-1-24 18:52 | 只看该作者
知道楼主为啥先不贴程序了:lol

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

6

帖子

0

粉丝