zhouting928 发表于 2010-7-20 13:10:48

怎么使用定时器延时??

unchar I2CTMPReadTemp(unchar *temp)
{
   unchar ack=0;
   unint count;
   POWER_TMP_OUT;
   POWER_TMP_ON;
   //延时100ms等待复位后的自动温度转换完成
   for(count=0;count<10000;count++);
   //开始读取温度数据,config register p0/p1省缺值为00及指向temperature register
   I2CTMP_END();
   I2CTMP_STAR();
   ack |= I2CTMP_HostWriteByte(0x91);
   temp = I2CTMP_HostReadByte();
   temp = I2CTMP_HostReadByte();
   I2CTMP_END();
   if(temp&0x01)
       ack |= 0x02;
   POWER_TMP_OFF;
   SCL_OUT_L;
   SDA_OUT_L;
   return ack;
}

在上面一个for(count=0;count<10000;count++); 这个延时需要使用定时器,为了降低功耗。我把这个函数拆分成2个函数,读出的温度一直为0,其他的地方有时候会调用这个语句,而定时我定的是50ms的时间,是实时定时的,我要怎么让定时像delay()函数一样,执行完上面的,然后延时,再执行往下的,就像中断嵌套一样。

zhouting928 发表于 2010-7-23 09:12:20

问题解决,结贴。。。

liuhuangvan 发表于 2010-7-30 17:53:34

楼主,解决方法分享一下啊

zhouting928 发表于 2010-8-11 12:49:49

回复【2楼】liuhuangvan
楼主,解决方法分享一下啊
-----------------------------------------------------------------------

其实挺简单的,你把这个函数分成2个函数,前一个函数里面有个参数,设置0或者1,0代表delay的延时,1代表定时器延时,或者delay你不需要,在需要延时的地方都定成定时器延时,那50ms的延时就让定时器走,很省电的,用的430单片机,基本可以说不耗电

ccmj4708 发表于 2011-6-9 15:53:16

mark
页: [1]
查看完整版本: 怎么使用定时器延时??