📄 adc.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -