📄 cs5513_li.c
字号:
/******************************************************************************
*
* 已完成
*
* 文件名 : CS5513_LI.C
*
* 描述 : 读取变形传感器值。
*
* 版本 : 1.0
* 日期 : 2006-10-27
*
******************************************************************************/
#include "CS5513_LI.h"
#define CS5513_CLK_LOW() CS5513_LI_CLK = 0
#define CS5513_CLK_HIGH() CS5513_LI_CLK = 1
INT32S li_ad=0;
INT32S aveg_ad[10];
INT32S off_ad = 0;
/************************************************************
*功能 :求滚动平均值
*函数名:AverageAD
*参数 :void
*返回值:平均值
*
***********************************************************/
INT32S AverageAD(void)
{
INT32S sum;
INT8U i;
for(i=0,sum=0;i<10;i++)
{
sum += aveg_ad[i];
}
sum /= 10;
return (sum);
}
void WakeUp(void)
{
INT8U i;
for(i=0;i<24;i++)
{
CS5513_CLK_HIGH();
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
CS5513_CLK_LOW();
}
}
/************************************************************
*功能 :初始化CS5513
*函数名:AverageAD
*参数 :void
*返回值:void
*
***********************************************************/
void InitCS5513(void)
{
EICRA=0x00;
EICRB=0x02;
EIMSK=0x10;
DDRE_Bit3 = 1;//p1初始化
DDRE_Bit7 = 1;
WakeUp();
CS5513_CLK_LOW();
}
/************************************************************
*功能 :读取AD值
*函数名:ReadLiAD
*参数 :void
*返回值:0 无效的AD值
* 1 有效
*
***********************************************************/
INT8U ReadLiAD(INT32S *pad)
{
INT8U i;
INT32U ad=0;
CS5513_CLK_LOW();
for(i = 0; i < 24; i++)
{
ad <<= 1;
CS5513_CLK_HIGH();
asm("nop");
asm("nop");
asm("nop");
asm("nop");
ad |= CS5513_LI_SDO;
CS5513_CLK_LOW();
asm("nop");
asm("nop");
asm("nop");
asm("nop");
}
ad &=0x00ffffff;
if(ad & 0xf00000)
{
return 0;
}
if(ad & 0x00080000)
{
ad |= 0xfff00000;
}
else
{
ad &= 0x000fffff;
}
*pad = ad;
return (1);
}
/******************************************************
*函数名 :INT_4
*功能 :AD中断服务程序
* 服务 :
* 读取新的AD值并将其放入AD对列中
*参数 :void
*返回值 :void
*****************************************************/
#pragma vector=0X14
__interrupt void INT_4(void)
{
static INT32S ad;
INT8U i;
ReadLiAD(&ad);//采集力值1
for(i=0;i<9;i++)
{
aveg_ad[i] = aveg_ad[i + 1];
}
aveg_ad[i] = ad;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -