为什么是main()一个无限循环本身:(

N

newbee

Guest
您好

即时通讯正与莱凯勒8051和wro程序没有一个无限循环,但对变形模拟运行下去,该程序重复自己

这里是代码(非常简单):我不指望什么
, 即使我按按钮sinceit将运行并很快完成#包括<REGX51.H>
#包括<stdio.h>

#定义按钮P1_0 / /定义/ /
#定义领导P1_1

无效的主要(无效)/ /主程序/ /

按钮= 0; / /缩写/ /
领导= 0;而(按钮)/ /当按钮按下/ /

领导=!领导; / /补充领导/ /
而(按钮)/ /等待
, 直到释放按钮/ /
()




 
#包括<REGX51.H>
#包括<stdio.h>

#定义按钮P1_0 / /定义/ /
#定义领导P1_1
位退出;

无效的主要(无效)/ /主程序/ /

按钮= 0; / /缩写/ /
领导= 0;

而(按钮== 0)/ /当按键未按/ /
()退出= 0;
而(出口== 0)

领导=!领导; / /补充领导/ /
而(按钮== 1)/ /等待
, 直到释放按钮/ /
()
如果(按钮== 0)退出= 1; / /释放按钮/ /





 
wdgwdg说:

#包括<REGX51.H>

#包括<stdio.h>#定义按钮P1_0 / /定义/ /

#定义领导P1_1

位退出;无效的主要(无效)/ /主程序/ /



按钮= 0; / /缩写/ /

领导= 0;而(按钮== 0)/ /当按键未按/ /

()退出= 0;

而(出口== 0)



领导=!领导; / /补充领导/ /

而(按钮== 1)/ /等待,直到释放按钮/ /

()

如果(按钮== 0)退出= 1; / /释放按钮/ /))
 
您好Newbee,

我不使用Keil那么多,我不使用1951年毕业,但我可以回答你的问题,我想。您将需要采取的行动
, 看文件列表编译器让你可以清楚地看到什么是发生在您的代码。
是的,它应该完成几微秒,这是它。然而,一些编译器将在最后一睡指令,如果您的代码不循环。这是为了防止不确定的内存位置上运行的程序。如果你不告诉您的程序如何结束,然后程序柜台上不断递增的权利,关闭了未知的内存。
所以
, 一个超级循环'的想法是很常见的百万分之一。初始化,然后提出一个拉布勒,您的程序,然后将其发送回拉布勒,它永远不断。
现在,我不知道如何处理它莱凯勒,所以如果你在看你的列表文件(你可能要告诉编译器这样做,你的编译器选项设置,),你应该看到在组装等效指示。这会告诉你你的代码是如何被处理。
希望这是明确的,这是非常深夜我在哪里,我很袋装。如果您有问题,我会尽力帮助您。
关心,
罗伯特

 
你为什么不调试该程序首次在莱凯勒?...它会帮助你解题的porblem容易。

 
您好BeeBop

三江源你的帮助,我找到了答案:

我们的计划应该有一个无限循环
, 因为它没有操作系统返回。如果我们没有超级循环周期
, 直到程序将权力从它删除

 
您好newbee,

你的权利!你的程序周期的无限循环。

如果你希望你的程序只能运行once.you要增加自己跳时
, 完成您的工作:等等
, 而(1);

 
beamrobot是正确的,我建议你阅读之前设置的buttion按钮= 1,这是因为硬件的!

 
对于每一个嵌入式应用需要无限循环。

为什么?因为没有软件无限循环很快复位后控制器将执行应用程序的所有指令。之后
, 控制器将在执行应用程序代码结束NOP产品向导或其他指示。这之后
, 执行指令控制器都将开始执行再次复位点。因此
, 你必须长期不需要硬件循环
, 而不是简单的软件无限循环

所以
, 如果你想嵌入式应用与预测countinous工作需要软件的无限循环。您可以实现与汇编或C不同的方法这个循环

 

Welcome to EDABoard.com

Sponsor

Back
Top