Advertisement
pabloducato

Untitled

Apr 17th, 2018
482
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.17 KB | None | 0 0
  1. #include "reg515.sfr" //zdefiniowane rejestry mikrokontrolera
  2. #include "lcd.h" //funkcje obslugi wyswietlacza i klawiatury
  3. void delay(int time) // funkcja służy do generowania opóźnienia
  4. {
  5.     int i=0;
  6.     int wait=0;
  7.     for(i=0;i<time;i++) wait++;
  8. }
  9.  
  10. /*
  11. unsigned char get_number() //zwraca cyfrę klikniętą na klawiaturze w postaci uchar'a
  12. {
  13.         unsigned char znak;
  14.         while(1)
  15.         {
  16.                 znak=get_kb(); //get_kb zwraca kod klikniętego znaku na klawiaturze
  17.                 delay(12000);
  18.                 if(znak >= '0' && znak <= '9')
  19.                 {
  20.                         return znak;
  21.                 }
  22.         }
  23. }
  24. */
  25.  
  26. int kom=1;
  27. int tab[8];
  28. int licznik=-1;
  29. int kier=0; // kierunek
  30. int limp=17;
  31. int f=17;
  32.  
  33. void main()
  34. {
  35.     unsigned int liczba = 0;
  36.     unsigned char znak;
  37.     unsigned int backspace = 0;
  38.  
  39.     EAL=1; //ustalanie wartosci flag
  40.     ET2=1;
  41.     T2I0=1;
  42.     T2R1=1;
  43.     lcd_init(); //inicjalizacja wyświetlacza
  44.     while(1)
  45.     {
  46.         znak=get_kb();
  47.         delay(12000);
  48.         if(znak=='d') // zmiana aktualnej komutacji
  49.         {
  50.             kom+=1;
  51.             if(kom>3)
  52.             {
  53.                 kom=0;
  54.             }
  55.         }
  56.         if(znak=='l') // zmianna wartości zmiennej odpowiedzialnej za kierunek l/p
  57.         {
  58.             kier=0;
  59.         }
  60.         if(znak=='p')
  61.         {
  62.             kier=1;
  63.         }
  64.         if(znak >= '0' && znak <= '9') // wczytywanie naciśniętych liczb
  65.         {
  66.             liczba = liczba * 10 + (znak - 48);
  67.             backspace = 0;
  68.             out_char(znak);
  69.         }
  70.         if(znak=='e') // po naciśnięciu klawisza enter wpisujemy do rejestrów nową wartość częstotliwosci wirowania
  71.         {
  72.             if(liczba>16&&liczba<500)
  73.             {
  74.                 out_instr(0xC0);
  75.                 out_char(liczba);
  76.                 f=liczba;
  77.                 liczba=0;
  78.                 limp=1000000/f;
  79.                 limp=0xFFFF-limp;
  80.                 CRCH=limp>>8;
  81.                 CRCL=limp;
  82.             }
  83.         }
  84.         if(znak=='g') // po naciśnięciu strzałki w górę wyświetlamy informację o aktualnej komutacji, oraz kierunku
  85.         {
  86.             out_instr(1);
  87.             switch(kom)
  88.             {
  89.             case 1:
  90.             {
  91.                 out_instr('1');
  92.                 out_instr('/');
  93.                 out_instr('2');
  94.                 out_instr(' ');
  95.             }
  96.                 break;
  97.             case 2:
  98.             {
  99.                 out_instr('1');
  100.                 out_instr('/');
  101.                 out_instr('4');
  102.                 out_instr(' ');
  103.             }
  104.                 break;
  105.             case 3:
  106.             {
  107.                 out_instr('3');
  108.                 out_instr('/');
  109.                 out_instr('8');
  110.                 out_instr(' ');
  111.             }
  112.                 break;
  113.             }
  114.             if(znak=='l')
  115.             {
  116.                 out_instr('l');
  117.             }
  118.             else out_instr('p');
  119.  
  120.         }
  121.         if(znak=='b') //po naciśnięciu klawisza backspace czyscimy wyswietlacz
  122.         {
  123.             liczba=0;
  124.             out_instr(1);
  125.         }
  126.  
  127.     }
  128. }
  129. _interrupt 5 void int_T2(void) // obsługa przerwania mikrokontrolera
  130. {
  131.     TF2=0;
  132.     if(kom==1) // ustalanie wartości w tablicy dla wybranej komutacji
  133.     {
  134.         tab[0]=8;
  135.         tab[1]=2;
  136.         tab[2]=4;
  137.         tab[3]=1;
  138.         tab[4]=8;
  139.         tab[5]=2;
  140.         tab[6]=4;
  141.         tab[7]=1;
  142.     }
  143.     else if(kom==2)
  144.     {
  145.         tab[0]=9;
  146.         tab[1]=10;
  147.         tab[2]=6;
  148.         tab[3]=5;
  149.         tab[4]=9;
  150.         tab[5]=10;
  151.         tab[6]=6;
  152.         tab[7]=5;
  153.     }
  154.     else if(kom==3)
  155.     {
  156.         tab[0]=8;
  157.         tab[1]=10;
  158.         tab[2]=2;
  159.         tab[3]=6;
  160.         tab[4]=9;
  161.         tab[5]=5;
  162.         tab[6]=1;
  163.         tab[7]=9;
  164.     }
  165.  
  166.     if(kier==0) //kier - zmienna odpowiedzialna za kierunek komutacji
  167.     {
  168.         licznik+=1;
  169.         if(licznik>7)
  170.             licznik=0;
  171.     }
  172.     else
  173.     {
  174.         licznik-=1;
  175.         if(licznik<0)
  176.             licznik=7;
  177.     }
  178.     P1=tab[licznik]; // wpisywanie tablicy do pamięci mikrokontolera
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement