|
楼主 |
发表于 2012-9-26 12:20:03
|
显示全部楼层
小混hun 发表于 2012-9-20 09:16
例程能共享下不楼主?教我软件调试下....初学者很多都不懂!我的扣扣是994881821 ... - /*****************************************
- 功能描述:SPI指定地址写1字节数据
- 参 数:uchar add 目标地址
- uchar data 数据
- 返 回 值:无
- *****************************************/
- void SpiWriteAddressData(uchar add, uchar data)
- {
- unsigned char i;
- nSET_CLR;
- add = add | 0x80; //写操作
- for(i=0;i<8;i++) //先写地址
- {
- if((add&0x80)==0x80)
- SDI_SET; //DIN=1
- else
- SDI_CLR; //DIN=0
- DelayUs(1);
- SCLK_SET; //CLK=1
- DelayUs(2);
- SCLK_CLR; //CLK=0
- add = add << 1;
- DelayUs(1);
- }
- for(i=0;i<8;i++) //再写数据
- {
- if((data&0x80)==0x80)
- SDI_SET; //DIN=1
- else
- SDI_CLR; //DIN=0
- DelayUs(1);
- SCLK_SET; //CLK=1
- DelayUs(2);
- SCLK_CLR; //CLK=0
- data = data << 1;
- DelayUs(1);
- }
- nSET_SET;
- }
- /*****************************************
- 功能描述:SPI指定地址读1字节数据
- 参 数:uchar add 目标地址
- 返 回 值:指定地址数据
- *****************************************/
- uchar SpiReadAddressData(uchar add)
- {
- unsigned char i,data;
- nSET_CLR;
- add = add & 0x7f; //读操作
- for(i=0;i<8;i++) //先写地址
- {
- if((add&0x80)==0x80)
- SDI_SET; //DIN=1
- else
- SDI_CLR; //DIN=0
- DelayUs(1);
- SCLK_SET; //CLK=1
- DelayUs(2);
- SCLK_CLR; //CLK=0
- add = add << 1;
- DelayUs(1);
- }
- data = 0;
- for(i=0;i<8;i++) //再写数据
- {
- DelayUs(1);
- data = data << 1;
- SCLK_SET; //CLK=1
- DelayUs(2);
- if(SDO_H)
- data++;
- DelayUs(1);
- SCLK_CLR; //CLK=0
- DelayUs(1);
- }
- nSET_SET;
- return (data);
- }
复制代码 |
|