标题: 51单片机一个关于C语言延时程序的问题 [打印本页]

作者: forest415    时间: 2020-7-15 08:33
标题: 51单片机一个关于C语言延时程序的问题
在延时函数执行期间是不是其他的就都停止不执行了只会执行延时函数呢?比如下面这样的
......
//现在外部中断p1是0了
if (p1==0){delay(3000);}//3秒
if (p1==1){p2==0;}//在上句延时到2秒时p1变成1了
请问这个p2是在2秒时是0还是3秒呢?

作者: forest415    时间: 2020-7-15 08:38
还有个问题是消除抖动的按键需要那如果是电平触发也需要吗?
作者: 笨笨兔    时间: 2020-7-15 09:01
所谓延时(按你写的意思):什么都不干,等着,时间到了才说该干什么。
作者: cjjdemon    时间: 2020-7-15 09:17
3秒+几个机器周期的时间
作者: idiqye    时间: 2020-7-15 09:24
你的p2==0?这手误吧,P2=0
作者: 不要黑    时间: 2020-7-15 09:27
3s,程序按顺序执行,如果想要触发执行,需要用中断
作者: xqleft    时间: 2020-7-15 09:35
对!!!   所以非特殊情况不要用延时,尤其在while(1)主函数里面.如果需要短暂延时的,可以用空指令NOP(); 这个不是延时,是空指令.
作者: f556    时间: 2020-7-15 09:43
除了Timer,这种延时是这样的。
作者: wolaixiaziliao    时间: 2020-7-15 10:00
中断里不能延时。有中断先执行中断函数,回来再执行主程序的延时,主程序延时过程中,不会继续执行,等延时完在执行主程序下一行代码
作者: ld2020    时间: 2020-7-15 10:10
除了中断,其他是空等




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1