3.4.2_プログラムリスト(THERMOLOG1_User.c)

修正箇所(自動生成ファイルに記述追加)は、以下の青色の箇所です。
#include "C:\\WIZ_C\\Ver12\\Projects\\THERMOLOG1\\THERMOLOG1_Auto.h"
#include <Strings.h>
#include <Delays.h>

#__config _CONFIG1H, 0x02
#__config _CONFIG1L, 0x00
#__config _CONFIG2H, 0x0E
#__config _CONFIG2L, 0x0E
#__config _CONFIG3H, 0x01
#__config _CONFIG3L, 0x00
#__config _CONFIG4H, 0x00
#__config _CONFIG4L, 0x81

unsigned char    dow[7][5] ={"Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."};
unsigned char    sampling_cycle[4][6] ={"1min ","15min","30min","60min"};
unsigned char    out_str1[17], out_str2[17], disp_Work1[3];
unsigned char    Receive_str[32], Transmit_str[32];
unsigned long    TL_PV;
unsigned long    TL_PV_Work, TL_PV_Work1, TL_PV_Work2;
WORD        TL_AJ_TEMP, TL_AJ_ADTEMP, TL_SAMPLING_CYCLE;
WORD        TL_AJ_TEMP_Work, TL_AJ_ADTEMP_Work, TL_SAMPLING_CYCLE_Work;
WORD        TL_Work1, TL_Work2;
WORD        EE_Work1;
WORD        Years, Months, Days, Years_Work, Months_Work, Days_Work;
WORD        Hours_Work, Mins_Work, Secs_Work, Day_Work;
BYTE        dt1, dt2, dt3, dt4, dt5, dt6;
int        SetModeNo, StrCount, CAL_Work;
bit        EE_Check, EE_SetMode, EE_SetMode_Use, EE_SetTempAjMode;
bit        CR_exist,LF_exist;
bit        SW1_work, SW2_work, SW3_work, SW4_work;

void TxStr(char *Transmit_str);
void CmdProc();

//
// This file includes all user definable routines. It may be changed at will as
// it will not be regenerated once the application has been generated for the
// first time.
//

//*******************************************************************************
//
// Insert your interrupt handling code if required here.
// Note quick interrupts are used so code must be simple
// See the manual for details of quick interrupts.
//

void UserInterrupt()
{
    // Insert your code here

#asmline goto UserIntReturn    ; PIC Assembler - go back to interrupt routine
}


//*******************************************************************************
//
// Insert your initialisation code if required here.
// Note that when this routine is called Interrupts will not be enabled - the
// Application Designer will enable them before the main loop
//

void UserInitialise()
{
    dt1 = ReadEEData(0);        //temp(adjust value)
    dt2 = ReadEEData(1);
    EE_Work1 = (WORD)dt2 << 8;
    TL_AJ_TEMP = EE_Work1 | dt1;
    dt1 = ReadEEData(2);        //ad temp(adjust value)
    dt2 = ReadEEData(3);
    EE_Work1 = (WORD)dt2 << 8;
    TL_AJ_ADTEMP = EE_Work1 | dt1;
    dt1 = ReadEEData(4);        //sampling cycle
    dt2 = ReadEEData(5);
    EE_Work1 = (WORD)dt2 << 8;
    TL_SAMPLING_CYCLE = EE_Work1 | dt1;

    if(TL_AJ_TEMP > 650)
        EE_Check = 1;
    if(TL_AJ_ADTEMP > 1023)
        EE_Check = 1;
    if(TL_SAMPLING_CYCLE > 5)
        EE_Check = 1;
    if(EE_Check)
    {
        TL_AJ_TEMP = 650;
        TL_AJ_ADTEMP = 1010;
        TL_SAMPLING_CYCLE = 0;
        dt1 = TL_AJ_TEMP & 0x00FF;
        dt2 = TL_AJ_TEMP >> 8;
        dt3 = TL_AJ_ADTEMP & 0x00FF;
        dt4 = TL_AJ_ADTEMP >> 8;
        dt5 = TL_SAMPLING_CYCLE & 0x00FF;
        dt6 = TL_SAMPLING_CYCLE >> 8;
        WriteEEData(0,dt1);
        Wait(100);
        WriteEEData(1,dt2);
        Wait(100);
        WriteEEData(2,dt3);
        Wait(100);
        WriteEEData(3,dt4);
        Wait(100);
        WriteEEData(4,dt5);
        Wait(100);
        WriteEEData(5,dt6);
        Wait(100);
    }

    Years = 2001;
    Months = 1;
    Days = 1;

    LCDClear();        
    sprintf(disp_Work1," ");        
    ADCON0 |= (1<<GO);
}

