标题: 51单片机定时器中断程序问题,while(1);去掉就不无法正常运行 [打印本页]

作者: 无敌的你    时间: 2019-2-16 11:09
标题: 51单片机定时器中断程序问题,while(1);去掉就不无法正常运行
我误以为程序运行的时候会一直停在这个while(1);循环,但这个while(1);如果去掉的话程序就无法正常运行,不去掉却能正常运行,求大佬详解

D__单片机_1.1实验_定时器中断_定时器中断.uvproj - μVision 2019_2_16 11_04_54.png (192.9 KB, 下载次数: 135)

D__单片机_1.1实验_定时器中断_定时器中断.uvproj - μVision 2019_2_16 11_04_54.png

作者: 的花朵    时间: 2019-2-16 12:25
while确实会把程序停在那里,你没理解错,但是这里while的作用是让定时器只初始化一次,如果不加while,定时器会反复初始化(main本身就是一个循环),也就没办法进入中断,你就看不到现象
作者: yun8808    时间: 2019-2-16 12:39
有while(1),程序一直运行中,会进定时器中断,没有while(1),程序运行结束,不会进定时器,工作就不正常了。
作者: iofree    时间: 2019-2-16 15:56
2楼说得对,你的程序功能是靠中断完成的,去掉while(1)后,主函数一直在不停的进行中断的初始化,无法响应中断!
作者: iofree    时间: 2019-2-16 15:59
yun8808 发表于 2019-2-16 12:39
有while(1),程序一直运行中,会进定时器中断,没有while(1),程序运行结束,不会进定时器,工作就不正常了 ...

main()函数是自循环函数,程序不会结束,但是会反复中断初始化而形成死循环
作者: 笨笨兔    时间: 2019-2-18 13:33
你还是先学学基础的C语言再说其它的吧。走路没学会,还想快跑?
作者: AILIAN    时间: 2019-2-18 13:49
您的理解是有一定道理的,while语句的作用就是让他一直在此处运行,有while(1),程序一直运行中,等待定时器中断的产生,没有while(1),程序直接运行结束,定时器中断就没有作用了,自然无法正常工作。
作者: 随风飘远    时间: 2019-2-18 16:30
while(1)是循环执行的,去掉后也可以加延时函数试下定时器中断。  C语言也是学习单片机的基础,有时间还要多看下单片机例程,根据进度一点一点学起来。
作者: areyouok    时间: 2019-2-18 17:36
先学学基础的C语言再说其它的吧。走路没学会,还想飞!

作者: Firefox903    时间: 2019-2-18 18:09
形成死循环,你应该多看看函数的定义




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