?? spi.c
字號:
#include "Includes.h"
static void Nop(void);
/*********************************************************************************************************
** 函數(shù)名稱: Dat_Transmit
** 功能描述: 從SPI總線發(fā)送數(shù)據(jù)
** 全局變量: 無
** 調(diào)用模塊: 無
********************************************************************************************************/
extern void SPI_Transmit(unsigned char dat)
{
unsigned char i,datbuf;
unsigned char j=50000;
EA=0;
_nop_();
Delay_Xms(1);
datbuf=dat;
SS=1;
while(SS&&j>0){j--;}
j=50000;
for(i=0;i<8;i++)
{
while(SPICLK&&j>0){j--;}
j=50000;
if(datbuf&0x80) MISO=1;
else MISO=0;
datbuf=(datbuf<<1);
while((~SPICLK)&&j>0){j--;}
MOSI=1; }
EA=1;
}
/*********************************************************************************************************
** 函數(shù)名稱: Data_Receive
** 功能描述:SPI總線接收數(shù)據(jù)
** 全局變量: 無
** 調(diào)用模塊: 無
********************************************************************************************************/
extern unsigned char SPI_Receive(void)
{
unsigned char i,dat=0,temp;
bit bt;
SPICLK=1;
SS=0; //選中器件
SS=0;
Nop();
Nop();
for(i=0;i<8;i++)
{
SPICLK=1;
Nop();
Nop();
Nop();
SPICLK=0;
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
bt=MISO;
if(bt) temp=0x01;
else temp=0x00;
dat=(dat<<1);
dat=(dat|temp);
}
SS=1;
SPICLK=1;
return dat;
}
/***************************************************************************************
小延時(shí)
*************************************************************************************/
static void Nop(void)
{
;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -