目前单片机有多种C编译器,不同编译器之间有很多区别。总结后,主要有以下几点,需要弄清楚:
1.寄存器的定义
不少编译器已经自带了寄存器的定义文件,比如AT89S52, 使用KEIL C V2.0 环境, 程序可以直接调用寄存器定义文件。 例如: #i nclude <reg52.h> (顺便讲一下,#i nclude <xxx.h> 与 #i nclude "yyy.h" 的区别,一般前者是指调用编译器系统的文件,而后者是用户自己写的文件), 当然如果没有寄存器定义文件,我们也可以自己去写,这时候就要了解如何去定义寄存器。特别需要注意的是位的定义,有些可以单片机可以直接对寄存器位操作,把位定义出,在写程序时很方便(在定义变量时,如果可以定义位变量,也是很有用的)。
2.编译器系统自带的库函数
了解编译器有哪些库函数,如何使用他们。
3.嵌入汇编
机器毕竟没有人脑聪明,C编译的效果,有时候不是很理想,这时候我们可以嵌入汇编。
4.系统程序的基本配置
有些编译器会自带启动文件,具体内容是设置堆栈,清RAM等,不同编译器不一样,有些编译没有,就需要自己在程序里面加上,另外与之相关的是,开关中断与WDT的写法。
5.中断
有中断我们的程序内容才会丰富多彩,需要知道如何定义一个中断函数和如何实现中断的嵌套。值得注意的是,有些编译器他的中断向量表也是需要我们自己去做的,还需要了解如何去定义一个中断向量表。
6.最后需要注意是的变量与常量,程序的段的定义。这里重要的是变量的定义,在某些情况下,定义在RAM中的变量不是开机后都需要清零的,就需要分别定义在不同的变量段中。