|
发表于 2010-11-4 08:51:56
|
显示全部楼层
只有低32个IO是可以位操作的,我懂AVR汇编的....
另外不只是多一个周期的事,多了好几个字节-_-
位域在这个32个IO上的操作明明应该转化成位操作的....ICCAVR这点笨我有说错??
我在ICCAVR 中只好用宏定义出GPIO_OUT0(LED1); GPIO_OUT1(LED1); 或者GPIO_OUT(LED1, 0); GPIO_OUT(LED1, 1);的方式,就是用|= &=~实现的
#define LED1 A,1
#define GET_PORT(x, bit) (PORT ## x)
#define GET_PIN( x, bit) (PIN ## x)
#define GET_BIT( x, bit) (bit)
#define GET_REG( x, bit) (x)
#define GPIO_OUT1(portx_bit) ( GET_PORT(portx_bit) |= BIT(GET_BIT(portx_bit)) )
#define GPIO_OUT0(portx_bit) ( GET_PORT(portx_bit) &= ~BIT(GET_BIT(portx_bit)) ) |
|