网易首页 > 网易号 > 正文 申请入驻

单片机裸机代码框架设计思路(一)

0
分享至

51单片机几乎是单片机入门的必经之路,一般的思路就是引导学生尽快入门,控制外设,只有极少的书本会提到一些设计思想,基于这个想法,这篇文章我就和大家一起分享下我学习过程中对于裸机代码的一些思考和总结。

1.轮询系统

轮询系统就是在主函数main()中不停循环执行各个任务,没有中断,伪代码如下

void main(){ Systerm_Init(); while(1) { DoTask1(); Delay_ms(100); DoTask2(); Delay_ms(100); DoTask3(); Delay_ ms(100) }}

这种代码一般是刚刚入门的学生所写,可能定时器都没有学,实际工程中几乎不会用到。

实际代码在STC89C52单片机通过Keil进行仿真,定义三个任务,每个任务是分别把LED翻转。

结果如下,可以看出我如果要独立设置LED1/LED2/LED3的翻转频率,是比较难以实现的,上述3个延时函数的时间都会对每一个task中的LED翻转频率都会有影响响。

2.前后台系统

中断称为前台,main中的while循环称为后台。相比于第一种的轮询系统,这种方式相对可以提高外部事件的实时响应能力。示意图如下所示

后台伪代码如下:

main函数死循环中通过判断各个任务task的标志位来看是否需要执行该task,需要注意的是一定要清除标志位。

