想让单片机隔10分钟测一次温度值(用DS18b20),求一个函数能让单片机等待10分钟!谢谢

程序大部分已经写好了,就差延迟10分钟的函数了,谢谢奥!
2024-12-19 02:14:27
推荐回答(3个)
回答1:

给你个大概框架,我不知道你里面怎么样子,我就把读取温度并显示的函数统一写成ds1820();
bit t0;
int i;
void timer0_init()//开启定时器
{
TH0=(65535-50000)/256;//一次50MS;所以1秒要累计20次;你要十分钟,累计多少就自己算了。
TL0=(65535-50000)%256;
ET0=1;TR0=1;
}
void main()
{
TMOD=0x01;//定时器0,方式1;
EA=1;//开启中断;
timer0_init();//开启定时器

t0=1;//初值是1,为了第一次得到温度;
i=0;//累加数;
while(1)
{
if(t0==1) {t0=0;ds1820();}//如果1秒计时到了处理,同时要清零,防止无限进入。你的要求,只要计算一次就可以了。
}
}
void timer0 interrupt 1
{
TH0=(65535-50000)/256;//定时器初值回填,不懂看书的说明。
TL0=(65535-50000)%256;
i++;
if(i==20) {i=0;t0=1;}//加满后i要清零,同时说明计时到了。
}
}
纯手工打造,这对我来说知识花那么几分钟打字,对你可能在理解上能够节约不少时间,如果你诚心,就多给点分数,这样以后有问题,也会有更多解决问题的机会。
5分,也就我这样没事干的会来帮助你了。

回答2:

用定时器加中断,比如你定时器最长定时时间为1分种,每次定时器溢出引发中断程序中变量i加1,到10的时候不就是10分钟了么,当然还有其他方法,程序不难,自己写写吧,

回答3:

用定时器就行了啊,估计温度的程序不是你写的吧?我有类似的设计,不知道适不适合你,需要可以互相交流一下,或者直接找我要资料。