|
代码如下:注释部分是51单片机上,使用正常,但是在stm32上不正常,一度让我不知道咋办。。。。
由此猜测应该是两者对位运算的解析的区别,不知道哪位能讲解一下关于两者对位运算的区别,或者还有其他方面的注意事项呢?
/********************************************************************/
void WriteByte(U8 temp)
{
/* U8 i;
for(i=0;i<8;i++)
{
SCLK=0;//Delay_10us();
delay_us(50);
MOSI = temp & 0x80;
SCLK=1;//Delay_10us();
delay_us(50);
temp <<=1;
}
SCLK=0;*/
u8 i;
for(i=8;i>0;i--)
{
SCLK=0;
if(temp&0x80)
MOSI=1;
else
MOSI=0;
temp<<=1;
SCLK=1;
delay_us(50);
SCLK=0;
delay_us(50);
}
}
U8 ReadByte(void)
{
/* U8 i,dat1;
SCLK=0;
dat1=0;
for(i=0;i<8;i++)
{
SCLK=1;//Delay_10us();
delay_us(50);
dat1 <<=1;
dat1 |= MISO;
//delay_us(10);
SCLK=0; //Delay_10us();
delay_us(50);
}
return dat1;*/
u8 i;
u8 temp=0;
for(i=8;i>0;i--)
{
SCLK=1;
delay_us(50);
temp<<=1;
if(MISO)temp++;
SCLK=0;
delay_us(50);
}
return temp;
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|