本帖最后由 avr9299 于 2012-4-13 21:26 编辑
这个系统很容易移植到别的单片机上
具有一些C语言基础的,只要1,2天就可以直接上手使用,之后自己可以直
接调试。
很多朋友都感到这套系统简单易学,性能不错,尤其是它舍弃了对于单片机51来讲是
华而不实的RTOS,而又不是采用一般大家平常的大循环设计,并且他引入了手机设计中非
常重要的平台的概念(DP51为其硬件平台),系统的内核类似于RTOS,内部又有消息
机制,特别灵活,并且支持消息的优先级。
他们希望我把他推广,今天本人做了一些修改后把他介绍给大家。
介绍:
很多人往往为了用RTOS而用RTOS,其实很多很多的项目
一般的设计都已经可以了的,RTOS显得有些画蛇添足。对于一般的设计思路,往往要
做很多的工作,甚至整个软件的结构不知道怎么搭建,McuSystem主要就是解决以上的
问题提出的,真正为实用服务的一个系统,它全部用C语言编写,结构非常清晰,核心
是它的消息机制,解决很多普通设计中的一些问题,包括并发事件问题。并且这个消息
还支持优先级。我相信只要具有一般C语言水平的都能很快的看懂。
系统用Source Insight做编辑,keil为编译,DPFLASH下载,这个成了标准配置,目录
建在D:MCU51。这个程序是让大家去修改,以适合自己的平台用。
现在简单的说一下文件的构成:boot.c是入口程序,define.h是一些宏定义,system.c
是系统内核,包括节拍,消息都在这个里面,routine.c为例行程序,如键盘,数码管
显示都在这个里面控制,键盘是采用扫描的。
面向对象:
中等规模的系统,代码一般在2,30K,
初学单片机并且想更上一层楼的,或者有些基础,想减少工作量的。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
从system.c的Timer2Server慢慢看吧
/******************************************************************************************
*函数名: Timer2Server
*参数: 无
*返回值: 无
*描述: 定时器2中断服务程序,每5ms进入一次
*编写: 王绍伟
*版本信息: V1.0 2003年8月15日
******************************************************************************************/
static void Timer2Server(void) interrupt 5 /*不要带指定寄存器,否则将产生移位指令出错*/
{
ET2 = 0;
TF2 = 0; /*状态位必须得清除,否则中断占用时间很长*/
/***************/
smart_timer_server(); /*r进行智能时钟服务程序*/
if(++RTCCounter == 200)
{
RTCCounter = 0;
rtc_soft_routine(); /*定时器例行程序*/
}
routine_process(); /*r运行例行任务程序*/ 键盘扫描与数码管显示,
/****************/
ET2 = 1;
}
一周热门 更多>