main.c
来自「采用PICC18编写的单片机源代码」· C语言 代码 · 共 484 行 · 第 1/2 页
C
484 行
//显示本机地址
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==conFaceEmerTime) //显示应急时间界面
{
for(tmpCtr=0;tmpCtr<ConADChnNum;tmpCtr++)
{
ADChnRe.isStartADSap[tmpCtr]=TRUE; //开始采样标志=TRUE
Ctrl14013_Reset(tmpCtr); //14013复位
}
}
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==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==conFaceEmerTime) //显示应急时间界面
{
for(tmpCtr=0;tmpCtr<ConADChnNum;tmpCtr++)
{
ADChnRe.isStartADSap[tmpCtr]=FALSE;
}
}
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(ADChnRe.isStartADSap[tmpCtr]==TRUE) //若开始采样
{
EmerTimeInc1s(tmpCtr); //指定通道应急时间加1s
clrFlagEndEmerTime(tmpCtr); //设定应急时间标志为未结束
sendBuf[tmpCtr][0]=0; //发送缓冲区,结束标志=0
sendBuf[tmpCtr][1]=lobyte(EmerTime[tmpCtr].minute); //应急时间
sendBuf[tmpCtr][2]=hibyte(EmerTime[tmpCtr].minute);
sendBuf[tmpCtr][3]=lobyte(EmerVolt[tmpCtr][0]); //终止电压
sendBuf[tmpCtr][4]=hibyte(EmerVolt[tmpCtr][0]);
}
}
else //应急时间结束
{
setFlagEndEmerTime(tmpCtr); //设定应急时间标志为结束
SaveEmerVolt(tmpCtr,ADChnRe.ADMin[tmpCtr]);
sendBuf[tmpCtr][1]=0; //发送缓冲区,结束标志=0
sendBuf[tmpCtr][1]=lobyte(EmerTime[tmpCtr].minute); //应急时间
sendBuf[tmpCtr][2]=hibyte(EmerTime[tmpCtr].minute);
sendBuf[tmpCtr][3]=lobyte(EmerVolt[tmpCtr][0]); //终止电压
sendBuf[tmpCtr][4]=hibyte(EmerVolt[tmpCtr][0]);
}
}
}
break;
}
//处理指令任务
case task_DoInstru:
{
display();
DoInstru();
break;
}
//更新显示缓冲区任务
case task_UpDispBuf:
{
display();
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 + =
减小字号Ctrl + -
显示快捷键?