编 程 与移植常见问题: 51 单片机的程 序移植到 av r 单片机应该怎样移植 注意什么问题
答:如果是C 语言的话,有限关键字会有改变,头文件要重新写,函数的一些写法会有所改变,AVR 的编译器很多,每种编译器都有自己的独特写法,要先了解编译器后在做移植,成功率会更高
另外,先要选择好编译器,C 编译器如GCC,ICC,CVAVR,IAR 等,看你选哪种编译器,汇编编译器如AVR Studio
头文件不需要自己写,每种编译器有自带的头文件,你只要#include 就可以了
不过要include 对
51 程序(针对 keil 编译器)和 AVR 程序(上述的一些编译器,如GCC)最主要的不同: 1,因为 51 的io 口为准双向 io,所以对 io 口的操作不用设置 io 的方向,而AVR 是双向 io,每次对 io 操作,如输出输入都要对 io 的方向进行设置
2,关键字不同,code 是keil c51 的非标准写法,如果AVR 要使用常量,可以用 const 关键字取代
还有data 关键字取消,也就是说什么 data, idata,xdata,pdata 都不可以使用
相对来说 avr 的编译器比较接近标准 c
3,51 可以位操作,但是avr 基本不使用位操作,因为 avr 可以位操作的区域比较少,所以 sbit,bit 什么的只有在51 出现,avr 不可以使用,除非你自己定义一个结构体
4,中断的写法,这个每个编译器基本都不一样,呵呵,比如iar 会使用#pragma 关键字,gcc 有固定的函数入口 ISR(中断向量)
avr比 51强大很多,比如移植spi的程序,你可以自己写个 avr的spi程序来取代,而不用像 51一样 io模拟
以上是我暂时能想到的比较大的区别,移植起来首先要注意的地方,如果还有疑问,你可以追问的