数码之家

 找回密码
 立即注册
搜索
查看: 1847|回复: 44

[C51] 单片机main里面一个while(1)怎么还能远行

[复制链接]
发表于 2022-7-26 21:44:33 来自手机浏览器 | 显示全部楼层 |阅读模式
我看有的单片机程序在main里面有一个死循环while(1),这都死循环了其它程序怎么运行呢。
发表于 2022-7-26 22:02:21 | 显示全部楼层
是不是实时系统,多个task同时运行的
回复 支持 反对

使用道具 举报

发表于 2022-7-26 22:06:02 | 显示全部楼层
他只是静静的等待一个能让他登场的机会。。。比如,中断
回复 支持 3 反对 0

使用道具 举报

发表于 2022-7-26 22:09:21 | 显示全部楼层
难道你的程序都是只执行一次的?
回复 支持 反对

使用道具 举报

发表于 2022-7-26 22:33:10 | 显示全部楼层
监听 等待 外部中断  或者中断
回复 支持 反对

使用道具 举报

发表于 2022-7-26 23:01:19 | 显示全部楼层
等待 外部中断  中断
回复 支持 反对

使用道具 举报

发表于 2022-7-26 23:39:24 | 显示全部楼层
有定时器,有别的触发
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-27 07:35:42 来自手机浏览器 | 显示全部楼层
sumandigit 发表于 2022-7-26 23:01
等待 外部中断  中断

每个程序运行在中断,那中断会不会堵着忙不过来。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-27 07:36:16 来自手机浏览器 | 显示全部楼层
ww5223017240 发表于 2022-7-26 22:09
难道你的程序都是只执行一次的?

我看别人的不太理解写法
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-27 07:39:38 来自手机浏览器 | 显示全部楼层
shgzyx 发表于 2022-7-26 22:33
监听 等待 外部中断  或者中断

都while死了,那不是一直在while里,里面都没函数,在哪里等待。上百上万行函数全靠中断转场吗。
回复 支持 反对

使用道具 举报

发表于 2022-7-27 09:19:43 | 显示全部楼层
需要中断退出
回复 支持 反对

使用道具 举报

发表于 2022-7-27 09:39:37 | 显示全部楼层
定时中断、外部中断、串口中断...
回复 支持 反对

使用道具 举报

发表于 2022-7-27 09:46:50 | 显示全部楼层
单片机就是在这个无限循环中等待中断并执行中断指定的代码。
回复 支持 1 反对 0

使用道具 举报

发表于 2022-7-27 09:51:44 | 显示全部楼层
只有中断才能跳出死循环
回复 支持 反对

使用道具 举报

发表于 2022-7-27 09:55:42 | 显示全部楼层
都是高手啊!虽然也学过,但工作后一直未接触这一行,导致完全丢失了。
回复 支持 反对

使用道具 举报

发表于 2022-7-27 09:56:20 | 显示全部楼层
执行完中断处理代码后又回到这个无限循环中等待,直到断电关机。
回复 支持 反对

使用道具 举报

发表于 2022-7-27 09:59:33 | 显示全部楼层
天来石 发表于 2022-7-27 07:39
都while死了,那不是一直在while里,里面都没函数,在哪里等待。上百上万行函数全靠中断转场吗。 ...

也有将需要反复执行的代码放在这个无限循环中执行,或者在这个无限循环中调用函数,也有通过各个中断来执行代码,这完全取决于编程者。
回复 支持 反对

使用道具 举报

发表于 2022-7-27 11:02:45 | 显示全部楼层
天来石 发表于 2022-7-27 07:39
都while死了,那不是一直在while里,里面都没函数,在哪里等待。上百上万行函数全靠中断转场吗。 ...

如果是这样,确实如你所说。
  1. void main(void)
  2. {
  3.        while(1);
  4. }
复制代码
如果是这样,大部分程序是在中断外执行。
  1. void main(void)
  2. {
  3.        while(1)
  4.       {
  5.             F1();
  6.             F2();
  7.           ……
  8.       }
  9. }
复制代码




回复 支持 反对

使用道具 举报

发表于 2022-7-27 11:19:45 | 显示全部楼层
也不是道你说的是这个while(1)里有没有执行代码。有的话就一直循环执行这些代码。不管这个while里有没有代码,单片机都会等待其他中断触发,中断程序执行完了再回到while里来。
回复 支持 0 反对 0

使用道具 举报

 楼主| 发表于 2022-7-27 12:09:49 来自手机浏览器 | 显示全部楼层
mmxx2015 发表于 2022-7-27 11:02
如果是这样,确实如你所说。
如果是这样,大部分程序是在中断外执行。


对我说的是第一种,这种全靠中断的难道大量中断产生后不会有冲突吗。除非要处理的东西简单,要不然不可想像。
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-24 14:01 , Processed in 0.280801 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

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