?? c8051spi.c
字號:
void AD_READ(void) //讀AD數據
{ unsigned char temp,clear;
unsigned int i,ad1,ad2,ad0;
SELECT_AD; //選通AD芯片
SPDR = 0x00; //指令通道0
while (!(SPSR&(1<<SPIF)));
clear = SPSR;
clear = SPDR;
SPDR = 0x00;
while (!(SPSR&(1<<SPIF)));
clear = SPSR;
temp = SPDR;
NOSELECT_AD;
SELECT_AD; //選通AD芯片
SPDR = 0x08;
while (!(SPSR&(1<<SPIF)));
clear = SPSR;
clear = SPDR;
ad0=(unsigned int)(temp*256)+clear;
SPDR = 0x08; //指令通道1
while (!(SPSR&(1<<SPIF)));
clear = SPSR;
temp=SPDR;
NOSELECT_AD;
SELECT_AD; //選通AD芯片
SPDR = 0x10; //指令通道2
while (!(SPSR&(1<<SPIF)));
clear = SPSR;
clear = SPDR;
ad1=(unsigned int)(temp*256)+clear;
SPDR = 0x10;
while (!(SPSR&(1<<SPIF)));
clear = SPSR;
temp=SPDR;
NOSELECT_AD;
SELECT_AD; //選通AD芯片
SPDR = 0x00; //指令通道0
while (!(SPSR&(1<<SPIF)));
clear = SPSR;
clear = SPDR;
ad2=(unsigned int)(temp*256)+clear;
SPDR = 0x00;
while (!(SPSR&(1<<SPIF)));
NOSELECT_AD;
}
void portini(void) //SPI端口初始化
{
XBR0=0X02;
XBR1=0X40;
P0MDOUT=0X00;
}
void spiini(void) //設置3線SPI使能和SPI串口時鐘頻率為了和cs5463兼容
{
SPI0CKR=sysclk/(2*Fsck)-1;
SPI0CFG=0x47; //CKPHA CKPOL BC2 BC1 BC0 SPIFRS2 SPIFRS1 SPIFRS0
//時鐘相位 時鐘極性 指示發送到幾位 數據幀有幾位
//
//
SPI0CN=0x03; //SPIF WCOL MODF RXOVRN TXBSY SLVSEL MSTEN SPIEN
//SPI中斷標志 寫沖突標志 方式錯誤 接收溢出 發送忙 從選擇 主方式使能 SPI使能
//
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -