📄 taskrecurrent.c
字号:
/*--------------文件信息--------------------------------------------------------------------------------
**文 件 名:
**创 建 人:
**最后修改日期:
**描 述:
**
**--------------历史版本信息----------------------------------------------------------------------------
** 修改人:
** 版 本:
** 日 期:
** 描 述:
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人:
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define DATA
#include"includes.h"
/*********************************************************************************************************
** 函数名称:
** 功能描述:
** 输 入:
** 输 出:
** 全局变量:
** 调用模块:
** 注 意:
** 作 者:
** 日 期:
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
unsigned char bdata PortAimg;
unsigned int ADCount;
sbit VCCE1 = PortAimg^0;
sbit VCCE3 = PortAimg^1;
sbit VCCE2 = PortAimg^2;
sbit EN422 = PortAimg^3;
sbit REL1E = PortAimg^4;
sbit REL2E = PortAimg^5;
sbit REL3E = PortAimg^6;
sbit REL4E = PortAimg^7;
sbit BEGIN_AD = P2^7;
sbit WATCHDOG = P2^6;
void TaskAD (void) _task_ 0
{
unsigned char i;
AUXR = 0x00;
MeasureI = 0;
MeasureU = 0;
MeasureT = 0;
ErrorState = WITHOUT_ERROR;
State = EepromReadByte(E2State);
if(State>3)
{
State = STOP;
AmountQ10S = 0;
EepromWriteWord(E2AmountQ10S ,(unsigned int)(AmountQ10S>>16) );
EepromWriteWord(E2AmountQ10S +2,(unsigned int)AmountQ10S );
LastTimeS = 0;
EepromWriteWord(E2LastTimeS ,(unsigned int)(LastTimeS>>16) );
EepromWriteWord(E2LastTimeS +2,(unsigned int)LastTimeS );
}
Address = EepromReadByte(E2Address);
Step = EepromReadByte(E2Step);
ProgramNo = EepromReadByte(E2ProgramNo);
RemainLoopTimes = EepromReadByte(E2RemainLoopTimes);
AmountQ10S = EepromReadWord(E2AmountQ10S);
AmountQ10S = AmountQ10S<<16;
AmountQ10S = AmountQ10S | EepromReadWord(E2AmountQ10S + 2);
LastTimeS = EepromReadWord(E2LastTimeS);
LastTimeS = LastTimeS<<16;
LastTimeS = LastTimeS | EepromReadWord(E2LastTimeS +2);
SetupCurrentDirection = EepromReadWord(E2SetupCurrentDirection);
Ub = EepromReadWordA(E2Ub);
Ib = EepromReadWordA(E2Ib);
Tb = EepromReadWordA(E2Tb);
Uk = EepromReadWordA(E2Uk);
Ik = EepromReadWordA(E2Ik);
Tk = EepromReadWordA(E2Tk);
DAk = EepromReadWordA(E2DAk);
DAb = EepromReadWordA(E2DAb);
SetupDA(0);
os_create_task (1);
os_create_task (2);
os_create_task (3);
os_create_task (4);
os_create_task (5);
for(i = 0;i<10;i++)
{
Ibuf5Second[i].Record = 4095;
Ibuf5Second[i].Sequence = i+1;
Ubuf5Second[i].Record = 4095;
Ubuf5Second[i].Sequence = i+1;
Tbuf5Second[i].Record = 4095;
Tbuf5Second[i].Sequence = i+1;
}
while (1)
{
WATCHDOG = !WATCHDOG;
BEGIN_AD = 0;
VCCE1 = 0;VCCE2 = 0;VCCE3 = 0;WriteOutXRAM(CPLD_PORT_A,PortAimg);
os_wait (K_TMO, 50/OS_MSEL_PER_TICKS, 0);
VCCE1 = 0;VCCE2 = 0;VCCE3 = 1;WriteOutXRAM(CPLD_PORT_A,PortAimg);
os_wait (K_TMO, 50/OS_MSEL_PER_TICKS, 0);
BEGIN_AD = 1;
os_wait (K_TMO, 50/OS_MSEL_PER_TICKS, 0);
ADCount = ReadOutXRAM(CPLD_ADCOUNT_HIGH);
ADCount = ADCount<<8;
ADCount = ADCount|ReadOutXRAM(CPLD_ADCOUNT_LOW);
IRealCount = ADCount;
IAverage5SecondCount = MidstStruct(Ibuf5Second, 10,IRealCount);
if(Debug)
{
MeasureI = ClaculateSub(IRealCount,Ib,Ik);
}
else
{
MeasureI = ClaculateSub(IAverage5SecondCount ,Ib,Ik);
}
BEGIN_AD = 0;
VCCE1 = 0;VCCE2 = 0;VCCE3 = 0; WriteOutXRAM(CPLD_PORT_A,PortAimg);
os_wait (K_TMO, 50/OS_MSEL_PER_TICKS, 0);
VCCE1 = 0;VCCE2 = 1;VCCE3 = 0; WriteOutXRAM(CPLD_PORT_A,PortAimg);
os_wait (K_TMO, 50/OS_MSEL_PER_TICKS, 0);
BEGIN_AD = 1;
os_wait (K_TMO, 50/OS_MSEL_PER_TICKS, 0);
ADCount = ReadOutXRAM(CPLD_ADCOUNT_HIGH);
ADCount = ADCount<<8;
ADCount = ADCount|ReadOutXRAM(CPLD_ADCOUNT_LOW);
URealCount = ADCount;
UAverage5SecondCount = MidstStruct(Ubuf5Second,10,URealCount);
MeasureU = ClaculateSub(UAverage5SecondCount ,Ub,Uk);
MeasureRealU = ClaculateSub(URealCount,Ub,Uk);
BEGIN_AD = 0;
VCCE1 = 0;VCCE2 = 0;VCCE3 = 0; WriteOutXRAM(CPLD_PORT_A,PortAimg);
os_wait (K_TMO, 50/OS_MSEL_PER_TICKS, 0);
VCCE1 = 1;VCCE2 = 0;VCCE3 = 0; WriteOutXRAM(CPLD_PORT_A,PortAimg);
os_wait (K_TMO, 50/OS_MSEL_PER_TICKS, 0);
BEGIN_AD = 1;
os_wait (K_TMO, 50/OS_MSEL_PER_TICKS, 0);
ADCount = ReadOutXRAM(CPLD_ADCOUNT_HIGH);
ADCount = ADCount<<8;
ADCount = ADCount|ReadOutXRAM(CPLD_ADCOUNT_LOW);
TRealCount = ADCount;
TAverage5SecondCount = MidstStruct(Tbuf5Second,10,TRealCount);
if(Debug)
{
MeasureTU = ClaculateSub(TRealCount,Tb,Tk);
}
else
{
MeasureTU = ClaculateSub(TAverage5SecondCount,Tb,Tk);
}
//计算温度传感器电压信号所对应的温度
if(MeasureTU<1000)
{
MeasureT = 0;
}
else if(MeasureTU>1000 && MeasureTU<5000)
{
MeasureT = (MeasureTU-1000)/4;
}
else
{
MeasureT = 999;
}
}//while(1)
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -