终于知道老师喜欢用for(TYPE i=0;i<N;i++)而非for(TYPE i=N-1;i<=0;i--)的原因了
上课时看到老师写
u8 Spi1_Send_Recv_Byte(u8 txdata) { u8 rxdata = 0x00; u8 i; SCK = 0; for(i=0; i<8; i++) { //下降沿发数据 if(txdata & 1<<(7-i)) { MOSI = 1; } else { MOSI = 0; } delay_us(2); SCK = 1; delay_us(2); //上升沿收数据,判断引脚电平 if(MISO == 1) { rxdata |= (0x01<< (7-i)); } SCK = 0; } return rxdata; }
我就疑惑,为什么不这样
u8 Spi1_Send_Recv_Byte(u8 txdata) { u8 rxdata = 0x00; u8 i; //拉低时钟 SCK=0; for(i=7;i>=0;i--){ //下降沿引脚发数据 if(txdata&(1<<i)){ MOSI=1; }else{ MOSI=0; } //拉高时钟 delay_us(2); SCK=1; delay_us(2); //上升沿引脚接收数据 if(MISO==1){ rxdata|=(1<<i); } //拉低时钟 SCK=0; } return rxdata; }
写呢?
结果一运行,“咦?咋没输出了?”
调试之后才发现,原来是我用惯了int i的原因,感受到无符号数的情况太少了。
ε=(´ο`*)))唉,我这人总是只有撞了南墙才知道错。