Advertisement
pabloducato

napedy_III

May 8th, 2018
328
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.65 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.     EAL = 1; //ustalanie wartosci flag
  21.     EX0 = 1;
  22.     IT0 = 1;
  23.     lcd_init(); //inicjalizacja wyświetlacza
  24.     while(1)
  25.     {
  26.         znak=get_kb();
  27.         delay(12000);
  28.  
  29.         if(znak >= '0' && znak <= '9') // wczytywanie nacisnietych liczb
  30.         {
  31.             liczba = liczba * 10 + (znak - 48);
  32.             out_char(znak);
  33.         }
  34.  
  35.         if(znak=='e') // po naciśnięciu klawisza enter rozpoczynamy wirowanie o konkretną ilośc obrotów
  36.         {
  37.             out_instr(1);
  38.             out_char(liczba);
  39.             skoki = liczba;
  40.             opoznienie = 1000;
  41.             EAL = 1;
  42.             P1 = kom[0];
  43.             delay(opoznienie);
  44.             P2 = kom[1];
  45.             liczba = 0;
  46.             kroki = 1;
  47.         }
  48.  
  49.         if(znak=='b') //po nacisnieciu klawisza backspace czyscimy wyswietlacz
  50.         {
  51.             liczba = 0;
  52.             out_instr(1);
  53.         }
  54.     }
  55. }
  56. _interrupt 0 void int_0(void) // obsluga przerwania mikrokontrolera
  57. {
  58.     delay(opoznienie);
  59.     skoki--;
  60.     kroki = (kroki + 1) % 4;
  61.     P1 = kom[kroki];
  62.     if (skoki <= 100)
  63.     {
  64.         opoznienie = opoznienie+20;
  65.     }
  66.     if (skoki <= 0)
  67.     {
  68.         EAL = 0;
  69.     }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement