使用ICC AVR和AVR STUDIO的一些差別

列出ICC AVR 過渡到 AVR STUDIO時要注意的幾個問題

1.頭文件更改

ICCAVR使用的是“#include <iom16v.h>”

AVR STUDIO更改爲“#include <avr/io.h>”

在ICC中使用不同MCU的頭文件是不同的,在AVR studio中所有MCU的頭文件都用“#include <avr/io.h>”

2.AVR studio中延時函數可直接使用“#include <util/delay.h>”頭文件中的延時函數:

void _delay_us (double __us);

void _delay_ms(double __ms);

兩個函數的參數均爲double型的,通常使用整數延時即可。

(函數最大延時時間是有限制的,參考“util/delay.h”)

3.中斷函數寫法不同

在ICC 中斷函數名可以自定義

列出ATmega16的向量表:


#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

#pragma interrupt_handler user_fuc:Interrupt vector number

如:

#pragma interrupt_handler Time2:iv_TIMER2_COMP

void Time2()

{

}

AVR studio中需添加“#include <avr/interrupt.h>”頭文件且中斷函數名不能自定義

如:

#include <avr/interrupt.h>

ISR(SIG_OVERFLOW0)       //定時器/計數器0溢出中斷(ICC AVR 過渡到 AVR STUDIO

4.一些庫函數的不同

ICC                                        AVR studio

nop()                                    asm("nop")

WDR()                                 asm("wdr")

CLI()                                      cli()

SEI()                                      sei()

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章