1.定义的变量不要太多。低128位为用户定义变量的存放区域(默认时),也可以把变量放在高128位,但容易出错,尽量少放,最好不放。通过*.M51可以查看内存变量的存放,最好不要超过110个字节,否则程序无法运行或出错。
2.如一个变量多处使用可定义为全局变量。例如循环变量i、j,尽量减少参数传递。
3.静态变量最好放在程序存储区,用code定义。
4.变量应定义为无符号数,像标志位等仅占一位的变量应定义为bit。
5.子程序在main()主程序之后的应事先声明,放在前面的不用声明。
6.变量、子程序定义但没使用,系统给出警告。
7.虽然局部变量和全局变量不同名,但运行时可能被全局变量改变。
8.程序在编译后,有可能产生非常大的文件。比如原来5k,编译后变成10k,这是C汇编时程序空间分配太随意造成的。可首先屏蔽一部分程序编译,然后再去屏蔽再编译,可恢复,或一部分一部分复制到另一个文件中编译。
9.如产生脉冲信号用到定时器,要去掉脉冲信号时,应先关定时器,再按要求把电平置为高电平或低电平。
10.可使用软件实现“看门狗”功能。比如:一个程序运行一个循环需要50ms,则定时器可定位100ms,当超过100ms时,程序将复位,在程序循环最下面都重装定时器或重置定时器参数。
11.为了提高所求值的精度,可多次测量,然后排序,去掉最大值和最小值,求平均值,或直接求平均值。
12.可使用一个定时器进行多个定时。一般来说,两个定时器对大一点的程序就不够用了,假如几个定时时间分别为10ms、200us、50ms,则定时值可定位200us,另设两个变量即可。在需要多个定时时,找到他们的最小公约数定时即可。
13.我们往单片机中写程序时,写的是*.hex,不要被它的大小所迷惑,对于8k的单片机,小于20k的程序都可写进去。
学习51单片机硬件和编程基础缺一不可。
比如说基本电子元器件电阻电容、电感、三极管、按键开关、二极管等等。
再比如说模拟电路、数字电路、AD Layou软件、C语言等等知识。
很多人看到这里,还没开始就已经结束了。
要学的东西也太多了吧吧吧吧!!!还不如去做纯软件工资高。
额。。工资这个问题先不讨论,可以看我最近几篇文章的讲解。
其实做单片机也好,嵌入式也罢。
对于初学者最忌讳的就是:我要吃透某款单片机,或者吃透C语言,甚至吃透模电数电。
因为想要吃透,需要一定的项目经验来沉淀,就拿C语言指针来说,虽然你会用了,但是鬼知道它用在什么场合。
直到你几年后进了芯片原厂写SDK库,你才发现原来指针简直就是写回调函数,封装代码的神器。
Ok,废话不多说,接下来我说下对于一个初学者,做单片机开发之前必须要掌握哪些知识。
从2个方面来解答:
1.硬件
2.软件
一、硬件
1.熟悉常用的元器件,如果你不知道哪些,找一个51开发板,把原理图上的元器件全部熟悉一遍,知道他们的工作原理和使用场景。
2.熟悉欧姆定律,基础电路,直到你知道开发板上所有电路的原理。
3 熟悉51单片机所有外设(IO、定时器、中断、串口等等),这个跟C语言同步学,一边学一遍实操效果才好!
二、软件
软件主要是C语言编程和Layout软件的使用。
1.C语言
C语言学完结构体和指针,指针和结构体不懂没关系,当你的代码量上去以后自然就懂了,前面千万别死磕,浪费时间。
2.Layout
个人推荐Protel99 SE或者AD就可以了,这两个比较简单,前期会用这个软件看原理图即可。