检查下RST引脚电路,这条指令的意思就是高电平等待呀。只要IO口P32的电平为1(高电平),指令就永远会回到L1处执行,不就是等待了吗?建议你先把基础知识打牢,不急于搞程序。也不需要你采纳,这个问题实在太简单了,拿你的悬赏我都不好意思。给你个大概框架,我不知道你里面怎么样子,我就把读取温度并显示的函数统一写成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分,也就我这样没事干的会来帮助你了。过程是这样的:
程序一直在while(1)里面,直到定时器计满产生中断;
产生中断后,执行中断服务程序
(中断中大部分是有重新对定时器赋值的命令的
)
中断程序完成后
回到while(1),等待下一次中断,定时器继续计数;
定时器产生中断,反复
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)