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

📄 main.c

📁 采用PICC18编写的单片机源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
**根据selfAddr更新显示缓冲区      
*全局变量:uint8 Intpart[3],Decm[2],dispBuf[con_Disp_Bit];    //整数部分数组,小数部分数组                  
**************************************************************/
void dispSelfAddr(void)
{
   //显示本机地址
   displayFloat(0,3,selfAddr);
   dispBuf[2]=TableNum[Intpart[0]];
   dispBuf[1]=TableNum[Intpart[1]];
   dispBuf[0]=TableNum[Intpart[2]];
   //显示r
   dispBuf[4]=TableLetter[7];
   //显示A
   dispBuf[3]=TableLetter[0];
}
/**************************显示放大倍数***********************
**入口:无
**出口:无
**根据Amp更新显示缓冲区      
*全局变量:uint8 Intpart[3],Decm[2],dispBuf[con_Disp_Bit];    //整数部分数组,小数部分数组                  
**************************************************************/
void dispAmp(void)
{
   //显示本机地址
   displayFloat(0,2,Amp);
   dispBuf[2]=TableNum[Intpart[0]];
   dispBuf[1]=TableNum[Intpart[1]];
   //显示d
   dispBuf[0]=TableLetter[3];
   //显示n
   dispBuf[4]=TableLetter[6];
   //显示n
   dispBuf[3]=TableLetter[6];
}
/**************************主函数**********************
/*入口:无
/*出口:无
/*占用资源:
/*调用函数:main_initial,
/***********************************************************/
void main(void)
{
uint8 tmpCtr;    //循环控制
uint16 tmpInt16;   //临时存储变量
main_initial();
Timer2ON();
while(1)
  {
    CLRWDT();
    switch(taskNo) 
    {
       //显示任务
       case task_Display: 
       {
          display();
          break;
       }
       //读取按键任务       
       case task_ReadKey:
       {      
          display();    
          if(readkey0()==TRUE)     //按键0(开始)
          {
             if(FaceReg==conFaceChDNum)            //显示充放电次数界面
             {
                for(tmpCtr=0;tmpCtr<ConADChnNum;tmpCtr++)
                {
                   ADChnRe.isStartADSap[tmpCtr]=TRUE;    //开始采样标志=TRUE
                   Ctrl14013_Reset(tmpCtr);      //14013复位
                   resetChargePara(tmpCtr);     //复位充放电信息
                   startCtrlCharge(tmpCtr);     //开始充放电控制
                }
             }
             else if(FaceReg==conFaceCDTime)        //显示充放电时间界面
             {
             }
             else if(FaceReg==conFaceEmerTime)       //显示应急时间界面
             {
             }
             else if(FaceReg==conFaceEmerVolt)        //显示终止电压界面
             {
             }
             else if(FaceReg==conFaceSetBaseVolt)       //显示基准电压界面
             {
                 ChangeBaseVolt(POINT2);          //基准电压+0.01
             }
             else if(FaceReg==conFaceSetAddr)           //显示本机地址界面
             {
                 SetSelfAddr(conAddr100);     //本机地址+100
             }
             else if(FaceReg==conFaceSetAmp)            //显示放大倍数界面
             {
             }             
          }
          if(readkey1()==TRUE)     //按键1(功能)
          {
             //改变功能模式,即改变显示界面
             FaceReg++;
             if(FaceReg>=conFaceMaxNum)
             {
                FaceReg=0;
             }
          }
          if(readkey2()==TRUE)     //按键2(选择)
          {
             
             if(FaceReg==conFaceChDNum)            //显示充放电次数界面
             {            
                FaceChnNo++;     //改变通道
                if(FaceChnNo>=conChnNum)
                {
                   FaceChnNo=0;              
                }
             }
             else if(FaceReg==conFaceCDTime)        //显示充放电时间界面
             {
                FaceChnNo++;    //改变通道
                if(FaceChnNo>=conChnNum)
                {
                   FaceChnNo=0;
                }
             }
             else if(FaceReg==conFaceEmerTime)       //显示应急时间界面
             {
                FaceChnNo++;    //改变通道
                if(FaceChnNo>=conChnNum)
                {
                   FaceChnNo=0;
                }
             }
             else if(FaceReg==conFaceEmerVolt)        //显示终止电压界面
             {
                FaceChnNo++;    //改变通道
                if(FaceChnNo>=conChnNum)
                {
                   FaceChnNo=0;
                }
             }
             else if(FaceReg==conFaceSetBaseVolt)       //显示基准电压界面
             {
                ChangeBaseVolt(POINT2);          //基准电压+0.01
             }
             else if(FaceReg==conFaceSetAddr)           //显示本机地址界面
             {
                SetSelfAddr(conAddr10);   //本机地址+10
             }
             else if(FaceReg==conFaceSetAmp)            //显示放大倍数界面
             {
                ChangeAmp();    //改变放大倍数
             }           
          }
          if(readkey3()==TRUE)     //按键3(停止)
          {
             if(FaceReg==conFaceChDNum)            //显示充放电次数界面
             {
                for(tmpCtr=0;tmpCtr<ConADChnNum;tmpCtr++)
                {
                   ADChnRe.isStartADSap[tmpCtr]=FALSE;
                   resetChargePara(tmpCtr);     //复位充放电信息
                }
             }
             else if(FaceReg==conFaceCDTime)        //显示充放电时间界面
             {
             }
             else if(FaceReg==conFaceEmerTime)       //显示应急时间界面
             {
             }
             else if(FaceReg==conFaceEmerVolt)        //显示终止电压界面
             {
             }
             else if(FaceReg==conFaceSetBaseVolt)       //显示基准电压界面
             {
                ChangeBaseVolt(POINT1);          //基准电压+0.1
             }
             else if(FaceReg==conFaceSetAddr)           //显示本机地址界面
             {
                SetSelfAddr(conAddr1);           //本机地址+1
             }
             else if(FaceReg==conFaceSetAmp)            //显示放大倍数界面
             {
             }                          
          }
          break;
       }
       //AD转换任务
       case task_ADConv: 
       {
          display();
          MainAdConv();
          break;
       }
       //时间达到1S任务
       case task_Interval_1s: 
       {
          display();
          if(flag_1Sec==1)
          {
             flag_1Sec=0;
             #ifdef DEBUG       //调试用
               OutPut=OutPut^(0xff);   //调试用
             #endif  //调试用
             for(tmpCtr=0;tmpCtr<ConChnNum;tmpCtr++)
             {
                if(Ctrl14013_ReadQ(tmpCtr)==0)   //应急时间未结束
                {
                   if((CtrlCharge[tmpCtr].FlagIsCharge==FALSE)&(CtrlCharge[tmpCtr].FlagIsStTest==TRUE))  //处于放电状态且开始试验
                      {
                         EmerTimeInc1s(tmpCtr);    //指定通道应急时间加1s
                         clrFlagEndEmerTime(tmpCtr);  //设定应急时间标志为未结束
                      }
                   else  //处于充电状态或未开始试验
                      {
                         resetEmerTime(tmpCtr);   //复位应急时间
                         #ifdef DEBUG       //调试用
                         DispBitData=0;    //调试用
                         #endif  //调试用
                      }
                }
                else    //应急时间结束
                {
                   if((CtrlCharge[tmpCtr].FlagIsCharge==FALSE)&(CtrlCharge[tmpCtr].FlagIsStTest==TRUE))  //处于放电状态且开始试验
                      {
                         setFlagEndEmerTime(tmpCtr);  //设定应急时间标志为结束
                         //存储应急时间
                         tmpInt16=getEmerTime(tmpCtr);
                         SaveChanEmerTime(tmpCtr,CtrlCharge[tmpCtr].disChargeNum,tmpInt16);
                         sendBuf[tmpCtr][0]=CtrlCharge[tmpCtr].disChargeNum;   //发送缓冲区,已计算的个数
                         sendBuf[tmpCtr][CtrlCharge[tmpCtr].disChargeNum*2+1]=lobyte(tmpInt16);
                         sendBuf[tmpCtr][CtrlCharge[tmpCtr].disChargeNum*2+2]=hibyte(tmpInt16);
                         //存储终止电压
                         SaveEmerVolt(tmpCtr,CtrlCharge[tmpCtr].disChargeNum,ADChnRe.ADMin[tmpCtr]);
                      }
                   else  //处于充电状态或未开始试验,此状态下应急时间的计算不应结束,若出现此态,应复位14013
                      {
                         Ctrl14013_Reset(tmpCtr);     //复位14013
                         clrFlagEndEmerTime(tmpCtr);  //设定应急时间标志为未结束
                         resetEmerTime(tmpCtr);   //复位应急时间
                         #ifdef DEBUG       //调试用
                         DispBitData=1;    //调试用
                         #endif             //调试用
                      }
                }
             }
             MainCtrlCharge();    //充放电控制
          }
          break;
       }
       //处理指令任务
       case task_DoInstru: 
       {
          display();
          DoInstru();
          break;
       }
       //更新显示缓冲区任务
       case task_UpDispBuf:
       {
          display();
          if(FaceReg==conFaceChDNum)
          {
             dispChDNum();     //显示充放电次数界面
          }
          else if(FaceReg==conFaceCDTime) 
          {
             dispChDTime();     //显示充放电时间界面
          }
          else if(FaceReg==conFaceEmerTime) 
          {
             dispEmerTime();     //显示应急时间界面
          }
          else if(FaceReg==conFaceEmerVolt) 
          {
             dispEmerVolt();     //显示终止电压界面
          }
          else if(FaceReg==conFaceSetBaseVolt) 
          {
             dispBaseVolt();     //显示基准电压界面
          }
          else if(FaceReg==conFaceSetAddr) 
          {
             dispSelfAddr();     //显示本机地址界面
          }
          else if(FaceReg==conFaceSetAmp) 
          {
             dispAmp();       //显示放大倍数界面
          }
          break;
       }
    }
    taskNo++;  //任务号加1
    if(taskNo==task_Num)
    {
       display();
       taskNo=task_Min;
    }
  }		
}






⌨️ 快捷键说明

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