使用ICC AVR过渡到AVR STUDIO

列出ICC AVR 过渡到 AVR STUDIO时要注意的几个问题

1.头文件更改

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

AVR STUDIO更改为“#include <avr/io.h>
AVR Studio 4 的头文件 #include <avr/twi.h>”  对应 AVR Studio 5 的头文件 #include <compat/twi.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>

 SIGNAL(SIG_OVERFLOW0 )   //定时器/计数器0溢出中断(ICC AVR 过渡到 AVR STUDIO
 

4.一些库函数的不同

ICC                                        AVR studio

nop()                                    asm("nop")

WDR()                                 asm("wdr")

CLI()                                      cli()

SEI()                                      sei()

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值