📄 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 读一个字节的 程序
void Write8(uchar cData); //SPI 写一个字节的 程序
void initspi(void); // 复位CS5460A的SPI模式 程序
void Write_CS5460A(uchar *p,uchar len);// 写 CS5460A 的状态寄存器
void Read_CS5460A(uchar *p,uchar CommData );// 读 CS5460A 的状态寄存器
xdata uchar buf5460[4];
code long *lbuf = (long *)&buf5460;
//-------------------------------------------------
//SPI 读一个字节的 程序
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 写一个字节的 程序
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 的状态寄存器
void Write_CS5460A(uchar *p,uchar len)
{
uchar i;
initspi();
for(i=0;i<len;i++)
{ Write8(p[i]);}
}
// 读 CS5460A 的状态寄存器
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;
}
//获得当前重量数据
long GetWeight(void)
{
long xdata tWeight;
Read_CS5460A(buf5460,0x16); //读状态寄存器
buf5460[0] = 0;
tWeight = *lbuf;
for(;;)
{
Read_CS5460A(buf5460,0x16); //读状态寄存器
buf5460[0] = 0;
if(tWeight == *lbuf)
{
Read_CS5460A(buf5460,0x16); //读状态寄存器
buf5460[0] = 0;
if(tWeight == *lbuf)
{
break;
}else tWeight = *lbuf;
}else tWeight = *lbuf;
}
{
code uchar buf[] = {0x5E, 0xFF,0xFF,0xFF};
Write_CS5460A(buf,4); //写状态寄存器,对应位产生的标志清除
}
return tWeight;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -