- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机系统设计与c51编程实践.doc
单片机系统设计与c51编程实践|第1
内容显示中【规则3】确定系统的复位信号可*。
这是一个很容易忽略的问题。当你在设计单片机系统时,你脑中有这个概念吗?什么样的复位信号才是可*的吗?你用示波器查看过你设计的产品的复位信号吗?不稳定的复位信号可能会产生什么样的后果?你有没有发现过你所设计的单片机系统,每次重新上电启动后,数据变得乱七八糟,并且每一次现象并不相同,找不出规律,或者有时候干脆不运行,或者有时候进入一种死机状态,有时候又一点事都没有正常运行?在这种情况下,你应该查一下你的系统的复位信号。一般在单片机的数据手册(Datasheet)中都会提到该单片机需要的复位信号的要求。一般复位信号的宽度应为。复位电平的宽度和幅度都应满足芯片的要求,并且要求保持稳定。还有特别重要的一点就是复位电平应与电源上电在同一时刻发生,即芯片一上电,复位信号就已产生。不然,由于没有经过复位,单片机中的寄存器的值为随机值,上电时就会按PC寄存器中的随机内容开始运行程序,这样很容易进行误操作或进入死机状态。
【规则4】确定系统的初始化有效。
系统程序开始应延时一段时间。这是很多单片机程序设计中的常用方法,为什么呢?因为系统中的芯片以及器件从上电开始到正常工作的状态往往有一段时间,程序开始时延时一段时间,是让系统中所有器件到达正常工作状态。究竟延时多少才算合适?这取决于系统的各芯片中到达正常工作状态的时间,通常以最慢的为准。一般来说,延时20-100毫秒已经足够。对于系统中使用嵌入式MODEM 等“慢热”型的器件来说,则应更长。当然,这都需要在系统实际运行中进行调整。
【规则5】上电时对系统进行检测。
上电时对系统中进行检测是单片机程序中的一个良好设计。在硬件设计时也应该细细考虑将各个使用到的芯片、接口设计成容易使用软件进行测试的模式。很多有经验的单片机设计者都会在系统上电时(特别是第一次上电时)进行全面的检测,或者更进一步,将系统的运行状态中分为测试模式和正常运行模式,通过加入测试模式对系统进行详细的检测,使得系统的批量检测更为方便容易。另外要注意的是,一个简单明了的故障显示界面也是颇要费得心思的。比如:系统的外部RAM(数据存储器)是单片机系统中常用的器件。外部RAM如果存在问题,程序通常都会成为一匹脱缰的野马。因此,程序在启动时(至少在第一次上电启动时)一定要对外部RAM 进行检测。检测内容包括:1)检测RAM 中的单元。这主要通过写入和读出的数据保持一致。2)检测单片机与RAM之间的地址数据总线。总线即没有互相短路,也没有连接到“地”上。另外,很多芯片,都提供了测试的方法。如串行通信芯片UART,都带环路测试的功能。
【规则6】按EMC 测试要求设计硬件。
EMC 测试要求已经成为产品的必需。有很多的文章关于这方面的。
1.3 软件编程和调试
【规则7】尽可能使用Small 模式编译
对比起Large模式和pact 模式,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
修饰符表示告诉编译器此函数将不会改变被修饰的变量的指向的任何值(除了强制类型转换)
文档评论(0)