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;
}
展开
 我来答
slimwolf
2011-04-14 · TA获得超过210个赞
知道答主
回答量:112
采纳率:0%
帮助的人:79.6万
展开全部
不会吧 没啥问题啊 ,要不你把
“P1M1=0x40; //P16高阻输入
P1M0=0xB0;”
去掉试试
更多追问追答
追问
不行啊  去了用示波器看还是一样的结果   我是用作sd卡的SPI
追答
可能是你的时钟模式不对
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式