怎么使用定时器延时??
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()函数一样,执行完上面的,然后延时,再执行往下的,就像中断嵌套一样。 问题解决,结贴。。。 楼主,解决方法分享一下啊 回复【2楼】liuhuangvan
楼主,解决方法分享一下啊
-----------------------------------------------------------------------
其实挺简单的,你把这个函数分成2个函数,前一个函数里面有个参数,设置0或者1,0代表delay的延时,1代表定时器延时,或者delay你不需要,在需要延时的地方都定成定时器延时,那50ms的延时就让定时器走,很省电的,用的430单片机,基本可以说不耗电 mark
页:
[1]