STC12C5A60S2 硬件的SPI设置完成 但无法正常运行
执行到while(!(SPSTAT&0x80));就卡住了/*******************************************************...
执行到 while(!(SPSTAT&0x80)); 就卡住了
/**********************************************************************************************
SPI初始化
***********************************************************************************************/
void InitSPI()
{
P1M1=0x40; //P16高阻输入
P1M0=0xB0; //如果使用51单片机来调试SD卡模块
//一定要在与DI相连的IO上加上拉电阻,
//10K就好,如果使用的是STC12C5A60S2,
//则可以直接打开IO的推挽,目的就是为
//了增加IO驱动能力
SPDAT = 0; //SPI数据寄存器清零
SPCTL = 0xD4; // SSIG,SPEN,DORD,MSTR,CPOL,CPHA,SPR1,SPR0。 1101,0100
SPSTAT =0xC0; //复位SPI状态寄存器
}
/**********************************************************************************************
读写函数
***********************************************************************************************/
unsigned char Spi_Write(unsigned char ch)////////注意读的时候,也要写一个字节
{
SPDAT=ch;
while(!(SPSTAT&0x80));
SPSTAT=0xC0;
return SPDAT;
} 展开
/**********************************************************************************************
SPI初始化
***********************************************************************************************/
void InitSPI()
{
P1M1=0x40; //P16高阻输入
P1M0=0xB0; //如果使用51单片机来调试SD卡模块
//一定要在与DI相连的IO上加上拉电阻,
//10K就好,如果使用的是STC12C5A60S2,
//则可以直接打开IO的推挽,目的就是为
//了增加IO驱动能力
SPDAT = 0; //SPI数据寄存器清零
SPCTL = 0xD4; // SSIG,SPEN,DORD,MSTR,CPOL,CPHA,SPR1,SPR0。 1101,0100
SPSTAT =0xC0; //复位SPI状态寄存器
}
/**********************************************************************************************
读写函数
***********************************************************************************************/
unsigned char Spi_Write(unsigned char ch)////////注意读的时候,也要写一个字节
{
SPDAT=ch;
while(!(SPSTAT&0x80));
SPSTAT=0xC0;
return SPDAT;
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询