adc.c

来自「MAX197 ADC程序,用在一个项目上的,思想很清晰」· C语言 代码 · 共 77 行

C
77
字号
#include <absacc.h>
#include "OS_GLB.h"



uint  VoltageData=0, CurrentData=0;
uchar DataBufCH0[2], DataBufCH1[2];

/***************************************************************
*FUNCTION NAME :Read_ADC
*CREATE DATE   :2007-8-10
*CREATE BY     :lxq
*FUNCTION      :Read 12bit AD convert data from AD converter
*MODIFY DATE   :
*INPUT         :none
*OUTPUT        :
*RETURN        :1:success  -1:failure
***************************************************************/
void Read_ADC(void)
{
	uchar  i = 0;
	static char ADC_State = 0;

	switch( ADC_State )
	{
    case 0:
    			MAX197 = 0x50;                         //向MAX197的控制字寄存器写入控制字0X50,测量通道为0号通道;
      		ADC_State++;
      		break;
      
    case 1:
      		if( ADIRQ_CON != 0 )                   //acquisite  voltage
      		{
        		ADData_CON = 0;
        		break;
      		}
      		DataBufCH0[1] = MAX197;                //先读0号通道的低8位
      		ADData_CON = 1;
      		DataBufCH0[0] = MAX197&0x0F;           //再读0号通道的高4位
      		ADData_CON = 0;      
      		VoltageData = (uint)( ((DataBufCH0[0]*256+DataBufCH0[1])*10/4096)*10 ); 
      		ADCData[2] = (uchar)VoltageData;      
      		ADC_State++;      		
      		break;
    
    case 2:  
      		MAX197 = 0x50;                     //向MAX197的控制字寄存器写入控制字0X51,测量通道为1号通道;
      		ADC_State++;
      		break;
      
    case 3:  
      		if( ADIRQ_CON )                    //acquisite  current
      		{        		
        		ADData_CON = 0;        		
        		break;
      		}      		
          ADData_CON = 0;
      		DataBufCH1[1] = MAX197;            //先读1号通道的低8位
      		ADData_CON = 1;
      		DataBufCH1[0] = MAX197&0x0F;       //再读1号通道的高4位
      		ADData_CON = 0;      
      		CurrentData = (uint)( ((DataBufCH1[0]*256+DataBufCH1[1])*10/4096)*10 );
      		ADCData[0] = (uchar)( CurrentData/256 );
      		ADCData[1] = (uchar)( CurrentData%256 );
      		if( CurrentData )
      		{
      			Save_Flag = 1;
      		}      		
      		ADC_State++;
      		break;
	  
	  default :
	  			ADC_State = 0;
	  			break;
  }	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?