我將AVR-GCC的T6963-based LCD driver移植到微芯片C18編譯器。我看過宏「pgm_read_byte」:有誰知道如何移植這個宏?如何將pgm_read_byte宏(AVR-GCC)移植到Mircrochip C18編譯器?
UPDATE
從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; \
}))
謝謝你的回答,問題是即使__LPM((uint16_t)(address_short))不存在於C18中(它更多地用作'pgm_read_byte'),所以我正在尋找解決方案或解決方法。 –
@ Maxwell-完全是一個完全不同的問題。你在移植這個宏時沒有問題,你想移植一個恰好被宏調用的函數。如果您可以提供原始__LPM函數的主體以及您的移植版本,我們可能會傳遞一些提示。 – bta
對不起,也許這個問題還不夠清楚(我晚上太困了)。我在問題中添加了_LPM的主體。謝謝! –