单片机 C语言的暂停指令

单片机 C语言的暂停指令,第1张

楼上的答案是C语言整个程序的大循环,是个死循环。在整个程序中只能出先一次,在大括号里面放整个程序的所有函数,让单片机不停的循环所有的函数。而你所说的暂停指令也是在一个地方等待,单是必须要有条件跳出循环。例如while(判断条件); 当条件为真的时候就在那里等待,当条件为假的时候执行下面的语句。汇编中也有相似的指令,例如: DJNZ Rn ,$。

任何单片机在工作之前都要有个复位过程,复位对单片机来说,是程序还没有开始执行,是在做准备工作。一般的复位只需要5ms的时间。而进行复位只需要将rst引脚加上高电平就可以了。
检查下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),等待下一次中断,定时器继续计数;
定时器产生中断,反复


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13405864.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-30
下一篇 2023-07-30

发表评论

登录后才能评论

评论列表(0条)

保存