找回密码
 立即注册

QQ登录

只需一步,快速开始

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

C51单片机如何通过外部中断INT0,跳出主程序中的while死循环?

  [复制链接]
楼主
ID:213173 发表于 2021-3-6 08:38 | 显示全部楼层
17826075805 发表于 2021-3-5 14:42
是需求1的意思,类似于程序复位,好比正在播放歌曲,这个时候按下退出按键,正在播放的歌曲就退出了。并 ...

如果按楼主的思路设计程序构架,可以采用软复位的方式轻松实现。
1.主函数设两个互不关联的while死循环,其它子函数当然都可以调用。main初始化时读取EEPROM保存的分支信息确定运行哪个循环。
2.外部中断INT0函数中,判断正在运行中的是哪个死循环,改写EEPROM,启动软复位。
3.重启,读EEPROM,进入另一个死循环。
4.掉电后再上电,运行的是掉电前的循环。
回复

使用道具 举报

沙发
ID:213173 发表于 2021-3-6 09:42 | 显示全部楼层
17826075805 发表于 2021-3-6 09:07
我的硬件电路暂时没上E^2PROOM

上面所述只是按你的思路设想的构架。其实不论多少个分支,每个分支运行多长时间,都可以在一个主循环内处理。关键在于解决问题的思路和设计程序的构架。难道你一个分支就有上万条代码?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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