单片机设计与KeilC编程总结
- 格式:doc
- 大小:37.00 KB
- 文档页数:4
KeilC编程总结KeilC编程总结KeilC编程总结202*年11月05日星期一下午03:071基本原则质量是关键。
没有人会对很差的工作感到满足。
当完成高质量的工作时,你会为此而感到骄傲。
不管你是否知道,你都会因为你的高质量工作而得到信誉。
因此,要想为自己所做的事感到骄傲,就需要建立个人标准,并为达到这一标准而努力奋斗。
在达到这些标准时,再提高标准并继续努力。
挑战自己去完成更优良的工作,你将会为自己的成就而感到惊讶。
1.1了解单片机的能力【规则1】设计满足要求的最精简的系统。
正确估计单片机的能力,知道单片机能做什么,最大程度的挖掘单片机的潜力对一个单片机系统设计者来说是至关重要的。
我们应该有这样一个认识,即单片机的处理能力是非常强大的。
早期的PC机,其CPU(8086)处理能力和8051相当,却能处理相当复杂的任务。
单片机的能力的关键就在软件设计者编写的软件上。
只有充分地了解到单片机的能力,才不会做出“冗余”的系统设计。
而采用许多的外围芯片来实现单片机能实现的功能。
这样做,即增加了系统成本,也可能会降低了系统的可靠性。
1.2系统可靠性至关重要【规则2】使用看门狗。
看门狗电路通常是一块在有规律的时间间隔中进行更新的硬件。
更新一般由单片机来完成,如果在一定间隔内没能更新看门狗,那看门狗将产生复位信号,重新复位单片机。
更新看门狗的具体形式多是给看门狗芯片相关引脚提供一个电平上升沿或读写它的某个寄存器。
使用看门狗电路将在单片机发生故障进行死机状态时,重新复位单片机。
当前有多种看门狗的芯片,如MAXIM公司的MAX802,MAX813等。
而且,有好多种单片机中本身就集成有看门狗。
一个外部的看门狗是最好的,因为它不依赖于单片机。
如果可能的话,看门狗更新程序不应该放在中断或是子程序中,原则上应该放在主程序中。
我曾经见过一个工程师,他所调试的程序在运行时偶而会引起看门狗的复位动作,于是他干脆在每10ms就中断一次的时钟中断程序中清看门狗。
用Keil C软件循序渐进编写单片机C程序(二)浙江华川专修学院邵勇炎2、新建“led10”工程(对单片机P1口随意加入十进制数10,编译程序、查错并在仿真软件Proteus或实验板中观察LED点亮状况)1)创建文件夹、创建工程文件夹、选择CPU、建立C文件、将C文件和工程连接、创建hex文件同前。
2)编写C 源程序3)方法:将空C程序复制到led10.C,增加p1=10C源程序如下:main ( ){p1=10 //赋值语句,将十进制数10赋予p1口}4)编译编译窗口提示:Build target 'Target 1'compiling 空C程序.c...空C程序.C(4): error C202: 'p1': undefined identifier(p1口未定义)空C程序.C(5): error C141: syntax error near '}' (语法错误)Target not created (项目未创建)5)查错编译后发现第四、五行出错,原因是P口的英文字母P都应该大写(1)修改程序1:(小写p改成大写的P)C源程序如下:main ( ){P1=10 //P口的英文字母P都应该大写}编译窗口提示:Build target 'Target 1'compiling 空C程序.c...空C程序.C(4): error C202: 'P1': undefined identifier空C程序.C(5): error C141: syntax error near '}'Target not created编译后发现第三行仍出错,原因是P1口未定义,用sfr定义单片机P1口(2)修改程序2:(用sfr关键字定义单片机P1口)C源程序如下:Sfr P1=0X90 //P口先定义后使用,sfr P1=0X90是指定义UPU P1口的8个脚,//sfr是定义特殊功能寄存器,是固定的、0X90不可改变的十六进//地址,单片机所有口都一样。
用keilc编译单片机C程序的方法
1、打开keilc,新建一个工程
2、点击后,弹出对话框,找到C程序所在文件夹,输入工程名,然后保存。
3、点保存后,又弹出一个对框,选择单片机型号,选AT89S52,点OK。
再点是
4、加载C程序
在新建的工程的左边窗口,点鼠标右键,见下图
点加源程序项,即蓝条上。
又弹出下面的对话框,找到C程序双击,程序就被加载到工程中了,左边多了C程序。
5、打开C程序,双击左边工程中的C程序,右边窗口就出现了C程序了。
6、设置编译选项,在左边工程上点鼠标右键,点蓝条项
7、在弹出的对话框后,选Output标签,在刨建HEX文件上打勾,HEX代码文件名可以改,也可以不用改,只要在这个文件夹里能找到这个HEX文件就行,点OK。
HEX代码文件名
或者点击下图中所示的项目选顶按钮,也能弹出上面的选项对话框。
点这个按钮
8、编译C程序,最后一步,点编译按钮,就完成了,下面的窗口会提示编译成功的,如果有错误,就会提法有错误几条,就要找程序中的错误了。
单片机实训小结与体会单片机实验收获与体会单片机实训小结与体会单片机实验收获与体会1通过今次单片机实训,使我对单片机的认识有了更深刻的理解。
系统以51单片机为核心部件,利用汇编软件编程,通过键盘控制和数码管显示实现了基本时钟显示功能、时间调节功能,能实现本设计题目的基本要求和发挥部分。
由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。
例如:不能实现只用两个按键来控制时钟时间,还不能实现闹钟等扩展功能。
踉踉跄跄地忙碌了两周,我的时钟程序终于编译成功。
当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。
我相信其中的酸甜苦辣最终都会化为甜美的甘泉。
但在这次实训中同时使我对汇编语言有了更深的认识。
当我第一次接触汇编语言就感觉很难,特别是今次实训要用到汇编语言,尽管困难重重,可我们还是克服了。
这次的实训使培养了我们严肃认真的做事作风,增强了我们之间的团队合作能力,使我们认识到了团队合作精神的重要性。
这次实训的经历也会使我终身受益,我感受到这次实训是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。
希望这次的经历能让我在以后学习中激励我继续进步。
单片机实训小结与体会单片机实验收获与体会2时间过得真快,不经意间,一个学期就到了尾声,进入到如火如荼的期末考试阶段。
在学习单片机这门课程之前,就早早的听各种任课老师和学长学姐们说过这门课程的重要性和学好这门课程的关键~~多做单片机实验。
这个学期,我们除了在课堂上学习理论知识,还在实验室做了7次实验。
将所学知识运用到实践中,在实践中发现问题,强化理论知识。
现在,单片机课程已经结束,即将开始考试了,需要来好好的反思和回顾总结下了。
第一次是借点亮LED灯来熟悉keil软件的使用和试验箱上器材。
第一次实验体现了一个人对新事物的接受能力和敏感度。
编写单片机C语言代码的技巧和经验编写单片机C语言代码的技巧和经验C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
那么编写单片机C语言代码的技巧和经验都有哪些呢。
以下仅供参考!具体如下:1、如果可以的话少用库函数,便于不同的mcu和编译器间的移植2、选择合适的算法和数据结构应该熟悉算法语言,知道各种算法的优缺点,具体资料请参见相应的参考资料,有很多计算机书籍上都有介绍。
将比较慢的顺序查找法用较快的二分查找或乱序查找法代替,插入排序或冒泡排序法用快速排序、合并排序或根排序代替,都可以大大提高程序执行的效率。
选择一种合适的数据结构也很重要,比如你在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。
数组与指针语句具有十分密码的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。
对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。
但是在Keil中则相反,使用数组比使用的指针生成的代码更短。
3、使用尽量小的数据类型能够使用字符型(char)定义的变量,就不要使用整型(int)变量来定义;能够使用整型变量定义的变量就不要用长整型(long int),能不使用浮点型(float)变量就不要使用浮点型变量。
当然,在定义变量后不要超过变量的作用范围,如果超过变量的范围赋值,C编译器并不报错,但程序运行结果却错了,而且这样的错误很难发现。
在ICCAVR中,可以在Options中设定使用printf参数,尽量使用基本型参数(%c、%d、%x、%X、%u和%s格式说明符),少用长整型参数(%ld、%lu、%lx和%lX格式说明符),至于浮点型的参数(%f)则尽量不要使用,其它C编译器也一样。
在其它条件不变的情况下,使用%f 参数,会使生成的代码的数量增加很多,执行速度降低。
4、使用自加、自减指令通常使用自加、自减指令和复合赋值表达式(如a-=1及a+=1等)都能够生成高质量的程序代码,编译器通常都能够生成inc和dec之类的指令,而使用a=a+1或a=a-1之类的指令,有很多C编译器都会生成二到三个字节的指令。
单片机设计实践总结
一、引言
单片机,也被称为微控制器,是一种集成电路芯片,它集成了中央处理器、随机存储器、只读存储器、输入/输出接口等必要组件。
单片机广泛应用于各种嵌入式系统,如智能家居设备、工业自动化设备、医疗设备等。
通过本次实践,我对单片机设计有了更深入的理解和体验。
二、实践内容
在这次实践中,我主要完成了以下几个任务:
1. 单片机选型:根据项目需求,选择了合适的单片机型号。
例如,如果需要处理大量数据,可以选择具有更快处理速度的单片机;如果需要低功耗,可以选择低功耗单片机。
2. 单片机编程:使用C语言或汇编语言对单片机进行编程,实现所需功能。
在这个过程中,我学习了如何使用Keil软件进行编程和调试。
3. 单片机外围电路设计:根据项目需求,设计单片机外围电路,如电源电路、输入输出接口电路等。
4. 单片机测试:对设计好的单片机进行测试,确保其功能正常。
三、实践收获
通过这次实践,我收获颇丰:
1. 深入理解了单片机的原理和工作方式,掌握了单片机编程技巧。
2. 学会了如何根据项目需求选择合适的单片机型号。
3. 提高了自己的动手能力和解决问题的能力。
4. 加深了对嵌入式系统开发流程的理解。
四、实践总结
总的来说,这次单片机设计实践是一次非常宝贵的学习经历。
通过实践,我不仅掌握了单片机的相关知识,还提高了自己的实践能力。
在未来的学习和工作中,我将继续深入学习嵌入式系统开发的相关知识,不断提高自己的技能水平。
同时,我也希望能够有更多的机会参与到类似的实践中,以便更好地将理论知识应用到实际工作中。
《微机实验》报告实验名称 KeilC的使用与汇编语言上机操作指导教师专业班级姓名学号序号联系方式一、任务要求实验目的:熟悉KeilC环境,通过在KeilC环境下调试字节拆分、合并程序、数据块清零程序、加法程序,掌握汇编语言程序的调试方法,加深对BCD码、ASCII码、堆栈、寄存器、数据指针、汇编语言指令、机器码等基本概念的理解,为后续程序编制和调试打下基础。
实验内容:1.掌握KeilC环境的使用1)字节拆分、合并:调试e421.asm程序,观察相关寄存器和单元的内容。
2)数据块填充:调试fill.asm程序,观察相关寄存器和单元的内容。
2. 编写两个十六位数的加法程序。
有两个十六位无符号数,分别存放在从20H和30H开始的数据区中,低八位先存,高八位在后,和存于R3(高八位)和R4(低八位),进位位存于R2。
二、设计思路1.掌握KeilC环境的使用1)字节拆分、合并:字节拆分要将BCD码转换为2字节ASCII,需将BCD码拆为两部分,分别加30H。
具体先用XCHD语句将BCD码与00H交换低位,“高位”需先用SWAP语句将高低位交换,再加30H;“低位”直接加30H。
字节合并同理,需减30H再合并。
2)数据块填充:指针在7000H,利于循环语句递增填充,A寄存器中存放要填充的数据,DPTR数据指针指向片外,R0计数。
用CJNE构成循环,循环中A、DPTR、R0都加12.编写两个十六位数的加法程序两数低位分别存于20H、30H,高位存于21H、31H。
用ADD语句将低位相加,存于R4;用ADDC语句将高位和进位Cy相加,存于R3;存进位需先将A寄存器清零,再用ADDC语句将A、00H和Cy相加,存于R2。
三、资源分配本程序数据均存于片内RAM中,有两个十六位无符号数,低位分别存于20H、30H中,高位分别存于21H、31H中。
高八位和存于R3中,低八位和存于R4中,进位位存于R2中。
四、流程图五、源代码ORG 0000HMAIN: MOV R0,#20H ;设置第一个数地址指针 MOV R1,#30H ;设置第二个数地址指针MOV A,@R0 ;取低位ADD A,@R1 ;两数低位相加MOV R4,A ;存“和”低位INC R0INC R1MOV A,@R0 ;取高位ADDC A,@R1 ;两数高位相加MOV R3,A ;存“和”高位CLR AADDC A,#0MOV R2,A ;存进位HERE: SJMP HERE ;踏步END ;结束Program Size: data=8.0 xdata=0 code=18精简后ORG 0000HMAIN:MOV A,20H ; 取低位ADD A,30H ; 两数低位相加MOV R4,A ; 存“和”低位MOV A,21H ; 取高位ADDC A,31H ; 两数高位相加MOV R3,A ;´存“和”高位CLR AADDC A,#0MOV R2,A ; 存进位HERE: SJMP HERE ; 踏步ENDProgram Size: data=8.0 xdata=0 code=16六、程序测试方法与结果、软件性能分析1.1字节拆分、合并调试拆分时,如图31H、32H中内容为34和39,正常合并时,如图33H中内容又变为了491.2数据块填充调试执行完改程序后片外7000H到70FFH中的数据如下图3.两个十六位数的加法程序测试方法:修改片上RAM中20H、21H、30H、31H数据,查看R2、R3、R4数据。
《单片机》课程学习总结《单片机》这门课程我已经学了一个学期了,在这一个学期的学习过程中,我一开始不怎么懂得编程,但慢慢的我现在已经不仅会读程序还会写程序了。
真为自己一个学期来努力学到的单片机知识只是而感到高兴。
怎么学单片机?也常看到有人说学了好几个月可就是没有什么进展。
当然,受限于每个人受到的教育水平不同和个人理解能力的差异,学习起来会有快慢之分,但我感觉最重的就是学习方法。
一个好的学习方法,能让你事半功倍,这里说说我学习单片机的经历和方法。
我觉得学习单片机首先要懂得C语言,因为单片机大多说都是靠程序来实现的,如果看不懂程序或则不懂的编程是很难学会单片机的。
学习单片机首先要明白一个程序是怎么走的,要完全懂得程序每一个步骤的意思。
其次要懂得每一条指令的意思,不能盲目地去靠背指令,这是记得不牢靠的,最主要的还是靠了解。
学习单片机最主要的对89C51芯片内部结构有全方面的,只要了解了89C51才能知道单片机实现什么样的功能和作用,才能对单片机有更深一步的了解。
通过一个学期《单片机》这门课程的学习,我也从中有了不少心得和体会想和大家分享一下。
万事开头难、要勇敢迈出第一步。
开始的时候,不要老是给自己找借口,不要说单片机的程序全是英文,自己看不懂。
遇到困难要一件件攻克,不懂指令就要勤奋看书,不懂程序就先学它,这方面网上教程很多,随便找找看一下,做几次就懂了。
然后可以参考别的人程序,抄过来也无所谓,写一个最简单的,让它运行起来,先培养一下自己的感觉,知道写程序是怎么一回事,无论写大程序还是小程序,要做的工序不会差多少。
然后建个程序,加入项目中,再写代码、编译、运行。
必须熟悉这一套工序。
个人认为,一块学习板还是必要的,写好程序在上面运行一下看结果,学习效果会好很多,仿真器就看个人需要了。
单片机是注重理论和实践的,光看书不动手,是学不会的。
知识点用到才学,不用的暂时丢一边。
厚厚的一本书,看着人头都晕了,学了后面的,前面的估计也快忘光了,所以,最好结合实际程序,用到的时候才去看,不必说非要把书从第一页看起,看完它才来写程序。
用keilc编译单片机C程序的方法
1、打开keilc,新建一个工程
2、点击后,弹出对话框,找到C程序所在文件夹,输入工程名,然后保存。
3、点保存后,又弹出一个对框,选择单片机型号,选AT89S52,点OK。
再点是
4、加载C程序
在新建的工程的左边窗口,点鼠标右键,见下图
点加源程序项,即蓝条上。
又弹出下面的对话框,找到C程序双击,程序就被加载到工程中了,左边多了C程序。
5、打开C程序,双击左边工程中的C程序,右边窗口就出现了C程序了。
6、设置编译选项,在左边工程上点鼠标右键,点蓝条项
7、在弹出的对话框后,选Output标签,在刨建HEX文件上打勾,HEX代码文件名可以改,也可以不用改,只要在这个文件夹里能找到这个HEX文件就行,点OK。
HEX代码文件名
或者点击下图中所示的项目选顶按钮,也能弹出上面的选项对话框。
点这个按钮
8、编译C程序,最后一步,点编译按钮,就完成了,下面的窗口会提示编译成功的,如果有错误,就会提法有错误几条,就要找程序中的错误了。
入门有针对性的解决一些简单的实际问题,边理论边实践学一样会一样基本实验:LED流水灯,数码管显示,键盘控制,音乐播放,继电器控制I2C通信实验,串口通信实验,红外线遥控信号解码实验等单片机的定义分类和内部组成1单片机就是中央处理器CPU,随机存储器RAM。
只读存储器ROM。
定时、计数器和各种输入输出接口I/o接口电路等部件集成在一块电路芯片上的微型计算机。
2,1分类按制造工艺分:HMOS和CHMOS CHMOS包括80c51等中间加了C功耗要小适合便携式手提式和野外作业。
2分类按不同容量的存储器配置分:51子系列和52子系列51表示单片机最后一位数字为1作为标志。
片内带有4KbROM或EPROM(Erasable Programmable ROM,可擦除可编程ROM,128BRAM,两个16位定时器/计数器和5个中段器52系列是增强型各项指标都高。
AT89S51是AT89C51的升级版支持ISP在线更新程序ISP(Internet Service Provider 内部集成看门狗计时器等。
3.1串行接口就是接口数据传送3.2中断控制系统接收中断请求如定时时间到,需要鸣笛报警类似stop to do 停下来去执行ROM中特定的每段程序,执行完后再继续执行先前中断的程序时钟电路控制节拍工作。
一个典型的单片机应用系统包括输入电路,单片机,输出电路把他想象成电脑。
单片机的应用:p5十六进制A10B11C12D13E14F15记A10和D13点得13点F15不是F16十六进制加H逻辑数据的运算逻辑与。
两个输入一个输出中间加一个恒定5v电压有0为0,全1出1逻辑或有1为1,全0出0;字长通常与计算机内部的寄存器和运算器数据总线的宽度一致实例1功能感受protues仿真单片机播放《渴望》主题曲运用protues打开仿真原理图。
对单片机进行处理编辑edit component,选取目标文件hexClock frequency 时钟频率Ok原理图编辑窗口没有滚动条,可通过预览窗口该表原理图的可视范围。
单片机设计与KeilC编程总结时间:2007-10-17 来源: 作者: 点击:2527 字体大小:【大中小】1基本原则质量是关键。
没有人会对很差的工作感到满足。
当完成高质量的工作时,你会为此而感到骄傲。
不管你是否知道,你都会因为你的高质量工作而得到信誉。
因此,要想为自己所做的事感到骄傲,就需要建立个人标准,并为达到这一标准而努力奋斗。
在达到这些标准时,再提高标准并继续努力。
挑战自己去完成更优良的工作,你将会为自己的成就而感到惊讶。
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; //有/可能得到编译器的警告。
const char *ptr,则表示该指针所指向的内容不会被改变,如果在程序中被发生对其赋值的操作,编译时将出错误提示。
如:const char *ptr = “hello”;*ptr = 'H';//错误,所指内容不可改变也可将const 放在星号后面来声明指针本身不可改变。
如:char* const ptr;ptr++; //错误,指针本身不可改变也可同时禁止改变指针和它所引用的内容,其形式如下:const char* const ptr;【规则11】使用staticstatic 是一个能够减少命名冲突的有用工具。
将只在一个模块文件中的变量和函数使用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 语言的精髓,这两本书是必读之作。