|
unchar I2CTMPReadTemp(unchar *temp)
{
unchar ack=0;
unint count;
POWER_TMP_OUT;
POWER_TMP_ON;
//延时100ms等待复位后的自动温度转换完成[26ms内]
for(count=0;count<10000;count++);
//开始读取温度数据,config register p0/p1省缺值为00及指向temperature register
I2CTMP_END();
I2CTMP_STAR();
ack |= I2CTMP_HostWriteByte(0x91);
temp[1] = I2CTMP_HostReadByte();
temp[0] = I2CTMP_HostReadByte();
I2CTMP_END();
if(temp[0]&0x01)
ack |= 0x02;
POWER_TMP_OFF;
SCL_OUT_L;
SDA_OUT_L;
return ack;
}
在上面一个for(count=0;count<10000;count++); 这个延时需要使用定时器,为了降低功耗。我把这个函数拆分成2个函数,读出的温度一直为0,其他的地方有时候会调用这个语句,而定时我定的是50ms的时间,是实时定时的,我要怎么让定时像delay()函数一样,执行完上面的,然后延时,再执行往下的,就像中断嵌套一样。 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|