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(); } } } トップページヘもどる |