搜索
bottom↓
回复: 12

基于事件驱动的51"操作系统"(STEP1)

[复制链接]

出0入0汤圆

发表于 2013-2-27 22:00:37 | 显示全部楼层 |阅读模式
看到了吧,操作系统上打了引号,其实这个只是对最小操作系统的一个扩展,通过定时扫描事件的方式,实现对用户控制良好体验的实现.
这个程序不但可以放到定时中断实现,也可以将事件扫描作为一个task插入系统.
希望各位能够斧正一下.
本人第一个编程语言是VB,VB的编程对我的编程有了很大的影响,第一个是模块化,VB里写一个BAS文件以后都可以随意调用.
还有一个就是事件触发.
比如按钮Cmd1点击时会发生Private Sub Cmd1_Click()事件
在这个子程序里面编程就可以了.
今天课上脑子一发热,想在单片机里实现一下事件驱动.所以一晚上就轰轰烈烈的搞出来了

而不是一个无线超级循环,在循环里加一些扫描代码,如果程序正在执行某些量大或者占用时间的任务,那操作就蛋疼了.
如果在int里写程序,程序结构就会不清晰.
为了结构清晰:

  1. struct ctrl_map{
  2.         void(*pfun)();
  3.         uchar event_code;
  4.         unsigned short is_lock;
  5. };

  6. struct ctrl_map code lst_code[4]={
  7.         on_click_0,0,FALSE,
  8.         on_click_1,1,FALSE,
  9.         on_click_2,2,FALSE,
  10.         on_click_3,3,FALSE
  11. };
复制代码
就有了这么个东西,使用一个数组存储所有的消息地图.
使用指向函数的指针来防止程序的混乱.
定时的中断我定义了大约20ms
其实100ms也可以.
扫描键盘的程序设计的好,对后台的程序没有什么影响.
但是这个是"及时执行"式的操作,就是一收到信号就立刻响应.
下一步计划,不再及时执行,而是将其插入消息队列,消息队列询问相应的时间更长,比如500ms,但是对后台的压力就更小了.

源代码下载(执行环境:11.0592Mhz,12T,STC90C516RD+)





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-2-28 08:39:29 来自手机 | 显示全部楼层
哦?      

出0入0汤圆

发表于 2013-2-28 08:48:35 | 显示全部楼层
不错呀,有时间看看

出0入0汤圆

发表于 2013-2-28 08:56:29 | 显示全部楼层
希望能继续完善

出0入147汤圆

发表于 2013-2-28 09:03:51 | 显示全部楼层
适合做界面,之前有个采用触屏做交互的项目就是用这种思路做的

出100入18汤圆

发表于 2013-2-28 09:23:00 | 显示全部楼层
坛子里有个叫都江堰的操作系统,你可以看看,完整的实现了事件驱动。

出0入0汤圆

发表于 2013-2-28 09:44:27 | 显示全部楼层
51下不太适合用函数指针,因为麻烦事太多。

出0入0汤圆

 楼主| 发表于 2013-2-28 12:15:35 | 显示全部楼层
hcambridge 发表于 2013-2-28 09:23
坛子里有个叫都江堰的操作系统,你可以看看,完整的实现了事件驱动。

哦~我得抽空拜读一下

出0入0汤圆

 楼主| 发表于 2013-2-28 12:20:07 | 显示全部楼层
duanll 发表于 2013-2-28 09:44
51下不太适合用函数指针,因为麻烦事太多。

是的,貌似就在晶振频率逐步提到27Mhz的时候,开始出现了系统不稳定.
请教一下这是为什么?

出0入0汤圆

发表于 2013-2-28 22:37:42 | 显示全部楼层
不是所有51都能稳定跑27M的。

出0入0汤圆

发表于 2013-2-28 22:44:58 来自手机 | 显示全部楼层
标记一下先。对事件驱动比较感兴趣,前段时间看了一个消息驱动模块,可惜没看懂。

出0入0汤圆

 楼主| 发表于 2013-2-28 22:53:07 | 显示全部楼层
AIHHLI 发表于 2013-2-28 22:44
标记一下先。对事件驱动比较感兴趣,前段时间看了一个消息驱动模块,可惜没看懂。 ...

嘻嘻,这个够EASY了吧

出0入0汤圆

发表于 2013-2-28 23:04:11 | 显示全部楼层
接着搞下去        
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-4 03:06

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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