|
今天开始写了一个IO口的读写程序,又看了一下编译结果发现没有按GCC的优化写法,你的代码编译后会差别很大
#i nclude <avr/io.h>
#define RXD0 0 #define TXD1 1 #define TXD0 2 #define RXD1 3 void AvrInit(void) { DDRB=(1<<TXD0)|(1<<TXD1); //设定PB1和PB2为输出 PORTB=0xf9; } int main(void) { AvrInit(); while(1) { if(!(PINB&(1<<RXD0))) { PINB&=~(1<<TXD1); while(!(PINB&(1<<RXD0))); PINB|=1<<TXD1; } if((PINB&(1<<RXD1))==0) { PINB&=~(1<<TXD0); while(!(PINB&(1<<RXD1))); PINB|=1<<TXD0; } } }
if((PINB&(1<<RXD1))==0)比if(!(PINB&(1<<RXD1)) 多10个字节的代码
|