- #define _CRT_SECURE_NO_WARNINGS
- #define sek 250 // SP-AVR: 1 sekunda = 250*4ms (200 przerwań po 4ms)
- volatile int tim1=0; // Odmierzanie czasu w przerwaniu int_T0
- volatile int tim2 = 1 * sek; // Zmienna czasu pomocnicza
- volatile int foto = 0; // Ilość zdjęć
- volatile int F = 0; // Zmienna pomocnicza ilości zdjęć
- char stan1=1;
- char stan2 = 0; // Stan automatu (procesu)
- int licz1=0; // Licznik generowanych impulsów
- int T_1=3*sek; // T1=3[s]
- void zadanie1(void)
- {
- switch (stan1)
- {
- case 1:L1 = 0; L2 = 0; L3 = 0; L4 = 0;
- if (aK1)
- {
- tim1 = 2 * sek; stan1 = 2;
- }break;
- case 2:L1 = 0; L2 = 0; L3 = 0; L4 = 0;
- if (!tim1)
- {
- tim1 = 3 * sek; stan1 = 3;
- }break;
- case 3:L1 = 1; L2 = 0; L3 = 0; L4 = 0;
- if (!tim1)
- {
- stan1 = 4;
- }break;
- case 4:L1 = 0; L2 = 0; L3 = 0; L4 = 0;
- if (aK2)
- {
- tim1 = 2 * sek; stan1 = 5;
- }
- else if (aK3) stan1 = 17;
- else if (aK1)
- {
- stan1 = 23; tim1 = 2 * sek;
- }
- else if (aK4)
- {
- tim1 = 2 * sek; stan1 = 18;
- }
- break;
- case 5:L1 = 0; L2 = 0; L3 = 0; L4 = 0;
- if (!tim1)
- {
- tim1 = 1 * sek; stan1 = 6;
- }break;
- case 6:L1 = 0; L2 = 0; L3 = 0; L4 = 1;
- if (!tim1)stan1 = 7;break;
- case 7:L1 = 0; L2 = 0; L3 = 0; L4 = 0;
- if (aK2)
- {
- tim1 = 2 * sek; stan1 = 8;
- }
- else if (aK4) { tim1 = 2 * sek; stan1 = 29; }
- else if (aK3) stan1 = 26;
- break;
- case 8:L1 = 0; L2 = 0; L3 = 0; L4 = 0;
- if (!tim1)
- {
- tim1 = 2 * sek; stan1 = 9;
- }
- case 9:L1 = 0; L2 = 0; L3 = 0; L4 = 1;
- if (!tim1)stan1 = 10; break;
- case 10:L1 = 0; L2 = 0; L3 = 0; L4 = 0;
- if (aK4)
- {
- tim1 = 2 * sek; stan1 = 22;
- }
- else if (aK2)
- {
- tim1 = 2 * sek; stan1 = 11;
- }
- else if (aK3) stan1 = 27;break;
- case 11:L1 = 0; L2 = 0; L3 = 0; L4 = 0;
- if (!tim1)
- {
- tim1 = 3 * sek; stan1 = 12;
- }
- case 12:L1 = 0; L2 = 0; L3 = 0; L4 = 1;
- if (!tim1) stan1 = 13; break;
- case 13:L1 = 0; L2 = 0; L3 = 0; L4 = 0;
- if (aK2)
- {
- tim1 = 2 * sek; stan1 = 14;
- }
- else if (aK4)
- {
- tim1 = 2 * sek; stan1 = 21;
- }
- else if (aK3) stan1 = 28; break;
- case 14:L1 = 0; L2 = 0; L3 = 0; L4 = 0;
- if (!tim1)
- {
- tim1 = 1 * sek; stan1 = 15;
- }break;
- case 15:L1 = 0; L2 = 0; L3 = 1; L4 = 0;
- if (!tim1)
- {
- tim1 = 1 * sek; stan1 = 16;
- }
- else if (aK1)
- {
- tim1 = 2 * sek; stan1 = 25;
- }
- break;
- case 16:L1 = 0; L2 = 0; L3 = 0; L4 = 0;
- if (!tim1)
- {
- tim1 = 1 * sek; stan1 = 15;
- }
- case 17:L1 = 0; L2 = 1; L3 = 0; L4 = 0;
- if (!aK3) stan1 = 4; break;
- case 18:L1 = 0; L2 = 0; L3 = 0; L4 = 0;
- if (!tim1)
- {
- tim1 = 2 * sek; stan1 = 19;
- }
- case 19:L1 = 0; L2 = 0; L3 = 1; L4 = 0;
- if (!tim1)
- {
- tim1 = 2 * sek; stan1 = 20;
- }
- else if (aK1)
- {
- tim1 = 2 *sek; stan1 = 29;
- }break;
- case 20:L1 = 0; L2 = 0; L3 = 0; L4 = 0;
- if (!tim1)
- {
- tim1 = 2 * sek; stan1 = 19;
- }break;
- case 21:L1 = 0; L2 = 1; L3 = 0; L4 = 0;
- if (!tim1)
- {
- tim1 = 2 * sek; stan1 = 9;
- }break;
- case 22:L1 = 0; L2 = 1; L3 = 0; L4 = 0;
- if (!tim1)stan1 = 6; break;
- case 23:L1 = 0; L2 = 0; L3 = 0; L4 = 0;
- if (!tim1)
- {
- tim1 = 2 * sek; stan1 = 24;
- }
- case 24:L1 = 1; L2 = 0; L3 = 0; L4 = 0;
- if (!tim1)stan1 = 1; break;
- case 25:L1 = 0; L2 = 0; L3 = 0; L4 = 0;
- if (!tim1)stan1 = 4; break;
- case 26:L1 = 0; L2 = 1; L3 = 0; L4 = 0;
- if (!aK3)stan1 = 7; break;
- case 27:L1 = 0; L2 = 1; L3 = 0; L4 = 0;
- if (!aK3)stan1 = 10; break;
- case 28:L1 = 0; L2 = 1; L3 = 0; L4 = 0;
- if (!aK3)stan1 = 13; break;
- case 29:L1 = 0; L2 = 0; L3 = 0; L4 = 0;
- if (!tim1) stan1 = 4;break;
- }
- if (tim1)--tim1;}