void main(){ Systerm_Init(); while(1) { if(flag1 ) { flag1 = 0;//清除标志位 DoTask1(); } if(flag2 ) { flag2 = 0;//清除标志位 DoTask2(); } if(flag3 ) { flag3 = 0;//清除标志位 DoTask3(); } }}

前台伪代码如下

中断函数中将各个任务task的标志位置1,表示有效,如下是伪代码,不同的任务对应标志位有可能是多个不同中断函数中,也可以是同一个中断函数中。

void ISR1(){ flag1 = 1;}void ISR2(){ flag2 = 1;}void ISR3(){ flag3 = 1;}

这种代码很常见,当任务不复杂,这种做法也是比较推荐的,看起来比较直观,通俗易懂。

对应到本次范例中,可以在定时器中断函数里来对各个任务的标志位置位,仿真结果和源码如下

通过定时器1的定时时间来置任务标志位,定时器1的每隔5ms会进一次中断,

那么task1执行的频率是5ms*100=500ms,即LED1每隔500ms翻转一次;

task2执行的频率是5ms*200=1000ms,即LED2每隔1000ms翻转一次;

task3执行的频率是5ms*300=1500ms,即LED3每隔1500ms翻转一次

从这里可以看出比轮询要好看多,每个任务执行的频率都可以单独设定,即各个LED翻转频率可以任意指定,不会相互影响。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
香港机场以前只有两条跑道,却是世界第一大货运机场,效率真是高

香港机场以前只有两条跑道,却是世界第一大货运机场,效率真是高

作家李楠枫
2024-04-30 22:09:15
日元崩盘!全球薅日本羊毛,没想到竟是中国人被迫为日本买单

日元崩盘!全球薅日本羊毛,没想到竟是中国人被迫为日本买单

汪蹦跶啦
2024-04-30 19:26:21
英国突发!首相:震惊

英国突发!首相:震惊

环球时报新闻
2024-04-30 22:36:04
她被称为中国黄金身材,巅峰期退圈结婚,丈夫身份特殊到不方便说

她被称为中国黄金身材,巅峰期退圈结婚,丈夫身份特殊到不方便说

简读视觉
2024-04-11 20:00:03
常吃鸡蛋,长寿不会远离你!但这2类人要记住,最好不要吃

常吃鸡蛋,长寿不会远离你!但这2类人要记住,最好不要吃

熊猫医学社
2024-04-29 10:45:03
冯琳:上了《新闻联播》,系主持人大赛结束127天的“央视首秀”

冯琳:上了《新闻联播》,系主持人大赛结束127天的“央视首秀”

晓今娱
2024-05-01 00:05:32
俄乌战争,大帝的梦想摧毁了一切,多数人看不懂

俄乌战争,大帝的梦想摧毁了一切,多数人看不懂

论鉴
2024-03-05 18:35:40
撑队友!球迷问石柯,王大雷:都为泰山流过汗受过伤,你说怎么样

撑队友!球迷问石柯,王大雷:都为泰山流过汗受过伤,你说怎么样

直播吧
2024-05-01 09:26:19
詹杜库陷入泥潭之中 他们三人新赛季会成为队友吗?

詹杜库陷入泥潭之中 他们三人新赛季会成为队友吗?

直播吧
2024-05-01 12:27:14
4强将出炉 斯诺克世锦赛5月1日赛程公布:特鲁姆普奥沙利文再出战

4强将出炉 斯诺克世锦赛5月1日赛程公布:特鲁姆普奥沙利文再出战

草根体育
2024-05-01 06:28:08
阿根廷总统慷慨激昂地说:凡是享受特权的人,都是人民的敌人

阿根廷总统慷慨激昂地说:凡是享受特权的人,都是人民的敌人

小白兔趣闻
2024-04-11 20:07:55
一夜成名的饭局!990万迈巴赫背后的“沉默成本”我笑死在评论区

一夜成名的饭局!990万迈巴赫背后的“沉默成本”我笑死在评论区

户外小阿隋
2024-05-01 09:43:06
乌云其木格同志逝世

乌云其木格同志逝世

新京报
2024-04-30 19:03:17
乌克兰列出了克里米亚多达 200 个的军事设施清单:必须全部摧毁

乌克兰列出了克里米亚多达 200 个的军事设施清单:必须全部摧毁

探索星空
2024-04-30 12:03:05
广州的这场暴雨,撕掉新能源汽车的遮羞布,车主是苦不堪言

广州的这场暴雨,撕掉新能源汽车的遮羞布,车主是苦不堪言

户外小阿隋
2024-04-30 11:30:31
被针对?郭楠执法辽粤大战G1,宏远再添一坏消息,辽宁或得开门红

被针对?郭楠执法辽粤大战G1,宏远再添一坏消息,辽宁或得开门红

刘哥谈体育
2024-05-01 11:54:38
问界M7车祸一事已协商好,家属表示不愿再被打扰

问界M7车祸一事已协商好,家属表示不愿再被打扰

映射生活的身影
2024-04-30 10:07:17
买超,被曝出大瓜!

买超,被曝出大瓜!

一个小小人物
2024-04-29 11:13:06
土耳其归还当年“辽宁号”的10亿过路费,恳请中方加大投资!

土耳其归还当年“辽宁号”的10亿过路费,恳请中方加大投资!

星辰故事屋
2024-03-31 11:04:14
乌军使用ATACMS导弹再袭克里米亚,未来两周克里米亚大桥面临风险

乌军使用ATACMS导弹再袭克里米亚,未来两周克里米亚大桥面临风险

山河路口
2024-04-28 21:43:35
2024-05-01 13:06:44
科技商者搜集
科技商者搜集
数码科技,专注手机
149文章数 111123关注度
往期回顾 全部

科技要闻

余承东卸任华为终端CEO 新任命为董事长

头条要闻

问界M7事故砸窗救人男子:若早1分钟我能把3人都拽出来

头条要闻

问界M7事故砸窗救人男子:若早1分钟我能把3人都拽出来

体育要闻

"意甲最佳"金玟哉 踢回了中超水平...

娱乐要闻

黄子韬被曝求婚徐艺洋 大量亲密照曝光

财经要闻

俞敏洪,踏足A股!

汽车要闻

预售2.89-3.49万 奔腾小马正式开启预售

态度原创

健康
亲子
数码
游戏
公开课

春天野菜不知不识莫乱吃

亲子要闻

再不穿背带裤就长大了,可爱

数码要闻

发烧友将QLC SSD转换为SLC 大幅提高了耐用性和性能

天才小孩哥!15岁男孩创NES《俄罗斯方块》新纪录

公开课

父亲年龄越大孩子越不聪明?

无障碍浏览 进入关怀版