Advertisement
pabloducato

Untitled

Apr 18th, 2018
340
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.22 KB | None | 0 0
  1. #include <reg515.sfr> //zdefiniowane rejestry mikrokontrolera
  2. #include <lcd.h> //funkcje obslugi wyswietlacza i klawiatury
  3.  
  4. unsigned char znak;
  5. unsigned int liczba = 0;
  6. unsigned char kom[] = {8, 2, 4, 1}; // tablica komutacji
  7. unsigned int opoznienie = 1000;
  8. unsigned int kroki = 0;
  9. int skoki = 0;
  10.  
  11. void delay(int time) // funkcja sluzy do generowania opóźnienia
  12. {
  13.     int i=0;
  14.     int wait=0;
  15.     for (i=0;i<time;i++)wait++;
  16. }
  17.  
  18. void main()
  19. {
  20.     //unsigned int liczba = 0;
  21.     //unsigned char znak;
  22.     //unsigned int backspace = 0;
  23.     EAL=1; //ustalanie wartosci flag
  24.     EX0=1;
  25.     IT0=1;
  26.     lcd_init(); //inicjalizacja wyświetlacza
  27.     while(1)
  28.     {
  29.         znak=get_kb();
  30.         delay(12000);
  31.         /*
  32.         if(znak=='l') // zmianna wartosci zmiennej odpowiedzialnej za kierunek l/p
  33.         {
  34.             kierunek=-1;
  35.         }
  36.         if(znak=='p')
  37.         {
  38.             kierunek=1;
  39.         }
  40.         */
  41.        
  42.         if(znak >= '0' && znak <= '9') // wczytywanie nacisnietych liczb
  43.         {
  44.             liczba = liczba * 10 + (znak - 48);
  45.             //backspace = 0;
  46.             out_char(znak);
  47.         }
  48.        
  49.         if(znak=='e') // po naciśnięciu klawisza enter wpisujemy do rejestrów nowe wartosci częstotliwosci wirowania
  50.         {
  51.             out_instr(1);
  52.             out_char(liczba);
  53.             skoki=liczba;
  54.             opoznienie=1000;
  55.             EAL = 1;
  56.             P1 = kom[0];
  57.             delay(opoznienie);
  58.             P2 = kom[1];
  59.             liczba = 0;
  60.             kroki = 1;
  61.         }  
  62.         //if(znak=='g') // po naciśnięciu strzalki w górę wyswietlamy informacje o aktualnej komutacji, oraz kierunku
  63.         //{
  64.             //komutacja++;
  65.             //if (komutacja>2)
  66.             //komutacja = 0;
  67.             //faza = 0;
  68.         //}
  69.         //if(znak == 'd')
  70.         //{
  71.             //komutacja--;
  72.             //if (komutacja < 0)
  73.             //komutacja = 2;
  74.             //faza = 0;
  75.         //}
  76.         if(znak=='b') //po nacisnieciu klawisza backspace czyscimy wyswietlacz
  77.         {
  78.             liczba=0;
  79.             out_instr(1);
  80.         }
  81.     }
  82. }
  83. _interrupt 0 void int_0(void) // obsluga przerwania mikrokontrolera
  84. {
  85.    delay(opoznienie);
  86.    skoki--;
  87.    kroki = (kroki + 1) %4;
  88.    P1 = kom[kroki];
  89.    if (skoki <= 100)
  90.     {
  91.     opoznienie=opoznienie+20;
  92.     }
  93.    if (skoki <= 0)
  94.     {
  95.     EAL = 0;
  96.     }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement