单片机信息网:深圳市今科电子有限公司
网站地图 RSS订阅
高级搜索 收藏本站
会员中心 欢迎投稿
首页 | 业界动态 | 解决方案 | 技术文献 | 下载中心 | 单片机学习 | 单片机原理 | 单片机编程 | 单片机设计 | 单片机开发 | 技术专题 | 单片机论坛 |单片机博客| 联系我们
单片机新闻 | 单片机学习 | 单片机编程 | 单片机设计 | 单片机开发 | 单片机原理 | 单片机解密 | 芯片解密 | IC解密 | 单片机方案 | 51单片机 | AVR单片机 | PIC单片机
单片机程序实例大全 | 潜入式系统 | PCB设计 | 单片机资料下载 | 工具/软件下载 | 技术经验分享 | 单片机技术人生 | IC资料下载 | 数字电路 | 模拟电路 | 单片机空间
当前位置:主页>单片机原理>文章内容
单片机系统设计与C51编程实践
来源:单片机信息网 作者:匿名 发布时间:2007-10-12 阅读次数: 【大 中 小】【收藏本文】 【打印

单片机系统设计与C51编程实践


信息来源:单片机信息网
基本原则
质量是关键。没有人会对很差的工作感到满足。当完成高质量的工作时,你会为此而感到骄傲。不管你是否知道,你都会因为你的高质量工作而得到信誉。因此,要 想为自己所做的事感到骄傲,就需要建立个人标准,并为达到这一标准而努力奋斗。在达到这些标准时,再提高标准并继续努力。挑战自己去完成更优良的工作,你 将会为自己的成就而感到惊讶。
1.1 了解单片机的能力
【规则1】设计满足要求的最精简的系统。

正确估计单片机的能力,知道单片机能做什么,最大程度的挖掘单片机的潜力对一个单片机系统设计者来说是至关重要的。我们应该有这样一个认识,即单片机的处 理能力是非常强大的。早期的PC机,其CPU(8086)处理能力和8051 相当,却能处理相当复杂的任务。单片机的能力的关键就在软件设计者编写的软件上。只有充分地了解到单片机的能力,才不会做出“冗余”的系统设计。而采用许 多的外围芯片来实现单片机能实现的功能。这样做,即增加了系统成本,也可能会降低了系统的可靠性。

1.2 系统可靠性至关重要

【规则2】使用看门狗。

看门狗电路通常是一块在有规律的时间间隔中进行更新的硬件。更新一般由单片机来完成,如果在一定间隔内没能更新看门狗,那看门狗将产生复位信号,重新复位 单片机。更新看门狗的具体形式多是给看门狗芯片相关引脚提供一个电平上升沿或读写它的某个寄存器。使用看门狗电路将在单片机发生故障进行死机状态时,重新 复位单片机。当前有多种看门狗的芯片,如MAXIM 公司的MAX802,MAX813 等。而且,有好多种单片机中本身就集成有看门狗。一个外部的看门狗是最好的,因为它不依赖于单片机。如果可能的话,看门狗更新程序不应该放在中断或是子程 序中,原则上应该放在主程序中。我曾经见过一个工程师,他所调试的程序在运行时偶而会引起看门狗的复位动作,于是他干脆在每10ms 就中断一次的时钟中断程序中清看门狗。我相信他也知道使看门狗失去作用,可他却没有不是去查明引起这个现象的真正原因。因此,我想提醒大家:不论什么理 由,绝对不要忽略系统故障的真正原因。高质量的产品来自于高素质的工程师,高质量的产品造就高素质的工程师。

【规则3】确定系统的复位信号可靠。

这是一个很容易忽略的问题。当你在设计单片机系统时,你脑中有这个概念吗?什么样的复位信号才是可靠的吗?你用示波器查看过你设计的产品的复位信号吗?不 稳定的复位信号可能会产生什么样的后果?你有没有发现过你所设计的单片机系统,每次重新上电启动后,数据变得乱七八糟,并且每一次现象并不相同,找不出规 律,或者有时候干脆不运行,或者有时候进入一种死机状态,有时候又一点事都没有正常运行?在这种情况下,你应该查一下你的系统的复位信号。一般在单片机的 数据手册(Datasheet)中都会提到该单片机需要的复位信号的要求。一般复位信号的宽度应为。复位电平的宽度和幅度都应满足芯片的要求,并且要求保 持稳定。还有特别重要的一点就是复位电平应与电源上电在同一时刻发生,即芯片一上电,复位信号就已产生。不然,由于没有经过复位,单片机中的寄存器的值为 随机值,上电时就会按PC 寄存器中的随机内容开始运行程序,这样很容易进行误操作或进入死机状态。

【规则4】确定系统的初始化有效。

系统程序开始应延时一段时间。这是很多单片机程序设计中的常用方法,为什么呢?因为系统中的芯片以及器件从上电开始到正常工作的状态往往有一段时间,程序 开始时延时一段时间,是让系统中所有器件到达正常工作状态。究竟延时多少才算合适?这取决于系统的各芯片中到达正常工作状态的时间,通常以最慢的为准。一 般来说,延时20-100毫秒已经足够。对于系统中使用嵌入式MODEM 等“慢热”型的器件来说,则应更长。当然,这都需要在系统实际运行中进行调整。

【规则5】上电时对系统进行检测。

上电时对系统中进行检测是单片机程序中的一个良好设计。在硬件设计时也应该细细考虑将各个使用到的芯片、接口设计成容易使用软件进行测试的模式。很多有经 验的单片机设计者都会在系统上电时(特别是第一次上电时)进行全面的检测,或者更进一步,将系统的运行状态中分为测试模式和正常运行模式,通过加入测试模 式对系统进行详细的检测,使得系统的批量检测更为方便容易。另外要注意的是,一个简单明了的故障显示界面也是颇要费得心思的。比如:系统的外部 RAM(数据存储器)是单片机系统中常用的器件。外部RAM 如果存在问题,程序通常都会成为一匹脱缰的野马。因此,程序在启动时(至少在第一次上电启动时)一定要对外部RAM 进行检测。检测内容包括:1)检测RAM 中的单元。这主要通过写入和读出的数据保持一致。2)检测单片机与RAM 之间的地址数据总线。总线即没有互相短路,也没有连接到“地”上。另外,很多芯片,都提供了测试的方法。如串行通信芯片UART,都带环路测试的功能。

【规则6】按EMC 测试要求设计硬件。

EMC 测试要求已经成为产品的必需。有很多的文章关于这方面的。

1.3 软件编程和调试

【规则7】尽可能使用Small 模式编译

对比起Large模式和Compact 模式,Small 模式能生成更为紧凑的代码。在Small 模式下,C51 编译器将没有使用关键词,如idata、pdata、xdata特殊声明的变量通通放在data单元中。在编程中,对于在的数据区,可以指定放在外部存储 器中。

【规则8】在仿真前做好充分的准备

单片机硬件仿真器给单片机开发者带来了极大的方便,同时也很容易造成人的依赖性。很多时候,没有仿真器却能促使工程师写出更高质量的程序。也许在硬件仿真调试之前,下面准备工作将会对你有用:

1)程序编完后,对代码仔细逐行检查。检查代码的错误,建立自己的代码检查表,对经常易错的地方进行检查。检查代码是否符合编程规范。 2)对各个子程序进行测试。测试的方法:用程序测试程序,编制一个调用该子程序的代码,建立要测试子程序的入口条件,再看看它是否按预期输出结果。

3)如果代码有修改,再次对代码进行检查。

4)有可能的话,进行软件仿真——Keil C 的软件仿真功能十分强大。软件仿真可以防止因硬件的错误,如器件损坏、线路断路或短路,而引起调试的错误。

5)开始硬件仿真。

【规则9】使用库函数

重用代码,尤其是是标准库的代码,而不是手工编写你自己的代码。这样更快、更容易也更安全。KeilC 中提供了多个库函数,这些库函数的用法在KeilC 的帮助文件中有详细的描述。

【规则10】使用const。

这一点在很多经典的关于C 和C++的书籍中是必谈的要点。在《Exceptional C++》一书中,对这点有很精彩的描述,现摘录如下:“没有正确的安全意识的枪手在世界上是 不可能活的很长的。const 观念不正确的程序员也是一样和没有时间戴紧帽子的正确,没有时间检查带电电线的电工一样不会活的很长。”

在C 语言中,const 修饰符表示告诉编译器此函数将不会改变被修饰的变量的指向的任何值(除了强制类型转换)。当把指针作为参数传递时,总是合适地使用const,不仅可以防 止你无意中错误的赋值,而且还可以防止在作为参数将指针传递给函数时可能会修改了本不想改变的指针所指向的对象的值。如: const int num = 7;

num = 9; file://有/可能得到编译器的警告。

const char *ptr,则表示该指针所指向的内容不会被改变,如果在程序中被发生对其赋值的操作,编译时将出错误提示。如:

const char *ptr = “hello”;

*ptr = ‘H'; file://错/误,所指内容不可改变也可将const 放在星号后面来声明指针本身不可改变。如:

char* const ptr;

ptr++; file://错/误,指针本身不可改变

也可同时禁止改变指针和它所引用的内容,其形式如下: const char* const ptr;

【规则11】使用static

static是一个能够减少命名冲突的有用工具。将只在一个模块文件中的变量和函数使用static 修饰,将不会和其他模块可能具有相同名称的函数和变量在模块连接时不会产生名称冲突。一般来说,只要不是提供给其它模块使用的函数,和非全局变量,均应使 用static修饰。将子程序中的变量使用static 修饰时,表示这个变量在程序开始时分配内存,在程序结束时释放,它们在程序执行期间保持它们的值。如:

void func1(void)

{

static int time = 0;

time++

}

void func2(void)

{

static int time = 0;

time++;

}

两个子程序中的time 变量使用static 修饰,所以它们是静态变量,每调用一次time将进行加1,并保持这个值。它们的功能与下面程序相似:

int time1 = 0;

int time2 = 0;

void func1(void)

{

time1++

}

void func2(void)

{

time2++;

}

我们可以看出,使用static修饰后,模块中的全局变量减少,使得程序的更为简单。

【规则12】不要忽视编译器的警告。

编译器的给出的警告都是有的放矢,在没有查清引起警告的真正原因之前,不要忽视它。 【规则13】注意溢出问题,写安全的代码。

1.4 KeilC 编程

【规则14】深入了解你所用的工具。仔细查看KeilC 附带的帮助文件,你能找到你期待已久的东西。KeilC 是当前最好用的单片机开发软件。要充分利用该软件的功能,就必须对它深入的进行了解。

【规则15】不要使用语言的冷僻特性,并且记住,耍小聪明会贻害无穷。最重要的是编写你理解的代码,理解你编写的代码,你就可能会做得很好。

2 推荐书目

要成为一个优秀的单片机系统产品设计工程师,兴趣、热情、责任心至关重要。

2.1 单片机技术学习

《微机原理及应用(从16 位到32 位) 》戴梅萼等著清华大学出版社。学校教材,也是当年我学习单片机的启蒙书。

2.2 C51 编程学习

《单片机高级语言C51 Windows 环境编程与应用》作者:徐爱钧彭秀

华电子工业出版社。这本书几乎覆盖了C51 编程的方方面面,最新版本对当前使用最广的keilC 也有很详细的讲述。对于刚学C51 编程的同志,本书是上上之选,强力推荐。比起现今书市上的所谓什么“C51 编程圣经”之类的书强得多。


2.3 C 语言编程必读

《C 陷阱与缺陷》Andrew Koenig著

《C 专家编程》Peter Van Der Linden 著

C 语言开发技术经典之作,C 程序员必读之书,数十年来经久不衰。如果你想对C 语言全面的掌握,真正了解C 语言的精髓,这两本书是必读之作。由人民邮电出版社出版的中文译本也还不错。

2.4 程序设计技术方面

《数据结构》, 严蔚敏, 清华大学出版社。清华大学出版社的教材质量稳定,中规中矩,价格相对来说也便宜一点。

《程序设计实践》Brian W. Kernighan, Rob Pike著;《代码大全》(网上有下载)。这两本是能让你看后,感觉有大突破的那种书籍,千万别吝惜银子。

3 后记

从事单片机开发工作已经有差不多三年时间了,自己感觉积累了一些经验和体会。这篇文章就算是一个总结吧。本来想写的更为详细一些,加入C51中指针及 uvision 软件仿真的一些使用体会,以及自己的一些开发实践,但一想,keilc中的说明书已经够详细了,而我的开发产品所有权又不属于我本人,因此,并没有深入下 去。由于本人水平有限,这次也是抱着与各位交流学习的目的,非常欢迎各位与我联系交流,共同探讨。

上一篇:中国嵌入式软件产业链现状与趋势分析   下一篇:单片机系统硬件抗干扰常用方法实践

标签:单片机系统设计 C51编程 单片机实践 点此搜索本站更多相关信息...搜索更多相关内容..

您可能还感兴趣的内容: 深圳今科电子单片机解密、IC解密服务 今科电子单解机、IC解密业务是怎样的流程?

此页的访问者还关注了下面这些相关资讯


·单片机系统硬件抗干扰常用方法实践
·可编程模拟器件原理与开发
·dsPIC30F6010单片机的原理及应用
·利用单片机PWM信号进行PWM信号
·多功能型“银校一卡通”系统关键技术研究
·PIC 8位单片机的汇编语言
·USB接口类单片机特点及应用
·单片机的常用名词
·PIC单片机程序设计的基本格式
·SI/C负极在实际应用中的失效原因分析
·8位机嵌入式TCP通信速度的研究
·为什么要使用仿真器
·AVR单片机的主要特性
·PIC系列单片机简介
·单片机泛泛谈[论坛观点]
·AVR单片机的特点
·PIC单片机的特点及应用
·小容量单片机系统的C语言程序结构
·单片机的用途
·EEPROM 8位单片机/18引脚Flash
·VoIP的基本传输过程简介
·51单片机管脚说明
·单片机的基本结构
·单片机概述
·单片机控制步进电机驱动器工作原理
·PICl6C78系列混合信号嵌入式芯片的原理和应用
·PIC系列单片机简介
·PIC系列单片机程序设计基础
·PIC 8位单片机的分类和特点
·AVR单片机的TWI总线的原理及应用
·单片机(MCU)的分类
·单片机的Proteus虚拟仿真
·单片机的常用名词
·什么是单片机 什么是dsp芯片?
·单片机硬件系统设计原则
·c51单片机实用通信协议
·第七课:51单片机的引脚
·第八课:8051单片机I/O引脚工作原理
·第九课:8051单片机的存储器结构
·第十课:编码及译码器工作原理


版权声明:
( 更多版权详述 | 隐私政策 )

1、凡本网注明“来源:单片机信息网”或“单片机论坛”的文字、图片和音视频作品,版权均属深圳市今科电子有限公司所有,任何媒体、网站或个人未经本网书面授权不得转载、链接、转贴或以其他方式使用;已经本网书面授权的,在使用时必须注明“来源:单片机信息网”或“单片机论坛””。
2、本网未注明“来源:单片机信息网”或“单片机论坛”的作品均为转载稿,本网转载稿件只为传递更多信息,并不意味着认同其观点或真实性。如其他媒体、网站或个人转载使用,必须保留本网注明的“稿件来源”,并自负法律责任。
3、对于单片机信息网通过单片机论坛发布的作品,本网受著作权人委托禁止任何媒体、网站或个人在未经书面授权的情况下转载使用。
4、为维护自身权益、尊重作者版权,单片机信息网特委托深圳市律师协会为本网站法律顾问。对于违反本声明的,单片机信息网律师将依法追究其责任;对于刊载作品涉及版权等问题的,请作者在两周内与网站管理或张朝阳律师联系。
责任编辑:今科电子
双击复制本文网址,发送给您QQ/MSN上的朋友:
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。

·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
§最新评论
今科热门解密系列
·PIC芯片DSP系列单片机解密PIC芯
·Freescale单片机解密飞思卡尔芯
·飞思卡尔(Freescale)单片机解密/
·pic18f系列单片机解密
·三星(Samsung)系列单片机极速解
·飞林Feeling芯片系列MCU单片机/I
·MICROCHIP微芯(PIC)系列单片机/M
·单片机破解的常用方法及应对策略
·IC卡预付费电度表的安全及防范技
·单片机解密 单片机解密方法 单片
·PHILIPS系列单片机解密
·独家STC单片机解密
·我对红外遥控信号的解码思路
·51系列单片机解密(数分钟搞定)
·芯片解密业务流程介绍
·单片机解密后提供什么文件?
·单片机解密后为何要提供厂家的专
·芯片是如何被解密的?
·SST系列MCU单片机/IC/芯片解密
·INTEL系列单片机/IC/芯片解密
·ISSI系列MCU单片机IC破解芯片解
·ZILOG系列MCU单片机IC破解芯片解
·MOTOROLA系列MCU单片机IC破解芯
·LG(HYUNDAI系列MCU单片机/IC破
·MCPLD/EPLD系列MCU单片机IC破解
·新茂系列MCU单片机IC破解芯片解
·PHILIPS系列MCU单片机IC破解芯片
·MXIC系列MCU单片机IC破解芯片解
·(ATMEL)51系列MCU单片机IC破解芯
·华邦芯片系列MCU单片机/IC/芯片
·(MICROCHIP)微芯(PIC)系列MCU单
·CYPRESS系列MCU单片机IC破解芯芯
·Sinowealih系列MCU单片机IC破解
·Tenx系列MCU单片机IC破解芯片解
·松翰(SONIX)系列MCU单片机IC破解
·义隆(EMC)系列MCU单片机IC破解
·合泰(HOLTEK)系列MCU单片机IC破
·麦肯(MDT)系列mcu单片机IC破解芯
·今科单片机解密服务
·单片机程序开发
热点技术文章文献
·单片机课程设计(直流风扇电机转
·单片机课程设计(报警器)
·单片机课程设计心得体会
·单片机课程设计(数字温度计设计)
·单片机课程设计(秒表的设计)
·步进电机单片机控制系统设计
·单片机控制GSM手机的技术及应用
·单片机课程设计(秒表的设计程序)
·步进电机运行系统控制设计
·基于单片机的真空冷冻干燥试验仪
·51单片机的寻址方式
·第八课:8051单片机I/O引脚工作原
·基于单片机的LED汉字显示屏设计
·基于单片机通用引脚的软件UART设
·基于看门狗芯片MAX708的数据保护
·单片机控制步进电机驱动器工作原
·HT46R22单片机在电磁炉功率控制
·基于nRF905的无线数据传输设备设
·dsPIC30F6010单片机的原理及应用
·c51单片机实用通信协议
·基于单片机控制的新型智能电梯语
·单片机硬件系统设计原则
·一个单片机串行数据采集/传输模
·数字音频射频收发芯片nRF24Z1原
·基于单片机的具有通讯口的智能温
·第十课:编码及译码器工作原理
·第二十八节:伪指令分析
·第七课:51单片机的引脚
·51单片机的中断系统
·利用单片机PWM信号进行PWM信号
今科推荐产品
·51系列单片机解密(数分钟搞定)
·今科单片机解密服务
·单片机程序开发
·小家电(厨卫电器)系列产品
·灯饰控制系列产品
·四键遥控器系列产品
·红外遥控器系列产品
相关技术文献资讯
·单片机系统硬件抗干扰常用方法实
·可编程模拟器件原理与开发
·dsPIC30F6010单片机的原理及应用
·利用单片机PWM信号进行PWM信号
·多功能型“银校一卡通”系统关键
·PIC 8位单片机的汇编语言
·USB接口类单片机特点及应用
·单片机的常用名词
·PIC单片机程序设计的基本格式
·SI/C负极在实际应用中的失效原因
·8位机嵌入式TCP通信速度的研究
·为什么要使用仿真器
·AVR单片机的主要特性
·PIC系列单片机简介
·单片机泛泛谈[论坛观点]
·AVR单片机的特点
·PIC单片机的特点及应用
·小容量单片机系统的C语言程序结
·单片机的用途
·EEPROM 8位单片机/18引脚Flash
·VoIP的基本传输过程简介
·51单片机管脚说明
·单片机的基本结构
·单片机概述
·单片机控制步进电机驱动器工作原
论坛最新讨论资讯
芯片解密常见问题
· 什么是单片机?
· 单片机要如何加密?
· 单片机芯片是如何被解密的?
· 单片机解密后提供什么文件?
· 芯片解密为何用专用格式文档?
· 芯片解密是怎样的业务流程?
首页 - 隐私政策 - 版权申明 - 网站地图 - 产品中心 - IC解密中心 - 企业文化 - 代理加盟 - 公司简介 - 人才招聘 - 常见问题 - 我要投稿 - 联系我们 - 返回顶部
[单片机信息网] .© 2006-2009 版权所有,严禁非法复制与建立镜像.运营商:[今科电子] 公司地址:中国.深圳/上海 E-Mail:renbangent#126.com sales#techmcu.com(换#为@)
深圳公司 电话热线:+86 0755-82964200 82964201 82964700 传真:0755-82964432 支持手机:13684994966 业务QQ: 501995683 联系人:王小姐 张小姐(工程师) 罗先生(高工)
上海公司 电话热线:+86 021-63062380 15001885509   传真:+86 021-63062380-6   技术支持:15001885509 业务QQ:xxxxxxxx   联系人:郑小姐(业务) 陆工(工程师)
Optimized for 1024x768 to Firefox,Opera and MS-IE6 or higher,Template designed by: Berlin Lee.Web Support[FuAn Network] ICP Record No.:07053756 Webmaster