ICC AVR 过渡到 AVR STUDIO时要注意的几个:
1.头文件更改
ICCAVR使用的“#include <iom16v.h>”更改为“#include <avr/io.h>”
在ICC中使用不同MCU类型的头文件是不同的,但是在AVR studio中avr/io.h都包含了不同MCU的头文件
2.AVR studio中延时函数可直接使用“#include <util/delay.h>”头文件中的延时函数:
void _delay_us (double __us);
void _delay_ms(double __ms);
两个函数的参数均为double型的,通常使用整数延时即可。
(函数最大延时时间是有限制的,参考“util/delay.h”)
3.中断函数写法不同
ICC 中断使用:
在ICC 中断函数名可以自定义
#pragma interrupt_handler user_fuc:Interrupt vector number
如:
#pragma interrupt_handler Time2:iv_TIMER2_COMP
void Time2()
{
}
列出ATmega16的向量表:
/* Interrupt Vectors Numbers */ #define IT_RESET 1 #define IT_INT0 2 #define IT_INT1 3 #define IT_TIMER2_COMP 4 #define IT_TIMER2_OVF 5 #define IT_TIMER1_CAPT 6 #define IT_TIMER1_COMPA 7 #define IT_TIMER1_COMPB 8 #define IT_TIMER1_OVF 9 #define IT_TIMER0_OVF 10 #define IT_SPI_STC 11 #define IT_USART_RXC 12 #define IT_USART_UDRE 13 #define IT_USART_TXC 14 #define IT_ADC 15 #define IT_EE_RDY 16 #define IT_ANA_COMP 17 #define IT_TWI 18 #define IT_INT2 19 #define IT_TIMER0_COMP 20 #define IT_SPM_RDY 21
AVR studio中使用中断的话,需添加“#include <avr/interrupt.h>”头文件
如:
#include <avr/interrupt.h>
ISR(SIG_OVERFLOW0) //定时器/计数器0溢出中断(中断向量)
{
user_fuc(); //用户自定义函数
}

4.一些库函数的不同
ICC AVR studio
nop() asm("nop")
WDR() asm("wdr")
CLI() cli()
SEI() sei() |