//*******************************************************************************
//
// Insert your main loop code if required here. This routine will be called
// as part of the main loop code
//

void UserLoop()
{
    if(!PD.B2)        //Mode key
    {
        if(!SW1_work)
        {
            SW1_work = 1;
            SetModeNo = 0;
            if(EE_SetMode)
            {
                EE_SetMode = 0;
                EE_SetMode_Use = 0;
            }
            else
            {
                EE_SetMode = 1;
                EE_SetMode_Use = 1;
                LCDClear();
                Wait(500);
                sprintf(out_str1,"SETTING MODE ");
                LCDPrintAt(0,0);
                LCDString(out_str1);
                Years_Work = Years;
                Months_Work = Months;
                Days_Work = Days;
                Hours_Work = Hours;
                Mins_Work = Mins;
                Secs_Work = Secs;
                Day_Work = Day;
                TL_SAMPLING_CYCLE_Work = TL_SAMPLING_CYCLE;
            }
        }
    }
    else
        SW1_work = 0;

    if(!PC.B5)        //Jumper SW
        EE_SetTempAjMode = 1;
    else
        EE_SetTempAjMode = 0;

    if(EE_SetMode_Use)
    {                                                        
        while(EE_SetMode_Use)
        {
            if(!PD.B6)        //left key
            {
                SetModeNo = SetModeNo - 1;
                if(SetModeNo < 0)
                     SetModeNo = 7;
                Years_Work = Years;
                Months_Work = Months;
                Days_Work = Days;
                Hours_Work = Hours;
                Mins_Work = Mins;
                Secs_Work = Secs;
                Day_Work = Day;
            }            
            if(!PD.B7)        //right key
            {
                SetModeNo = SetModeNo + 1;
                if(SetModeNo > 7)
                     SetModeNo = 0;
                Years_Work = Years;
                Months_Work = Months;
                Days_Work = Days;
                Hours_Work = Hours;
                Mins_Work = Mins;
                Secs_Work = Secs;
                Day_Work = Day;
            }
            if(SetModeNo == 0)    //Year
            {
                if(!PD.B4)    //Up Key
                {
                    Years_Work = Years_Work + 1;
                    if(Years_Work > 2100)
                        Years_Work = 2001;
                }
                if(!PD.B5)    //Down key
                {
                    Years_Work = Years_Work - 1;
                    if(Years_Work < 2001)
                        Years_Work = 2100;
                }
                sprintf(out_str2,"Year:%04d ",Years_Work);
            }            
            if(SetModeNo == 1)    //Month
            {
                if(!PD.B4)    //Up Key
                {
                    Months_Work = Months_Work + 1;
                    if(Months_Work > 12)
                        Months_Work = 1;
                }
                if(!PD.B5)    //Down key
                {
                    Months_Work = Months_Work - 1;
                    if(Months_Work < 1)
                        Months_Work = 12;
                }
                    sprintf(out_str2,"Month:%02d ",Months_Work);
            }            
            if(SetModeNo == 2)    //Day
            {
                if(!PD.B4)    //Up Key
                {
                    Days_Work = Days_Work + 1;
                    if(Days_Work > 31)
                        Days_Work = 1;
                }
                if(!PD.B5)    //Down key
                {
                    Days_Work = Days_Work - 1;
                    if(Days_Work < 1)
                        Days_Work = 31;
                }
                sprintf(out_str2,"Day:%02d ",Days_Work);
            }            
            if(SetModeNo == 3)    //Hour
            {
                if(!PD.B4)    //Up Key
                {
                    Hours_Work = Hours_Work + 1;
                    if(Hours_Work > 23)
                        Hours_Work = 0;
                }
                if(!PD.B5)    //Down key
                {
                    if(Hours_Work == 0)
                        Hours_Work = 23;
                    else
                        Hours_Work = Hours_Work - 1;
                }
                sprintf(out_str2,"Hour:%02d ",Hours_Work);
            }            
            if(SetModeNo == 4)    //Minute
            {
                if(!PD.B4)    //Up Key
                {
                    Mins_Work = Mins_Work + 1;
                    if(Mins_Work > 59)
                        Mins_Work = 0;
                }
                if(!PD.B5)    //Down key
                {
                    if(Mins_Work == 0)
                        Mins_Work = 59;
                    else
                        Mins_Work = Mins_Work - 1;
                }
                sprintf(out_str2,"Minute:%02d ",Mins_Work);
            }            
            if(SetModeNo == 5)    //Second
            {
                if(!PD.B4)    //Up Key
                {
                    Secs_Work = Secs_Work + 1;
                    if(Secs_Work > 59)
                        Secs_Work = 0;
                }
                if(!PD.B5)    //Down key
                {
                    if(Secs_Work == 0)
                        Secs_Work = 59;
                    else
                        Secs_Work = Secs_Work - 1;
                }
                sprintf(out_str2,"Second:%02d ",Secs_Work);
            }            
            if(SetModeNo == 6)    //Week
            {
                if(!PD.B4)    //Up Key
                {
                    Day_Work = Day_Work + 1;
                    if(Day_Work > 6)
                        Day_Work = 0;
                }
                if(!PD.B5)    //Down key
                {
                    if(Day_Work == 0)
                        Day_Work = 6;
                    else
                        Day_Work = Day_Work - 1;
                }                                            
                sprintf(out_str2,"Week:%04s ",dow[Day_Work]);
            }            
            if(SetModeNo == 7)    //Samplng Cycle
            {
                if(!PD.B4)    //Up Key
                {
                    TL_SAMPLING_CYCLE_Work = TL_SAMPLING_CYCLE_Work + 1;
                    if(TL_SAMPLING_CYCLE_Work > 3)
                        TL_SAMPLING_CYCLE_Work = 0;
                }
                if(!PD.B5)    //Down key
                {
                    if(TL_SAMPLING_CYCLE_Work == 0)
                        TL_SAMPLING_CYCLE_Work = 3;
                    else
                        TL_SAMPLING_CYCLE_Work = TL_SAMPLING_CYCLE_Work - 1;
                }
                sprintf(out_str2,"Sampling:%05s ",sampling_cycle[TL_SAMPLING_CYCLE_Work]);
            }            
             LCDPrintAt(0,1);
            LCDString(out_str2);
            Wait(500);

            if(!PD.B3)        //SET key
            {
                sprintf(out_str2,"DATA WRITING. ");
                LCDPrintAt(0,1);
                LCDString(out_str2);
                if(SetModeNo == 0)    //Year
                    Years = Years_Work;
                if(SetModeNo == 1)    //Month
                    Months = Months_Work;
                if(SetModeNo == 2)    //Day
                    Days = Days_Work;
                if(SetModeNo == 3)    //Hour
                    Hours = Hours_Work;
                if(SetModeNo == 4)    //Minute
                    Mins = Mins_Work;
                if(SetModeNo == 5)    //Second
                    Secs = Secs_Work;
                if(SetModeNo == 6)    //Week
                    Day = Day_Work;
                if(SetModeNo >= 0 )
                    if(SetModeNo <= 6)
                        Wait(200);
                if(SetModeNo == 7)    //Samplng Cycle
                {
                    dt1 = TL_SAMPLING_CYCLE_Work & 0x00FF;
                    dt2 = TL_SAMPLING_CYCLE_Work >> 8;
                    WriteEEData(4,dt1);
                    Wait(100);
                    WriteEEData(5,dt2);
                    Wait(100);
                    TL_SAMPLING_CYCLE = TL_SAMPLING_CYCLE_Work;
                }
                Wait(300);
            }
            if(!PD.B2)
            {
                LCDClear();
                EE_SetMode_Use = 0;
                SW1_work = 0;
            }
        }
    }
    if(!PC.B5)
    {
        if(EE_SetTempAjMode)
        {
            sprintf(out_str1,"PRESENT TEMP SET");
            LCDPrintAt(0,0);
            LCDString(out_str1);
            TL_AJ_TEMP_Work = TL_AJ_TEMP;
        }
        while(!PC.B5 && EE_SetTempAjMode)
        {
            TL_AJ_ADTEMP_Work = (WORD)ADRESH << 8;
            TL_AJ_ADTEMP_Work = TL_AJ_ADTEMP_Work | ADRESL;
            ADCON0 |= (1<<GO);
            Wait(200);
            
            if(!PD.B4)        //UP Key
            {
                TL_AJ_TEMP_Work = TL_AJ_TEMP_Work + 1;
                if(TL_AJ_TEMP_Work > 650)
                    TL_AJ_TEMP_Work = 0;
            }
            if(!PD.B5)        //DOWN key
            {
                if(TL_AJ_TEMP_Work == 0)
                    TL_AJ_TEMP_Work = 650;
                else
                    TL_AJ_TEMP_Work = TL_AJ_TEMP_Work - 1;
            }
            TL_Work1 = TL_AJ_TEMP_Work / 10;
            TL_Work2 = TL_AJ_TEMP_Work % 10;
            disp_Work1 = 0xdf;
            sprintf(out_str2,"%02d.%01d%sC(AD:%04d) ",TL_Work1,TL_Work2,disp_Work1,TL_AJ_ADTEMP_Work);    
             LCDPrintAt(0,1);
            LCDString(out_str2);
            
            if(!PD.B3)        //SET key
            {
                sprintf(out_str2,"TEMP WRITING. ");
                LCDPrintAt(0,1);
                    LCDString(out_str2);
                dt1 = TL_AJ_TEMP_Work & 0x00FF;
                dt2 = TL_AJ_TEMP_Work >> 8;
                dt3 = TL_AJ_ADTEMP_Work & 0x00FF;
                dt4 = TL_AJ_ADTEMP_Work >> 8;
                WriteEEData(0,dt1);
                Wait(100);
                WriteEEData(1,dt2);
                Wait(100);
                WriteEEData(2,dt3);
                Wait(100);
                WriteEEData(3,dt4);
                Wait(100);
                TL_AJ_TEMP = TL_AJ_TEMP_Work;
                TL_AJ_ADTEMP = TL_AJ_ADTEMP_Work;
                Wait(200);
                EE_SetTempAjMode = 0;
            }
        }
    }

}

//
// User occurrence code
//

//
// Occurrence - A/D Conversion complete
//

void ad_data_t()
{
    TL_PV_Work = (unsigned long)ADRESH << 8;
    TL_PV_Work = TL_PV_Work | ADRESL;
    TL_PV = TL_PV_Work * TL_AJ_TEMP / TL_AJ_ADTEMP;
}

void timer_1sec()
{
    if((Hours == 0) && (Mins == 0) && (Secs == 0))
    {
        Days = Days + 1;
        switch(Months)
        {
            case 1: CAL_Work = 1; break;
            case 2: CAL_Work = 3; break;
            case 3: CAL_Work = 1; break;
            case 4: CAL_Work = 2; break;
            case 5: CAL_Work = 1; break;
            case 6: CAL_Work = 2; break;
            case 7: CAL_Work = 1; break;
            case 8: CAL_Work = 1; break;
            case 9: CAL_Work = 2; break;
            case 10: CAL_Work = 1; break;
            case 11: CAL_Work = 2; break;
            case 12: CAL_Work = 1; break;
        }
        if(CAL_Work == 1)
        {
            if(Days > 31)
            {
                if(Months == 12)
                {
                    Months = 1;
                    Years = Years + 1;
                }
                else
                    Months = Months + 1;
                Days = 1;
            }
        }
        if(CAL_Work == 2)
        {
            if(Days > 30)
            {
                Months = Months + 1;
                Days = 1;
            }
        }
        if(CAL_Work == 3)
        {
            if(Days > 28)
            {
                if((Years % 4 == 0) && (Years % 100 != 0) || (Years % 400 == 0))
                {
                    if(Days > 29)
                    {
                        Months = Months + 1;
                        Days = 1;
                    }
                }
                else
                {
                    if(Days > 28)
                    {
                        Months = Months + 1;
                        Days = 1;
                    }
                }
            }
        }    
    }
    if(!EE_SetMode && !EE_SetTempAjMode && PC.B5)
    {
        sprintf(out_str1,"%04d/%02d/%02d %04s",Years,Months,Days,dow[Day]);
        TL_PV_Work1 = TL_PV / 10;
        TL_PV_Work2 = TL_PV % 10;
        disp_Work1 = 0xdf;
        sprintf(out_str2,"%02d:%02d:%02d %02ld.%01ld%sC",Hours,Mins,Secs,TL_PV_Work1,TL_PV_Work2,disp_Work1);
        LCDPrintAt(0,0);
        LCDString(out_str1);
        LCDPrintAt(0,1);
        LCDString(out_str2);
    }

    if (TL_SAMPLING_CYCLE == 0)    //1min
    {
        if(Secs == 0)
        {

        }

    }
    if (TL_SAMPLING_CYCLE == 1)    //15min
    {
        if(((Mins == 0) ||(Mins == 15) || (Mins == 30) || (Mins == 45)) && (Secs == 0))
        {
        
        }
    }
    if (TL_SAMPLING_CYCLE == 2)    //30min
    {
        if(((Mins == 0) || (Mins == 30)) && (Secs == 0))
        {
        
        }
    }
    if (TL_SAMPLING_CYCLE == 3)    //60min
    {
        if((Mins == 0) && (Secs == 0))
        {
        
        }
    }
    ADCON0 |= (1<<GO);
}

void timer_1min()
{

}

void timer_1hour()
{

}

void timer_1day()
{

}

void TxStr(char *Transmit_str)
{
    int i;
    for(i=0; i<15; i++)
    {
        if(Transmit_str[i] != 0)
            AddTx(Transmit_str[i]);
        else
            break;
    }
}

void CmdProc()
{
    if(strcmp(Receive_str,"XXXXXXXX")==0)
    {
    
    }

    strcpy(Receive_str,"");
}

void GetRx()
{
    BYTE ch;
    if(GetRxSize() > 0)
    {
        ch = WaitRx();
        if(ch == '\r')        //'\r'(0x0D)
            CR_exist = 1;
        if(ch == '\n')        //'\n'(0x0A)
            LF_exist = 1;
        if(!(CR_exist | LF_exist))
        {
            Receive_str[StrCount] = ch;
            StrCount = StrCount + 1;
        }
        if(CR_exist & LF_exist)
        {
            Receive_str[StrCount] = 0;    //NULL
            StrCount = 0;
            CR_exist = 0;
            LF_exist = 0;
            CmdProc();
        }
    }
}





トップページヘもどる