找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6662|回复: 9
打印 上一主题 下一主题
收起左侧

51单片机定时器中断程序问题,while(1);去掉就不无法正常运行

[复制链接]
跳转到指定楼层
楼主
我误以为程序运行的时候会一直停在这个while(1);循环,但这个while(1);如果去掉的话程序就无法正常运行,不去掉却能正常运行,求大佬详解
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:248705 发表于 2019-2-16 12:25 | 只看该作者
while确实会把程序停在那里,你没理解错,但是这里while的作用是让定时器只初始化一次,如果不加while,定时器会反复初始化(main本身就是一个循环),也就没办法进入中断,你就看不到现象
回复

使用道具 举报

板凳
ID:477097 发表于 2019-2-16 12:39 | 只看该作者
有while(1),程序一直运行中,会进定时器中断,没有while(1),程序运行结束,不会进定时器,工作就不正常了。
回复

使用道具 举报

地板
ID:474677 发表于 2019-2-16 15:56 | 只看该作者
2楼说得对,你的程序功能是靠中断完成的,去掉while(1)后,主函数一直在不停的进行中断的初始化,无法响应中断!
回复

使用道具 举报

5#
ID:474677 发表于 2019-2-16 15:59 | 只看该作者
yun8808 发表于 2019-2-16 12:39
有while(1),程序一直运行中,会进定时器中断,没有while(1),程序运行结束,不会进定时器,工作就不正常了 ...

main()函数是自循环函数,程序不会结束,但是会反复中断初始化而形成死循环
回复

使用道具 举报

6#
ID:158375 发表于 2019-2-18 13:33 | 只看该作者
你还是先学学基础的C语言再说其它的吧。走路没学会,还想快跑?
回复

使用道具 举报

7#
ID:477682 发表于 2019-2-18 13:49 | 只看该作者
您的理解是有一定道理的,while语句的作用就是让他一直在此处运行,有while(1),程序一直运行中,等待定时器中断的产生,没有while(1),程序直接运行结束,定时器中断就没有作用了,自然无法正常工作。
回复

使用道具 举报

8#
ID:319023 发表于 2019-2-18 16:30 | 只看该作者
while(1)是循环执行的,去掉后也可以加延时函数试下定时器中断。  C语言也是学习单片机的基础,有时间还要多看下单片机例程,根据进度一点一点学起来。
回复

使用道具 举报

9#
ID:444306 发表于 2019-2-18 17:36 | 只看该作者
先学学基础的C语言再说其它的吧。走路没学会,还想飞!
回复

使用道具 举报

10#
ID:338762 发表于 2019-2-18 18:09 | 只看该作者
形成死循环,你应该多看看函数的定义
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表