五月
07
新版的winavr出现了很多不兼容的情况,以前的老程序直接编译都通不过,主要有sbi,cbi,另外还有inp outp PRG_RDB 等问题,现在提出解决方法:
只要加上下面的代码就OK了:
#define PRG_RDB(addr) pgm_read_byte(addr)
#define eeprom_rb(addr) eeprom_read_byte ((uint8_t *)(addr))
#define eeprom_wb(addr,val) eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val))
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#define nbi(sfr, bit) (_SFR_BYTE(sfr) ^= _BV(bit))
另外发现一个很好用的函数bit_is_clear(PINC,1),bit_is_set(PINC,1)
注意有这个定义:#define PD1 1 在iom16.h里面
发表评论