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

📄 taskrecurrent.c

📁 Keil单片机软件开发平台下的一个51系列单片机工程
💻 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 + -