1.在使用M8或M16等I/O端口较少的单片机时,如果你采用同步串口SPI进行程序写入,要千万注意,不要随意更改“RESET”引脚的属性而把它作为一般的I/O端口使用,这样将会导致单片机SPI无法使用,进而无法进行程序写入。而且单片机只能使用高压编程器才能将“RESET”口属性更改回来。我就曾因为端口不够,而将此端口的属性更改,结果将3片M16锁死,无法正常使用。
2.对中文的数据手册不要太相信,翻译的过程中难免会有错误,强烈建议使用英文手册,可以让你少走很多弯路。有一次,就因为一个寄存器的说明错误,就浪费了我两天的时间,从那以后我再也不使用中文手册。
3.在驱动一些比如LED灯、数码管等外部器件时,最好采用向单片机灌电流的硬件回路,而不要采用单片机向外输出电流的硬件回路。单片机本身输出的电流就很小,而且输出电流,会增加单片机本身的功耗,增加外围器件;另一方面单片机可以吸收较大的电流,并且不会增加单片机本身的功耗。
4.在使用汇编语言编程时,一定要注意程序在程序存储器中起始位置的设定,否则将会出现一些奇怪的问题(有时候编译可以通过)。所以,建议在了解了AVR的内部机构以后,最好使用其它的高级语言进行编程,可以忽略这个问题(高级语言的编译器会自动将程序进行浮动定位)。
5.M16在使用C口时,要注意将JTAG接口使能关闭。
6.使用C语言要对端口进行位操作时,可借助数组来实现。
以上是对我在使用AVR单片机过程中遇到的一些问题的总结,以后还会不断进行添加,以便共享。
7.C语言编程,在函数中变量说明和端口初始化要注意顺序,应先说明变量,然后进行端口初始化,否则编译会出错。
8.就最近的编程过程来看,缺少分号和大括号是最常见的错误,也是引起编译出错的主要问题。
用户950123 2010-3-12 15:43