本帖最后由 any012 于 2016-7-12 11:10 编辑
//主函数
void main()
{
Init(); //初始化
while(1)
{
if(Comu_Busy == 0) //MODBUS通讯
{
GetTemptValue(channelNum); //获取一路温度值
if(proceState > 2) //该路温度读取完成
{
proceState = 0;
channelNum++; //下一路
if(channelNum > 3) //总共4路温度,循环读取
channelNum = 0;
}
}
}
}
//读取一路温度值
void GetTemptValue(u8 channelNum)
{
switch(proceState) //判断读取状态
{
case 0:
SendConverComand(channelNum+1); //发送单次转换命令
proceState = 1;
break;
case 1:
temptValue[channelNum] = CalTempValue(channelNum); //处理上次读取的数据,转化为温度值
proceState = 2;
break;
case 2:
adcValue[channelNum+1] = GetAdcDate(); //获取本次adc转化数据
break;
default:
break;
}
}
//获取adc转化数据
u32 GetAdcdate()
{
if(SPI_MISO == 0) //如果SPI_MISO被拉低,说明转换完成,可读取adc数据
{
regDate = AD7103_GetRegisterValue(AD7193_REG_DATA,3,0);
processFlag = 3;
return regDate;
}
}
|