核心提示:本文着重ICCAVR与KEIL的异同,其实只要你是熟悉KEIL的朋友,很容易转到ICCAVR的。 |
学习一种新东西,我个人认为应该是从两种不同的点和相同点来区别学习,这样可以很快的或者说很容易掌握一种新技术。Keil与ICCAR的区别见下:
1.头文件,也就是包含的库文件或者自定义的H文件,对于KEIL中定义的寄存器的H文件,如:REG51.H等和ICCAVR中定义的寄存器的H文件是不同的,如:IO8515V.H等,只需要替换下即可。
2.中断处理函数,大家都知道在KEIL中的中断去处理函数的关键字:interrupt以它来说明该函数为一个中断处理函数,而在ICCAVR中定义中断函数是采用#pragma interrupt_handler预处理命令在子程序前声明,具体见下,以TIMER中断为例:
Keil C的中断定义:void TIMER0_Interrupt(void) interrupt 1
ICCAVR中断定义: #pragma interrupt_handler timer:5
void timer(void)
{
你需要做的函数
}
3.对Keil的bit和sbit数据类型的处理,在ICCAVR中是不支持bit和sbit数据类型的。但是我们可以通过宏定义来解决这个ICCAVR位函数的操作的。具体见后面的实例。
4.初始化中断和TIMER时,相应的寄存器需要改成ICCAVR相应支持的寄存器即可。
5.对于标准的ANSI的C语言,一般是不需要改变的。

图一:Keil的TIMER中断处理函数

图二:ICCAVR中断处理函数


RSS订阅






