C语言中的delay函数是一个简单的延迟程序,它通过循环来浪费CPU时间,使程序暂停一段时间。虽然这个函数在某些特定情况下可能会有用,但是它也有一些缺点和副作用:
1 占用CPU资源:delay函数循环浪费CPU时间,阻止其他程序能够在同一时间内运行。因此,在程序需要同时处理多个任务时,使用delay函数可能不是最好的选择。
2 稳定性问题:由于delay函数暂停了程序的执行,所以如果程序中的其它部分需要在固定时间内完成某个任务,则在执行delay函数时可能会引入不必要的延迟,从而影响程序的稳定性。
3 具有依赖性:对于延迟函数,其延迟的时间通常是根据CPU的工作频率来计算的。因此,如果CPU的运行频率发生变化,例如由于CPU温度过高或其他原因,那么延迟的时间将会有变化,这将会导致程序行为的不确定性。
总之,尽管delay函数在某些情况下可能很有用,但是一般情况下应该避免使用它。如果你的程序需要进行延迟 *** 作,请考虑使用硬件定时器或者 *** 作系统提供的相应功能,这些方法更加准确和可靠。
你没有包含delay所在的函数库,在dosh中,在tubc中是加上#include <dosh>
vc60删了这个函数,所以delay用不成了,可以用Sleep()代替,用msdn查一下Sleep(),是一个api函数,加上<windowsh>
程序中的delayms(1000)是可以执行的,只是延时是固定的,所带参数1000不起作用,因为延时子程序并没有用到形参xms,把第一行for改成变量xms的循环,修改如下:
delay 函数没有定义。你使用的是什么编译器,VC,还是别的??
在VC里用sleep()这个函数替代了delay()这个函数,你把"windowsh"包含进去,和delay用法一样,sleep(6000),sleep里的参数是以毫秒为单位的。
如果是别的编译器,你查找一下需要包含那个头文件。
很简单的是熔丝位设置问题!!mega128A是兼容mega128的。在你把程序加载到单片机之前,在软件里设置一下熔丝位,一般软件默认是片内RC振荡器,所以选择外部晶振我用PROGISP(Ver168)直接用ISP下载所以要这样设置(参考)!!!
AVR studio里也应该有设置的
注意:熔丝位不要乱设置会引起锁死!!到那时就惨了!!
你的语法上有些地方不对吧,
1独立按键的判断在程序中如果没有用sbit定义过不能写为 P2^n 的形式,在程序体内这种写法表示的是异或
2中断程序里,进入中断程序以后如果不是特殊需要,先关断自身的中断控制位,退出中断的时候再打开
3在单片机里写程序的时候能省资源就省,52单片机是8位的,如果变量范围不超过255就不要用int变量,而且如果不涉及到负数就用unsigned定义
4在中断程序中如果不是必要,不要定义变量,使用全局变量完成和其他功能函数的耦合情况,如果必须要定义的话,在中断声明中规定相应的寄存器组完成现场保护,避免定义的临时变量改写了中断前功能函数中使用的寄存器情况
5你使用了4个中断源,要合理安排好中断优先级关系
你的独立按键判断能正常判断到吗?如果没有电路板的话就用KEIL的软模拟跑一下试试。
两个定时器可以同时运行的,最好根据你的程序需要设置一下中断优先级。
以上就是关于c语言delay函数会造成什么后果全部的内容,包括:c语言delay函数会造成什么后果、我用VC++编译程序结果显示,error C2065: 'delay' : undeclared identifier、大佬们,请问程序中的delayms(1000)为啥不能执行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)