||
今天开始写了一个IO口的读写程序,又看了一下编译结果发现没有按GCC的优化写法,你的代码编译后会差别很大
#include <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个字节的代码