给你个大概框架,我不知道你里面怎么样子,我就把读取温度并显示的函数统一写成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分,也就我这样没事干的会来帮助你了。
用定时器加中断,比如你定时器最长定时时间为1分种,每次定时器溢出引发中断程序中变量i加1,到10的时候不就是10分钟了么,当然还有其他方法,程序不难,自己写写吧,
用定时器就行了啊,估计温度的程序不是你写的吧?我有类似的设计,不知道适不适合你,需要可以互相交流一下,或者直接找我要资料。