?? cs5460a.c
字號:
#include "CS5460A.h"
#include "default.h"
sbit SK=P3^4; /* SPI時鐘 */
sbit SO=P3^2; /* SDO */
sbit SI=P3^3; /* SDI */
sbit RST = P3^5;
uchar Read8(void); //SPI 讀一個字節(jié)的 程序
void Write8(uchar cData); //SPI 寫一個字節(jié)的 程序
void initspi(void); // 復(fù)位CS5460A的SPI模式 程序
void Write_CS5460A(uchar *p,uchar len);// 寫 CS5460A 的狀態(tài)寄存器
void Read_CS5460A(uchar *p,uchar CommData );// 讀 CS5460A 的狀態(tài)寄存器
xdata uchar buf5460[4];
code long *lbuf = (long *)&buf5460;
//-------------------------------------------------
//SPI 讀一個字節(jié)的 程序
uchar Read8(void)
{
bit bData; uchar cLoop; uchar cData;
cData=0x00;
SI=1;
for(cLoop = 0; cLoop < 8; cLoop++)
{
SK=1;
SK=0; //下降沿輸出
cData<<=1;
bData=SO;
if(bData) { cData|=0x01; }
}
return cData;
}
//SPI 寫一個字節(jié)的 程序
void Write8(uchar cData)
{
uchar cLoop;
for(cLoop = 0; cLoop < 8; cLoop++)
{
if((cData&0x80)==0) { SI=0; }
else { SI=1; }
SK=0; //上升沿寫入
SK=1;
cData <<= 1;
}
}
// 寫 CS5460A 的狀態(tài)寄存器
void Write_CS5460A(uchar *p,uchar len)
{
uchar i;
initspi();
for(i=0;i<len;i++)
{ Write8(p[i]);}
}
// 讀 CS5460A 的狀態(tài)寄存器
void Read_CS5460A(uchar *p,uchar CommData )
{
uchar i;
initspi();
Write8(CommData);
for(i = 1; i < 4; i++)
{
p[i] = Read8();
}
}
void initspi(void)
{
Write8(SYNC1);
Write8(SYNC1);
Write8(SYNC1);
Write8(SYNC0);
}
void Clear_DRDY()
{
code uchar tBuf[] = {0x5E,0xFF,0xFF,0xFF};
initspi();
Write_CS5460A(tBuf,4);
}
bit Waite_DRDY_High()
{
uchar i;
while(i < 250)
{
initspi();
Read_CS5460A(buf5460,0x1E);
if(buf5460[1]&0x80)
return TRUE;
i++;
delay(1000);
}
return FALSE;
}
void Reset5460A()
{
RST = 0;
delay(100);
RST = 1;
}
//獲得當(dāng)前重量數(shù)據(jù)
long GetWeight(void)
{
long xdata tWeight;
Read_CS5460A(buf5460,0x16); //讀狀態(tài)寄存器
buf5460[0] = 0;
tWeight = *lbuf;
for(;;)
{
Read_CS5460A(buf5460,0x16); //讀狀態(tài)寄存器
buf5460[0] = 0;
if(tWeight == *lbuf)
{
Read_CS5460A(buf5460,0x16); //讀狀態(tài)寄存器
buf5460[0] = 0;
if(tWeight == *lbuf)
{
break;
}else tWeight = *lbuf;
}else tWeight = *lbuf;
}
{
code uchar buf[] = {0x5E, 0xFF,0xFF,0xFF};
Write_CS5460A(buf,4); //寫狀態(tài)寄存器,對應(yīng)位產(chǎn)生的標(biāo)志清除
}
return tWeight;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -