模拟SPI怎么不好用
如题,我用硬件SPI控制AD效果很好,怎么模拟SPI用下效果这么差??uchar moniSPI_receive(void)
{
int i;
uchar redata;
redata=0X00;
for(i=0;i<8;i++)
{
PORTB|=_BV(5); //PB5 模拟SPI的SCK
PORTB&=~_BV(5);
if(PINB&_BV(4)) // PB4 模拟SPI的MISO
redata|=_BV(7-i);
}
return (redata);
} 我会这样写。
uchar moniSPI_receive(void)
{
uchar i,redata;
redata=0X00;
for(i=0;i<8;i++)
{
PORTB|=_BV(5);//PB5 模拟SPI的SCK置1后,要等一会
redata <<= 1; //左移 redata
PORTB&=~_BV(5); //模拟SPI的SCK置0
if(PINB&_BV(4))// PB4 模拟SPI的MISO
redata++;
}
return (redata);
} eblc1388 发表于 2012-7-7 15:54 static/image/common/back.gif
我会这样写。
uchar moniSPI_receive(void)
信号是1K~4K的,AD至少采样10个点吧~,那模拟的SPI速度达到么? 只有你自己知道,别人怎知? eblc1388 发表于 2012-7-7 16:28 static/image/common/back.gif
只有你自己知道,别人怎知?
现在再看你的程序,请问为什么i定义为uchar,而不是uint呢?
页:
[1]