⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cs5513_li.c

📁 基于IAR平台和ATMEGA128 MCU的24位ADC的C语言应用代码
💻 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 + -