本帖最后由 xu0801hua 于 2015-11-3 22:08 编辑
有谁使用过STC15单片机的硬件SPI程序,读取A/D芯片程序;
下面是我写的有问题:
void Spi_Init()
{
AUXR1 &= 0xDF; //SPI配置在P1口
IE2 &= 0xFD; //禁止SPI中断
SPCTL = 0xD1;
}
/****************************************************************************
* 函数原型: uchar SR_Spi (uchar send_char)
* 功 能: 查询方式,SPI发送接受一个字节数据
*****************************************************************************/
INT8U SR_Spi_1 ()
{
// SPSTAT = 0xC0;
//
unsigned char send_char;
while (!(SPSTAT&0x80));
send_char= SPDAT;
return send_char;
}
/******************************************************
*函数原型: Send_Spi (uchar send_char)
*功 能: 查询方式,SPI接收CS5513AD质
*******************************************************/
unsigned int ADC_CS5513()
{
unsigned long AD_data;
//unsigned int AD_1,AD_2,AD_3;
unsigned char AD_value,i;
for(i=0;i<3;i++)
{
AD_value=SR_Spi_1(0);
AD_data=AD_value;
AD_data<<=8;
}
AD_data=AD_data/*&0xFfff*/;
return AD_value;
}
void main()
{
unsigned int i,daa[8];
I_init452 ();
Spi_Init ();
while(1)
{
daa[0]=ADC_CS5513();
for(i=4;i>0;i--)
{
dis=daa[0]%10;
daa[0]/=10;
}
DISP_all(0,dis,8);
}
delayms(1500);
}
请帮忙看看;出现问题是我采用只读,等待“ while (!(SPSTAT&0x80));”出一个字节结果;现在就是一直在等待,出不了结果显示不出值;
|