本帖最后由 CodeMonkey 于 2013-1-4 09:06 编辑
ICC AVR,可以使用WDR();这些伪C函数,因为他实际是汇编. 比如WDR();其实是asm("wdr");要迁移到AS,要不用define,要不改写程序. 还有,BIT(x)也要别名成(1 << (x)),这个真心挺好用的. 另外,关于延迟函数,在AS有ulti/delay.h这个文件,不过他的CPU是1.00000,要改频率,必须改F_CPU. 他有两个很强大的函数,_delay_ms()和_delay_us(); 中断,在ICC和AS里面有不少区别,在ICC里面可以用类Keil C51方式的中断. 但是,AS不行,要包含中断的头,avr/interrupt.h,函数名统一为ISR,比如. - ISR(TIMER0_OVF_vect){}<font color="#333333"><font face="Arial, Helvetica, sans-serif,"> 其实每个型号中断向量是不同的.</font></font>
复制代码 ICC用的是#include <eeprom.h>,AS用#include <avr/eeprom.h>,函数也不同,ICC的忘了,AS的应该是这样. - _EEGET(var,addr);_EEPUT(addr,var);<font color="#333333"><font face="Arial, Helvetica, sans-serif,"> </font></font>
复制代码 在AS上把数据写flash的方法,要包含avr/pgmspace.h,prog_uchar这些类型来声明.用pgm_read_byte_near(var)来读取.
另外,AS这些,有很强大的联想补全,很强大. 同步发布到本人博客:http://www.lijingquan.net/as-with-avr.html
|