终于知道老师喜欢用for(TYPE i=0;i<N;i++)而非for(TYPE i=N-1;i<=0;i--)的原因了

发布时间 2023-11-18 19:46:12作者: 败人两字非傲即惰

上课时看到老师写

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的原因,感受到无符号数的情况太少了。

ε=(´ο`*)))唉,我这人总是只有撞了南墙才知道错。