Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*************************************************************************/
- /* Program testowy dla obiektu X oprogamowania SPSym */
- /*************************************************************************/
- #include "spsym.h" // Pomocnicze funkcje i deklaracje
- #include <stdio.h> // Stadnardowe I/O
- // --- Zmienne użytkownika ---
- int tim1 = 0,tim2 = 0, tim3 = 0, tim4 = 0, tim5 = 0,tim6 = 0, tim7 = 0,tim8 = 0, tim9 = 0, tim10 = 0; //Timery
- int timeHigh, timeHighTemp; //Wypelnienie Glosnosc
- int obecnyUtwor = 3;
- int licznik_1 = 1; //Licznik przy obecnym utworze
- int miganieBazowa = 5; //Miganie przy przewijaniu
- int miganieBazowa2 = 10; //Miganie przy przewijaniu
- char stan1=1, stan2 = 1, stan3 = 1, stan4 = 1, stan5 = 1, stan6 = 0;
- int wlacznik = 0; //Sprawdzenie czy urzadzenie jest obecnie uruchomione
- void prolog(void) // Inicjowanie programu (jednorazowo przy starcie)
- {
- L1=L2=L3=L4=L5=L6=L7=L8=0; // Zgaszenie L1..L4
- pK1=aK1; pK2=aK2; pK3=aK3;
- }
- void oblicz(void) // Kod użytkownika wykonywany cyklicznie
- {
- //Wlacznik
- switch(stan1) {
- case 1:
- L1=L2=L3=0;
- if(aK1)stan1 = 2;
- break;
- case 2:
- L1=L2=L3=0;
- wlacznik = 1;
- if(!aK1) {
- tim1 = 10;
- stan1 = 3;
- }
- break;
- case 3:
- L1 = 1;
- if(aK1){
- L1 = 0;
- stan1 = 7;
- }
- if(!tim1){
- tim1 = 10;
- stan1 = 4;
- }
- break;
- case 4:
- L1 = 0;
- if(aK1){
- L1 = 0;
- stan1 = 7;
- }
- if(!tim1){
- tim1 = 10;
- stan1 = 5;
- }
- break;
- case 5:
- L1 = 1;
- if(aK1){
- L1 = 0;
- stan1 = 7;
- }
- if(!tim1) stan1 = 6;
- break;
- case 6:
- L1 = 0;
- if(aK1) stan1 = 7;
- break;
- case 7:
- wlacznik = 0;
- //Zatrzymanie pracy urządzenia
- stan2=stan3=stan4=stan5=stan6=1;
- L2=L3=L4=L5=L6=L7=L8=0;
- if(!aK1){
- tim1 = 10;
- stan1 = 8;
- }
- break;
- case 8:
- L1 = 1;
- if(!tim1) stan1 = 1;
- if(aK1) stan1 = 2;
- break;
- }
- //Warunek
- if(wlacznik){
- //PLAY/STOP
- switch(stan2){
- case 1:
- L2 = 0;
- if(aK2){
- stan2 = 2;
- }
- break;
- case 2:
- if(!tim2) {
- if (!L2) tim2=10;
- else tim2=20;
- L2=!L2;
- }
- if(aK2 && !pK2) stan2 = 1;
- break;
- }
- //Obecny utwor
- switch(stan3){
- case 1:
- L5 = 0;
- if(licznik_1 <= obecnyUtwor){
- tim3 = 5;
- stan3 = 2;
- }
- else{
- tim3 = 30;
- stan3 = 3;
- }
- break;
- case 2:
- L5 = 1;
- if(!tim3) {
- stan3 = 1;
- licznik_1 ++;
- }
- break;
- case 3:
- L5 = 0;
- if(!tim3) {
- licznik_1 = 1;
- stan3 = 1;
- }
- }
- //Poprzedni/Przewijanie
- if(!aK4){
- switch(stan4) {
- case 1:
- L3 = 0;
- miganieBazowa = 10;
- if(aK3){
- tim4 = 30;
- stan4 = 2;
- }
- break;
- case 2:
- L3 = 1;
- if(!aK3) {
- if(obecnyUtwor == 1){
- obecnyUtwor = 5;
- }
- else if(obecnyUtwor > 1){
- obecnyUtwor--;
- }
- stan4 = 1;
- }
- if(!tim4) {
- stan4 = 3;
- tim6=miganieBazowa/2;
- }
- break;
- case 3:
- L3 = 0;
- if(!aK3) stan4 = 1;
- //Zmniejszanie czestotliwosci
- if(!tim6){
- tim7 = miganieBazowa;
- stan4 = 4;
- }
- break;
- case 4:
- L3 = 1;
- if(!aK3) stan4 = 1;
- if(!tim7){
- if(miganieBazowa <= 20 ) miganieBazowa = miganieBazowa + 2;
- tim6 = miganieBazowa/2;
- stan4 = 3;
- }
- break;
- }
- }
- //Pominiecie/Przewijanie
- if(!aK3){
- switch(stan5){
- case 1:
- L4 = 0;
- if(aK4){
- tim5 = 30;
- stan5 = 2;
- }
- break;
- case 2:
- L4 = 1;
- if(!aK4){
- if(obecnyUtwor == 5)
- obecnyUtwor = 1;
- else if(obecnyUtwor < 5)
- obecnyUtwor++;
- stan5 = 1;
- }
- if(!tim5) {
- stan5 = 3;
- tim8 = miganieBazowa2/2;
- }
- break;
- case 3:
- L4 = 0;
- if(!aK4) stan5 = 1;
- if(!tim8){
- tim9 = miganieBazowa2;
- stan5 = 4;
- }
- //Zwiekszanie czestotliwosci
- break;
- case 4:
- L4 = 1;
- if(!aK4) stan5 = 1;
- if(!tim9){
- if(miganieBazowa2 >= 4 ) miganieBazowa2 = miganieBazowa2 - 2;
- if(miganieBazowa2 <4) miganieBazowa2 =4;
- //else miganie
- tim8 = miganieBazowa2/2;
- stan5 = 3;
- }
- break;
- }
- }
- //Podgłaśnianie
- switch(stan6){
- case 0:
- stan6=1; tim10=50; timeHigh=25; timeHighTemp=0;
- case 1:
- L6=1;
- timeHighTemp++;
- L7=0;
- if(timeHigh) --timeHigh;
- if(!aK5&&!timeHigh){ stan6=2;timeHigh=timeHighTemp;timeHighTemp=0;}
- if(aK5&&!tim10&&!timeHigh){ stan6=4; tim10=10; timeHigh=timeHighTemp;timeHighTemp=0;}
- break;
- case 2:
- L6=0;
- L7=0;
- if(!tim10){ stan6=3; tim10=20;}
- if(aK5){ stan6=1; tim10=50; timeHigh=0; timeHighTemp=0;}
- break;
- case 3:
- L6=0;
- L7=1;
- if(!tim10){ stan6=1; tim10=50;}
- if(aK5){ stan6=1; tim10=50; timeHigh=0; timeHighTemp=0;}
- break;
- case 4:
- L6=0;
- L7=0;
- if(!aK5) stan6=1;
- }
- }//Urzadzenie wlaczone
- if(tim1)--tim1;
- if(tim2) --tim2;
- if(tim3) --tim3;
- if(tim4) --tim4;
- if(tim5) --tim5;
- if(tim6) --tim6;
- if(tim7) --tim7;
- if(tim8) --tim8;
- if(tim9) --tim9;
- if(tim10) --tim10;
- 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);
- pK1=aK1; pK2=aK2; pK3=aK3; pK4=aK4;
- pK5=aK5; pK6=aK6; pK7=aK7; pK8=aK8;
- }
- void przerwanie(void) // Obsługs przerwania od układu czasowo-licznikowego
- {}
- void komunikacja(void) // Obsługa komunikacji szeregowej
- {}
- #ifdef Symulator_PC
- void wykres(void) // Dane do tabeli i wykresu (dot. symulacji obiektu)
- {
- bTab[0] = (int)L1;
- bTab[1] = (int)L2;
- bTab[2] = (int)L3;
- bTab[3] = (int)L4;
- bTab[4] = (int)L5;
- bTab[5] = (int)L6;
- bTab[6] = (int)L7;
- bTab[7] = (int)aK1;
- bTab[8] = (int)aK2;
- bTab[9] = (int)aK3; // LAMPA
- bTab[10] = (int)aK4;
- bTab[11] = (int)aK5;
- }
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement