串行数据输入单片机如何存储。
假如spi总线,用单片机自带的spi接口,数据可以存储到sspubf,接收完成后在做进一步处理。如果模拟spi接口的话,接收数据的过程中如何存储呢?...
假如spi总线,用单片机自带的spi接口,数据可以存储到sspubf,接收完成后在做进一步处理。如果模拟spi接口的话,接收数据的过程中如何存储呢?
展开
2个回答
展开全部
//读SPI接口读写程序
sbit MISO =P1^3; //SPI输入端口
sbit MOSI =P1^4; //SPI输出端口
sbit SCK =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
}
sbit MISO =P1^3; //SPI输入端口
sbit MOSI =P1^4; //SPI输出端口
sbit SCK =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
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询