使用Arduino的IDE的一個Arduino宇野口......AVR彙編了從可變
我可以成功發送到端口使用宏如PORTB
但我無法弄清楚如何將數據發送到一個端口在一個變量的定義,像這樣:
uint8_t pin = 0; // any value...
uint8_t port = digitalPinToPort(pin);
uint8_t *portreg = portModeRegister(port);
uint8_t portsfr = _SFR_IO_ADDR(port);
asm volatile
(
// other asm instructions...
"out %[port], %[masklo] \n\t"
::
[port] "I" (_SFR_IO_ADDR(PORTB)) // works
// [port] "I" (_SFR_IO_ADDR(port)) // doesn't compile
// [port] "I" (portreg) // doesn't compile
// [port] "I" (portsfr) // doesn't compile
);
我發現下面的文章,其接縫相關但不顯示的例子如何:avr gcc inline asm variable input operand
作爲任何指令集引用將告訴你,'out'不採取一個變量。看看你是否可以使用內存映射地址來訪問你的端口。 – Jester