移植 MCUsystem 到 Nu_LB_NUC140

MCUsystem 介绍

默认路径:
	D:\MCU51\


Version:MS1.01-2003.7.17

	修改:增加ASCII.C的一个ASCI码(7F),用于虚拟按键用


Version:MS1.10-2003.9.14

	更改系统结构,便于打包


Version:MS1.11-2003.9.15

	统一标准风格。


Version:MS1.21-2003.9.29

	修改UART串口的命令解析程序,修改RTC的pcf8563中断部分。


Version:MS1.22-2003.10.4

	精简IIC和smart_timer代码,添加define.h的宏定义。


Version:MS1.23-2003.10.7

	修改system.c里的消息堆栈的宏定义


Version:MS1.24-2003.11.5

	增加ii.c函数,支持对eeprom的打包
	
Version:MS1.25-2004.3.7
	增加由PLD或者GPIO输出的模拟UART,在6个CLOCK下速度为57.6K

Version:MS1.26-2004.12.13
	增加消息的优先级功能,消息类型的前4位为消息的优先级,后4位为消息的类型





说明文档

1:    中断响应问题,当在中断关闭时有一个中断过来,则系统会将它保存在中断
	标记位上,当中断开启时才开始执行这个保存在标记位上的中断,所以中断
	系统只能保持一个中断, EA跟各个独立的中断控制位在这个问题上的功能
	是一样的.例子程序为:
	EA=0;				 		//Time=0
	ES=0;
	have Uart interrupt				//Time=1;
	don't execute Uart interrupt;
	EA=1;						//Time=2;
	ES=1;
	execute Uart interrupt;			//Time=3;


2:	串行口的函数调用问题.在用printf函数时,TI必须为1,但本系统为了能用中断
	接收Uart,ES=1,这样必然会跟TI=1产生冲突,也就是不停的中断响应,所以要用
	printf函数,必须得TI=1,ES=0才行.


3:	pdata 似乎不能用于外部声明的变量,data和xdata可以,这个有待于进一步验证

4:	串口通讯问题: 开机时UART会接收到一个不定的数据,这个主要是uart_init引
	起的,要先TI=0,RI=0后REN=1,这个有待进一步的考证.
	

本人说明:
	本人在中科院半导体所工作半年,在手机设计公司工作两年至今,以前是软件公司师,
	现在为硬件工程师,主要的工作都在底层的硬件设计及手机的多媒体应用。两年前在
	从周立功公司购买了DP51单片机开发板,感觉这个板子挺不错的,并且结合自己在这
	个行业的实际情况,基于DP51编写了这套软件。之后用这套软件为公司,也为很多朋
	友做了一些项目,包括指纹门禁系统,激光器测试系统,激光器老化系统,,轮胎生
	产自动化控制系统。在这些开发过程中,同时教会了他们怎样使用这套系统,一般的
	讲,具有一些C语言基础的,只要1,2天就可以直接上手使用,之后他们自己可以直
	接调试。
	很多朋友都感到这套系统简单易学,性能不错,尤其是它舍弃了对于单片机51来讲是
	华而不实的RTOS,而又不是采用一般大家平常的大循环设计,并且他引入了手机设计中非
	常重要的平台的概念(DP51为其硬件平台),系统的内核类似于RTOS,内部又有消息
	机制,特别灵活,并且支持消息的优先级。
	他们希望我把他推广,今天本人做了一些修改后把他介绍给大家。

McuSystem介绍:
	现在这段时间RTOS非常热,可很多人往往为了用RTOS而用RTOS,其实很多很多的项目
	一般的设计都已经可以了的,RTOS显得有些画蛇添足。对于一般的设计思路,往往要
	做很多的工作,甚至整个软件的结构不知道怎么搭建,McuSystem主要就是解决以上的
	问题提出的,真正为实用服务的一个系统,它全部用C语言编写,结构非常清晰,核心
	是它的消息机制,解决很多普通设计中的一些问题,包括并发事件问题。并且这个消息
	还支持优先级。我相信只要具有一般C语言水平的都能很快的看懂。
	系统用Source Insight做编辑,keil为编译,DPFLASH下载,这个成了标准配置,目录
	建在D:\MCU51\。这个程序是让大家去修改,以适合自己的平台用。
	现在简单的说一下文件的构成:boot.c是入口程序,define.h是一些宏定义,system.c
	是系统内核,包括节拍,消息都在这个里面,routine.c为例行程序,如键盘,数码管
	显示都在这个里面控制,键盘是采用扫描的。

McuSystem面向对象:
	中等规模的系统,代码一般在2,30K,
	初学单片机并且想更上一层楼的,或者有些基础,想减少工作量的。


作者:王绍伟。
2004/12/14

https://download.csdn.net/download/wowocpp/10741545

移植开始

P89C51RX
https://wenku.baidu.com/view/6b52f7d650e2524de5187e5d.html
https://pdf1.alldatasheet.com/datasheet-pdf/view/82131/PHILIPS/P89C51RA2BA/01.html

在这里插入图片描述

SETBIT(CKCON, 0); — 设置 CKCON 的第0 位为1
RESETBIT(CKCON, 0); —设置 CKCON 的第0 位为0

static void InterruptInit(void)
{
EX0 = 0; /外部中断0/

ET0 = 0;		/*定时器中断0*/

EX1 = 0;		/*外部中断1*/

ET1 = 0;		/*定时器中断1*/

ES = 0;		/*串行口中断*/

ET2 = 0;		/*定时器中断2*/

EA = 0;		/*全部定时器关闭*/

}

中断优先级:设置为 1 表示高优先级 ,设置为0 表示低级优先级
中断服务优先级设定

在P89C51RX 中 ,高优先级别的中断,可以中断低优先级的中断服务程序。
ARM CM0 中 ,关于 中断优先级是,是怎么设置的呢?
在这里插入图片描述
按照这个设置来。

extern void interrupt_priority(void)
{
//UART
	PS = 1;
	SETBIT(IPH, 4);		/*PSH=1*/ // 第4位 设置为1

//TIMER2
	PT2 = 0;
	SETBIT(IPH, 5);		/*PT2H=1*/  // 第5位 设置为1
	
//TIMER1
	PT1 = 0;
	RESETBIT(IPH, 3);	/*PT1H=0*/  // 第3位 设置为0

//INT1
	PX1 = 0;
	RESETBIT(IPH, 2);	/*PX1H=0*/  // 第2位 设置为0 

//TIMER0
	PT0 = 0;
	RESETBIT(IPH, 1);	/*PT0H=0*/
	
//INT0
	PX0 = 0;
	RESETBIT(IPH, 0);	/*PX0H=0*/
}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

对应的板子是什么样子的?周立功的DP51开发板

本人2004年在21ic上发表了“实用单片机系统”,也叫McuSystem,基于周立功的DP51开发板编写的,很多初学朋友觉得还不错,现在在网上发表了他的第三版本,MS3,这个版本在消息机制上有改进,采用16位结构,适合一些采集系统,同时采用循环消息队列,软件定时器上有了比较大的改进,采用回调函数形式,并且支持中断内回调和中断外回调,这样可以实现伪任务的概念。第三个改进是去掉了很多具体的应用,留下一个内核可以适用于一个最小系统,具体应用请各位自己扩充,本人自己建了一些库,要应用的时候直接加上就可以了,第四个改进是应用了比较多的函数指针,这个可能对一般的单片机开发人员有点难度,但应用更加灵活了。

本程序可以直接在keil的debug模式下执行,适合对单片机有一定理解的朋友。
不足之处请多多指出
地址21ic的FTP:
File.21ic.comMCU实用单片机系统第三版(带SI).rar

内附SourceInsight3.5,一个非常好的C语言编辑器,内带程序注析自动生成实用说明,这个非常可以自动生成函数,文件头的注析。MS1,MS2:MS2比较简单,适合入门,MS1可以了解历史

在这里插入图片描述

在这里插入图片描述

有点问题

串口通信如何测试
LCD如何显示

程序 还有问题,暂时 保存。
E:\Nu_LB_Nuc140\work\Nu_LB_NUC140_GPIO_McuSystem

Version:MS1.26

书中推荐的版本 是:
在这里插入图片描述

msOS_V0.11_20150807.pdf

在这里插入图片描述

下载 MS2 :
http://www.pudn.com/Download/item/id/951727.html

暂时有点问题的代码:基于MS1

https://download.csdn.net/download/wowocpp/10802569

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值