Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ////////////////////////////////////////////////////////////////////////////////////
- // Uwaga! Przed kompilacj№ programu dopasowaж doі№czany plik #inlude "Schemat?.h" //
- ////////////////////////////////////////////////////////////////////////////////////
- // Program testowy do obiektu "SchematA"
- /*
- void test_A(void)
- {
- Z1 = aK1 ? 1 : 0; // Otwуrz Z1 jeњli naciњniкty K1
- Z2 = aK2 ? 1 : 0; // Otwуrz Z2 jeњli naciњniкty K2
- Z3 = aK3 ? 1 : 0; // Otwуrz Z3 jeњli naciњniкty K3
- Z4 = aK4 ? 1 : 0; // Otwуrz Z4 jeњli naciњniкty K4
- Z5 = 0x1 ? 1 : 0; // Otwуrz Z5
- M = 0x1 ? 1 : 0; // Wі№cz M (mieszanie)
- G = 0x0 ? 1 : 0; // Wyі№cz G (grzanie)
- sprintf(buf,"K1=%dK2=%dK3=%dK4=%d ",(int)aK1,(int)aK2,(int)aK3,(int)aK4);
- LCD_xy(1,1); LCD_puts(buf);
- sprintf(buf,"L1=%dL2=%dL3=%dL4=%d ",(int)L1,(int)L2,(int)L3,(int)L4);
- LCD_xy(1,2); LCD_puts(buf);
- }
- */
- ////////////////////////////////////////////////////////////////////////////////////
- /*
- // Program testowy do obiektu "SchematB"
- void test_B(void)
- {
- Z1 = aK1 ? 1 : 0; // Otwуrz Z1 jeњli naciњniкty K1
- Z2 = aK2 ? 1 : 0; // Otwуrz Z2 jeњli naciњniкty K2
- Z3 = aK3 ? 1 : 0; // Otwуrz Z3 jeњli naciњniкty K3
- Z4 = aK4 ? 1 : 0; // Otwуrz Z4 jeњli naciњniкty K4
- Z5 = 0x1 ? 1 : 0; // Otwуrz Z5
- Z6 = 0x1 ? 1 : 0; // Otwуrz Z6
- Z7 = 0x1 ? 1 : 0; // Otwуrz Z7
- Z8 = 0x1 ? 1 : 0; // Otwуrz Z8
- sprintf(buf,"K1=%dK2=%dK3=%dK4=%d ",(int)aK1,(int)aK2,(int)aK3,(int)aK4);
- LCD_xy(1,1); LCD_puts(buf);
- sprintf(buf,"L1=%dL2=%dL3=%dL4=%d ",(int)L1,(int)L2,(int)L3,(int)L4);
- LCD_xy(1,2); LCD_puts(buf);
- }
- */
- ////////////////////////////////////////////////////////////////////////////////////
- /*
- // Program testowy do obiektu "SchematC"
- void test_C(void)
- {
- Z1 = aK1 ? 1 : 0; // Otwуrz Z1 jeњli naciњniкty K1
- Z2 = aK2 ? 1 : 0; // Otwуrz Z2 jeњli naciњniкty K2
- Z3 = aK3 ? 1 : 0; // Otwуrz Z3 jeњli naciњniкty K3
- Z4 = aK4 ? 1 : 0; // Otwуrz Z4 jeњli naciњniкty K4
- Z5 = 0x1 ? 1 : 0; // Otwуrz Z5
- M = 0x1 ? 1 : 0; // Wі№cz M (mieszanie)
- G = 0x0 ? 1 : 0; // Wyі№cz G (grzanie)
- sprintf(buf,"K1=%dK2=%dK3=%dK4=%d ",(int)aK1,(int)aK2,(int)aK3,(int)aK4);
- LCD_xy(1,1); LCD_puts(buf);
- sprintf(buf,"L1=%dL2=%dL3=%dL4=%d ",(int)L1,(int)L2,(int)L3,(int)L4);
- LCD_xy(1,2); LCD_puts(buf);
- }
- */
- //////////////////////////////////////////////////////////////////////////////////
- // Tryby pracy
- enum TRYB_PRACY{ Czasowy, Zliczajacy, Przyciskowy };
- TRYB_PRACY tryb = Czasowy;
- TRYB_PRACY nowyTryb = Czasowy;
- // Tryb czasowy ---------------
- int T1 = 100;
- int T2 = 200;
- int TPrze = 40;
- int TPrzeLCD = TPrze; // używamy do zmiany czasu Tprze przy obsludze LCD
- int const Twait = 130;
- int tim1 = T1;
- int tim2 = TPrze;
- char stanCzasowy = 1;
- // Tryb zliczający ----------------
- char stanZliczajacy = 1;
- char lauta = 3;
- char pauta = 5;
- char licznik, i;
- int timZliczajacy;
- char pX1, pX2, pX3, pX4;
- // Tryb przyciskowy -------------
- char KL1, KL2, stanPrzyciskowy = 1;
- int timPrzyciskowy;
- // Zmienne LCD
- char _pK1, _pK2, _pK3, _pK4;
- char stanLCD = 1, pracuje;
- // Funckje
- bool Zmieniony()
- {
- return tryb == nowyTryb;
- }
- void mogeZmienic()
- {
- if (!Zmieniony())
- tryb = nowyTryb;
- }
- void TrybCzasowy()
- {
- switch (stanCzasowy)
- {
- case 1:
- Z1 = 1; Z2 = 0;
- if (X2) { TPrze = TPrzeLCD; tim2 = TPrze; }
- if (!tim1) { tim1 = Twait; stanCzasowy = 2; }
- else if (!tim2) { tim1 = Twait - TPrze; stanCzasowy = 2; }
- break;
- case 2:
- Z1 = 0; Z2 = 0;
- if (!tim1) { tim1 = T2; tim2 = TPrze; mogeZmienic(), stanCzasowy = 3; }
- break;
- case 3:
- Z1 = 0; Z2 = 1;
- if (X1) { TPrze = TPrzeLCD; tim2 = TPrze; }
- if (!tim1) { tim1 = Twait; stanCzasowy = 4; }
- else if (!tim2) { tim1 = Twait - TPrze; stanCzasowy = 4; }
- break;
- case 4:
- Z1 = 0; Z2 = 0;
- if (!tim1) { tim1 = T1; tim2 = TPrze; mogeZmienic(), stanCzasowy = 1; }
- break;
- }
- if (tim1) --tim1;
- if (tim2) --tim2;
- }
- void trybPrzyciskowy(void)
- {
- switch (stanPrzyciskowy)
- {
- case 1:
- mogeZmienic();
- Z1 = 0; Z2 = 0;
- if (KL1) stanPrzyciskowy = 2;
- else if (KL2) stanPrzyciskowy = 4;
- break;
- case 2:
- Z1 = 1; Z2 = 0;
- if (!KL1 && !X2) { timPrzyciskowy = 150; stanPrzyciskowy = 3; }
- else if (!KL1 && X2) { stanPrzyciskowy = 6; }
- break;
- case 3:
- Z1 = 0; Z2 = 0;
- if (KL1) stanPrzyciskowy = 2;
- else if (!timPrzyciskowy) stanPrzyciskowy = 1;
- break;
- case 4:
- Z1 = 0; Z2 = 1;
- if (!KL2 && !X1) { timPrzyciskowy = 150; stanPrzyciskowy = 5; }
- else if (!KL2 && X1) { stanPrzyciskowy = 7; }
- break;
- case 5:
- Z1 = 0; Z2 = 0;
- if (KL2) stanPrzyciskowy = 4;
- else if (!timPrzyciskowy) stanPrzyciskowy = 1;
- break;
- case 6:
- Z1 = 1; Z2 = 0;
- if (!X2) { timPrzyciskowy = 150; stanPrzyciskowy = 3; }
- break;
- case 7:
- Z1 = 0; Z2 = 1;
- if (!X1) { timPrzyciskowy = 150; stanPrzyciskowy = 5; }
- break;
- }
- if (timPrzyciskowy) --timPrzyciskowy;
- }
- void trybZliczajacy(void)
- {
- switch (stanZliczajacy)
- {
- case 1:
- Z1 = 1; Z2 = 0;
- if (!X2 && pX2) ++licznik, ++i;
- if (!X4 && pX4) --licznik;
- if (i == lauta)
- {
- i = 0; stanZliczajacy = 2;
- }
- break;
- case 2:
- Z1 = 0; Z2 = 0;
- if (!X4 && pX4) --licznik;
- if (!licznik) { timZliczajacy = 40; stanZliczajacy = 3; }
- break;
- case 3:
- Z1 = 0; Z2 = 0;
- if (!timZliczajacy) mogeZmienic(), stanZliczajacy = 4;
- break;
- case 4:
- Z1 = 0; Z2 = 1;
- if (!X1 && pX1) ++licznik, ++i;
- if (!X3 && pX3) --licznik;
- if (i == pauta)
- {
- i = 0; stanZliczajacy = 5;
- }
- break;
- case 5:
- Z1 = 0; Z2 = 0;
- if (!X3 && pX3) --licznik;
- if (!licznik) { timZliczajacy = 40; stanZliczajacy = 6; }
- break;
- case 6:
- Z1 = 0; Z2 = 0;
- if (!timZliczajacy) mogeZmienic(), stanZliczajacy = 1;
- break;
- }
- if (timZliczajacy) --timZliczajacy;
- pX1 = X1;
- pX2 = X2;
- pX3 = X3;
- pX4 = X4;
- }
- void test_D(void)
- {
- if (tryb == Czasowy)
- {
- TrybCzasowy();
- }
- else if (tryb == Zliczajacy)
- {
- trybZliczajacy();
- }
- else if (tryb == Przyciskowy)
- {
- trybPrzyciskowy();
- }
- pracuje = Zmieniony() ? ' ' : '*';
- switch (stanLCD)
- {
- case 1:
- sprintf(buf, "Tryb 1(czas.)-1%c", pracuje);
- LCD_xy(1, 1); LCD_puts(buf);
- sprintf(buf, "T1=%.0fs ", (float)(T1/10));
- LCD_xy(1, 2); LCD_puts(buf);
- if (aK1) ++T1; if (T1 > 500) T1 = 500;
- if (aK2) --T1; if (T1 < 50) T1 = 50;
- if (aK3 && !_pK3) stanLCD = 2;
- if (aK4 && !_pK4) { stanLCD = 4; nowyTryb = Zliczajacy; }
- break;
- case 2:
- sprintf(buf, "Tryb 1(czas.)-2%c", pracuje);
- LCD_xy(1, 1); LCD_puts(buf);
- sprintf(buf, "T2=%.0fs ", (float)(T2/10));
- LCD_xy(1, 2); LCD_puts(buf);
- if (aK1) ++T2; if (T2 > 500) T2 = 500;
- if (aK2) --T2; if (T2 < 50) T2 = 50;
- if (aK3 && !_pK3) stanLCD = 3;
- if (aK4 && !_pK4) { stanLCD = 4; nowyTryb = Zliczajacy; }
- break;
- case 3:
- sprintf(buf, "Tryb 1(czas.)-3%c", pracuje);
- LCD_xy(1, 1); LCD_puts(buf);
- sprintf(buf, "TPrze=%.0fs ", (float)(TPrzeLCD / 10));
- LCD_xy(1, 2); LCD_puts(buf);
- if (aK1) ++TPrzeLCD; if (TPrzeLCD > 100) TPrzeLCD = 100;
- if (aK2) --TPrzeLCD; if (TPrzeLCD < 20) TPrzeLCD = 20;
- if (aK3 && !_pK3) stanLCD = 1;
- if (aK4 && !_pK4) { stanLCD = 4; nowyTryb = Zliczajacy; }
- break;
- case 4:
- sprintf(buf, "Tryb 2(zli.)-1 %c", pracuje);
- LCD_xy(1, 1); LCD_puts(buf);
- sprintf(buf, "LA=%d ", (int)lauta);
- LCD_xy(1, 2); LCD_puts(buf);
- if (aK1) ++lauta; if (lauta > 10) lauta = 10;
- if (aK2) --lauta; if (lauta < 1) lauta = 1;
- if (aK3 && !_pK3) stanLCD = 5;
- if (aK4 && !_pK4) { stanLCD = 6; nowyTryb = Przyciskowy; }
- break;
- case 5:
- sprintf(buf, "Tryb 2(zli.)-2 %c", pracuje);
- LCD_xy(1, 1); LCD_puts(buf);
- sprintf(buf, "PA=%d ", (int)pauta);
- LCD_xy(1, 2); LCD_puts(buf);
- if (aK1) ++pauta; if (pauta > 10) pauta = 10;
- if (aK2) --pauta; if (pauta < 1) pauta = 1;
- if (aK3 && !_pK3) stanLCD = 4;
- if (aK4 && !_pK4) { stanLCD = 6; nowyTryb = Przyciskowy; }
- break;
- case 6:
- sprintf(buf, "Tryb 3(przy.)-1%c", pracuje);
- LCD_xy(1, 1); LCD_puts(buf);
- sprintf(buf, " SL=%d SP=%d ", (int)Z1, (int)Z2);
- LCD_xy(1, 2); LCD_puts(buf);
- KL1 = aK1;
- KL2 = aK2;
- if (aK4 && !_pK4) { stanLCD = 1; nowyTryb = Czasowy; }
- break;
- }
- _pK1 = aK1;
- _pK2 = aK2;
- _pK3 = aK3;
- _pK4 = aK4;
- }
- ////////////////////////////////////////////////////////////////////////////////////
- /*
- // Program testowy do obiektu "SchematE"
- void test_E(void)
- {
- Z1 = aK1 ? 1 : 0; // Otwуrz Z1 jeњli naciњniкty K1
- Z2 = aK2 ? 1 : 0; // Otwуrz Z2 jeњli naciњniкty K2
- sprintf(buf,"K1=%dK2=%dK3=%dK4=%d ",(int)aK1,(int)aK2,(int)aK3,(int)aK4);
- LCD_xy(1,1); LCD_puts(buf);
- sprintf(buf,"L1=%dL2=%dL3=%dL4=%d ",(int)L1,(int)L2,(int)L3,(int)L4);
- LCD_xy(1,2); LCD_puts(buf);
- }
- */
- ////////////////////////////////////////////////////////////////////////////////////
- /*
- // Program testowy do obiektu "SchematF"
- char tryb = 1; // Stan sterownika (AUTO=1/MAN=0)
- double r=0.0, u=0.0, y=0.0, e=0.0, um=0;
- void test_F(void)
- {
- y=(float)Y4/32767; // Odczyt przetwornika A/C
- if(aK1&&!pK1) u=u>0?0:0.5; // Przeі№czanie trybu pracy regulatora
- U1 = (int)(u*32767); // Wysіanie na przetwornik C/A
- R = (int)(r*32767); // Wysіanie na przetwornik C/A
- sprintf(buf,"r=%4.2fu=%4.2fy=%4.2f ",r,u,y);
- LCD_xy(1,1); LCD_puts(buf);
- sprintf(buf,"%c: ",tryb?'A':'M');
- LCD_xy(1,2); LCD_puts(buf);
- }
- */
- ////////////////////////////////////////////////////////////////////////////////////
- /*
- // Program testowy do obiektu "SchematG"
- void test_G(void)
- {
- Z1 = Z2 = aK1 ? 1 : 0; // Wі№cz Z1 i Z2 jeњli naciњniкty K1
- Z3 = Z4 = aK2 ? 1 : 0; // Wі№cz Z3 i Z4 jeњli naciњniкty K2
- Z5 = Z6 = aK3 ? 1 : 0; // Wі№cz Z5 i Z6 jeњli naciњniкty K3
- Z7 = Z8 = aK4 ? 1 : 0; // Wі№cz Z7 i Z8 jeњli naciњniкty K4
- sprintf(buf,"K1=%dK2=%dK3=%dK4=%d ",(int)aK1,(int)aK2,(int)aK3,(int)aK4);
- LCD_xy(1,1); LCD_puts(buf);
- sprintf(buf,"L1=%dL2=%dL3=%dL4=%d ",(int)L1,(int)L2,(int)L3,(int)L4);
- LCD_xy(1,2); LCD_puts(buf);
- }
- */
- ////////////////////////////////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement