单片机编程软件为常用软件之一,单片机开发人员均用过多款单片机编程软件。那么,用单片机编程软件进行开发时,大家是否有独特新得呢?本文对单片机编程软件的讲解基于Keil C51,主要为大家介绍使用这款单片机编程软件开发单片机时积攒的一些开发心得体悟,以供大家参考。如果你对本文即将要讲解的内容感兴趣,或者你正在学习单片机编程软件,都请继续往下阅读哦。
用Keil写C51程序是最好不过的了,用伟福也可以写,但伟福的编辑能力就相差太远了。个人喜欢用Keil写代码,然后用伟福硬件仿真(只有WAVE的仿真头)。不过Keil是好用,但写代码关键还是C51水平,也就是编程能力,写C程序就离不开模块化这个词了。C51和A51,要扬长避短,发挥C的长处,就得将C模块化好。刚刚开始的时候就只是熟悉C51的语法规则了,熟悉了这个然后再追求程序的可读性和可移植性。
下面是使用Keil C51的一点心得:
1、程序可读性的提高
要提高程序的可读性,就得养成一良好的编程习惯了,例如变量用小写,常量用大写,函数第一个字母用大写等等。这样成习惯以后,自己看代码就会一目了然。另外还要灵活的在KEIL中使用TAB键对对齐文本,而不要敲空格代替(优势,试了就知道了)。
2、程序的可移植性的提高
程序的可移值性是C51的优势所在,要做到移植方便,就得熟悉C51的编译过程有一定的了解,合理组织文件。可以将一个功能模块(如显示驱动,端口读写)放在一个C文件中,作为一个函数调用,然后在主程序中申明该函数,就可以随便调用了。
移值的时候也只要把当前的C文件加入到新的项目中,同样的方法调用它就可以。
另外模块化程序要善用C里面的“#IFDEF”、“#ENDIF”、“#DEFINE”等专为模块设计提供的功能。例如设计一个外面带的晶振的驱动模块,在不同的晶振频率下,该项模块的设置位可能不同。如果就直接在程序中写设置位,晶振改变,这些设置位也要逐一修改,这个程序也就不通用了,也就是可移值性不好。要解决这个问题怎么办 ,“#IFDEF”、“#ENDIF”可以帮你解决问题。这两个命令的功能就不具体说了,书上面讲得很清楚。知道这些功能你就知道该怎样使用它们进行模块化设计了。
3、Keil C51的debug技巧
A51的程序执行时间可能通过指令周期计算出来,而C51的却无从下手,很多程序员为了得到精确的执行时间而研读反汇编代码,何等的悲哀。巧妙的使用Keil中的debug功能,问题就迎刃而解了。
下面举例说明:
该程序为一个延时程序,在12M的晶振下,调用一次的时间为16uS ,执行一次循环的时间为9uS(延时范围(25us~589.831ms))。这样来,假设有语句Delay(N);那么该语句的精确延时的计算公式就是(9*N+16)uS了.这个公式可以理解吧!
如何得到程序的调用时间和执行一次循环的时间了。接着看下面:
在主程序MAIN()函数下添加上面两条语句,当前的SEC栏为执行到DELAY(1);语句所花的时间。T(0-)
上面的SEC栏为执行完DELAY(1)所花的时间,这样就可以得到DEALY(1)这条语句的执行时间为595-570=25uS.
上面的SEC栏为执行完DELAY(2)所花的时间,这样就可以得到DEALY(2)这条语句的执行时间为629-595=34uS.
结果:T[DELAY(2)]-T[DELAY(1)]不就是执行一次循环的时间嘛,而T[DELAY(1)]减去执行一次循环的时间就是调用一次要花的时间了。精确到1uS!
以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对使用这款单片机编程软件开发单片机时积攒的一些开发心得体悟有所了解,并可应用到大家的实际开发当中去。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!