51单片机c语言教程,郭天祥老师编著,其中第三章的最后一道例题的疑问 5
你好,我是一名单片机业余爱好者。在看51单片机c语言教程,郭天祥编著的书时,对一道例题有疑问。书中说:我们不能把判断发光管亮灭时间是否达到的语句写在主程序中,若写在主程序...
你好,我是一名单片机业余爱好者。在看51单片机c语言教程,郭天祥编著的书时,对一道例题有疑问。书中说:我们不能把判断发光管亮灭时间是否达到的语句写在主程序中,若写在主程序中,有可能有会发生如下错误:当主程序运行在数码管显示语句当中时,此时恰好定时器0进入中断并且num1刚好也加到4,当定时器0中断再次进入时,主程序仍未退出数码管显示语句,那么此时num1的值变成了5,这样的话,num1=4这个点便永远检测不到了,因此发光的闪烁便失去了控制,虽然本例中这种情况不会发生,因为数码管显示语句的执行总时间约为10多ms,小于定时器0中断一次的时间。我不明白为什么书中说会发生这种情况,当主程序运行在数码管显示语句当中时,此时发生中断,主程序停止运行,转而执行中断0服务,若恰好此时num1也加到4了,应该紧接着去执行下一条的if语句,从而将num1清零,不会出现num1加到5的情况啊。退一步说当中断服务程序在执行时,从程序开头执行到num1++时,此时再次发生中断,即中断服务程序运行时间大于中断时间,那样程序应该是在中断服务程序中不断的在开头到num1++之间循环执行,这跟数码管显示语句的执行时间长短有什么关系呢?我想了很久都想不通,希望有大神能够指点迷津!谢谢!有想回答的请扣扣我,我把程序发过去,774287665,感激涕零!
展开
展开全部
亲,郭老师说的是在写大型程序时尽量在中断中写的程序不要超过它的中断时间,那样的话中断程序还没有运行完就结束了。你没有认真听讲,你走思了老弟,多看几遍视频,在看看郭老师的书
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以用夸张的想法,把写在主程序中的句子无线加多,然后再对应着看就明白了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
跑小程序是看不出来的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这些程序,你最好自己写了在开发板上演示,看效果
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询