我正在移植 T6963-based LCD driver从 AVR-GCC 到 microchip C18 编译器。我看到了宏“pgm_read_byte”:有人知道如何移植这个宏吗?
更新
来自here我可以看到宏的实现
#define pgm_read_byte(address_short)
pgm_read_byte_near(address_short)
...
#define pgm_read_byte_near(address_short) __LPM((uint16_t)(address_short))
...
#define __LPM(addr) __LPM_enhanced__(addr)
...
#define __LPM_enhanced__(addr) \
(__extension__({ \
uint16_t __addr16 = (uint16_t)(addr); \
uint8_t __result; \
__asm__ \
( \
"lpm %0, Z" "\n\t" \
: "=r" (__result) \
: "z" (__addr16) \
); \
__result; \
}))
最佳答案
根据您发布的链接,宏定义为:
#define pgm_read_byte(address_short) pgm_read_byte_near(address_short)
#define pgm_read_byte_near(address_short) __LPM((uint16_t)(address_short))
这些宏应该是可移植的,没有任何问题,它们只是其他函数/宏的名称的别名。您具体遇到什么问题?到目前为止您尝试过什么,出了什么问题?
关于c - 如何将 pgm_read_byte 宏 (AVR-GCC) 移植到 Mircrochip C18 编译器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10989200/