单片机程序的分层设计

来源:本站
导读:目前正在解读《单片机程序的分层设计》的相关信息,《单片机程序的分层设计》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《单片机程序的分层设计》的详细说明。
简介:单片机程序的分层设计

分层写的好处有三:

1 开发的快速性

诚如楼上那位所言,把一个工程分成 底层中间层应用层编写,程序员也分为底层程序员,

中间层程序员,应用层程序员,只要三者协调好了,那么开发过程可以并行进行,节省开发时间,

缩短周期,能快速占领市场,也有利于公司产品的保密

2 系统安全性与程序可读性

这个举例说明:比如空调系统,当室内温度高于30度或者室内湿度高于60时,开启压缩机,

如果高压或者低压,则关闭压缩机

//----以下是举例----------------------

sbit Compress = P1^1;

unsigned char CmpOpen = 0;

unsigned char Temperature = 0,Humidity = 0;

unsigned char CmpErr = NO_Err;

//----以下是应用(中间)程序----------------------

if((Temperature >= 30)||(Humidity > 60))

{

CmpOpen = OPEN;

}

if((CmpErr == HIGHPRESS)||(CmpErr == LOWPRESS))

{

CmpOpen = NO_OPEN;

}

//----以下是底层程序----------------------

if(CmpOpen == OPEN)

{

Compress == OPEN;

}

else

{

Compress == CLOSE;

}

以上例程中,通过CmpOpen这个变量的状态,决定了最终单片机引脚的状态,使得实际中

压缩机只开一次,如果你用Compress代替应用层中的CmpOpen,那么有可能会现瞬间压缩机一开一关

,对压缩机来说,必然将损坏,不安全.

如果又为了安全,又直接操作底层,程度就得改成这样

if(((Temperature >= 30)||(Humidity > 60))&&(CmpErr != HIGHPRESS )&&(CmpErr != LOWPRESS))

{

Compress = OPEN;

}

可读性不好,也不方便调试.

3 可移植性

还以上个程序为例,如果你的MCU换成了AVR ATmega16,你是不是还要完全重写程序呢?

答案是只重写底层部分就行,如下:

#define Compress PORTA

unsigned char CmpOpen = 0;

unsigned char Temperature = 0,Humidity = 0;

unsigned char CmpErr = NO_Err;

//----以下是应用(中间)程序----------------------

if((Temperature >= 30)||(Humidity > 60))

{

CmpOpen = OPEN;

}

if((CmpErr == HIGHPRESS)||(CmpErr == LOWPRESS))

{

CmpOpen = NO_OPEN;

}

//----以下是底层程序,只需要修改这个----------------------

if(CmpOpen == OPEN)

{

Compress |= 0x01;

}

else

{

Compress &= ~(0x01);

}

试想,如果你把底层写到了应用层中,

if((Temperature >= 30)||(Humidity > 60))

{

CmpOpen = OPEN;

}

if((CmpErr == HIGHPRESS)||(CmpErr == LOWPRESS))

{

CmpOpen = NO_OPEN;

}

那么修改量不是很大?移植过程不是很麻烦?

我使用的例程只是很简单的,实际运用中,要复杂很多,就更要分层,以方便移植.

分这么多层是为了不同程度的开发人员可以同期工作的原因。

比如说,底层就雇佣一个特别熟悉芯片和硬件的人做,中间层大概要找比较熟悉应用的人来把硬件功能来做扩展,应用层就随便抓一把人来开发了。

这样,多个项目可以公用一个硬件层,有两到三组中间层的支持工程师,然后每个项目各有一组应用工程师就好了。

51也可以这样做,这和效率无关,层做得好,执行效率不会影响很大,开发效率提高很多。

提醒:《单片机程序的分层设计》最后刷新时间 2024-03-14 01:10:46,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《单片机程序的分层设计》该内容的真实性请自行鉴别。