我在avr / assembly方面不是那么强大而且我在atmega2560上从PORTH选择“CS”时遇到问题...你能帮助我吗?
代码:
#define DDR_CS _SFR_IO_ADDR(DDRH), 5 // MMC CS pin (DDR, PORT)
#define PORT_CS _SFR_IO_ADDR(PORTH), 5
#define DDR_CK _SFR_IO_ADDR(DDRB), 1 // MMC SCLK pin (DDR, PORT)
#define PORT_CK _SFR_IO_ADDR(PORTB), 1
#define DDR_DI _SFR_IO_ADDR(DDRB), 2 // MMC DI pin (DDR, PORT)
#define PORT_DI _SFR_IO_ADDR(PORTB), 2
#define PIN_DO _SFR_IO_ADDR(PINB), 3 // MMC DO pin (PIN, PORT)
#define PORT_DO _SFR_IO_ADDR(PORTB), 3
;---------------------------------------------------------------------------;
.nolist
#include <avr/io.h>
.list
.text
;---------------------------------------------------------------------------;
; Initialize MMC port
;
; void init_spi (void);
.global init_spi
.func init_spi
init_spi:
sbi DDR_CS ; CS: output
sbi DDR_DI ; DI: output
sbi DDR_CK ; SCLK: output
sbi PORT_DO ; DO: pull-up
ret
.endfunc
我正在制作的错误:
asmfunc.S:44:错误:数字必须为正且小于32
我发现了这个post,我认为这是答案,我不知道如何用正确的语法编写它。