| 本帖最后由 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;
 }
 }
 |