发布网友 发布时间:2022-04-23 07:24
共2个回答
热心网友 时间:2022-06-17 15:31
//读SPI接口读写程序
sbit MISO=P1^3; //SPI输入端口
sbit MOSI=P1^4; //SPI输出端口
sbitSCK =P1^5; //SPI时钟端口
void inerDelay_us(unsigned char n)
{
for(;n>0;n--)
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
unsigned int SPI_RW(uint uchar)
{
uint bit_ctr;
for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit
{
MOSI = (uchar & 0x80); // output 'uchar', MSB to MOSI
uchar = (uchar << 1); // shift next bit into MSB..
SCK = 1; // Set SCK high..
inerDelay_us(1); //延时一定的时间
uchar |= MISO; // 读SPI口输入口
SCK = 0; // ..then set SCK low again
inerDelay_us(1) ; //延时一定的时间
}
return(uchar); // return read uchar
}
热心网友 时间:2022-06-17 15:32
弄一个移位寄存器,时钟边沿到来的时候采样并移位,一个完整的数据传输完毕后,再把结果保存到sspbuf