Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "reg515.sfr" //zdefiniowane rejestry mikrokontrolera
- #include "lcd.h" //funkcje obslugi wyswietlacza i klawiatury
- void delay(int time) // funkcja służy do generowania opóźnienia
- {
- int i=0;
- int wait=0;
- for(i=0;i<time;i++) wait++;
- }
- /*
- unsigned char get_number() //zwraca cyfrę klikniętą na klawiaturze w postaci uchar'a
- {
- unsigned char znak;
- while(1)
- {
- znak=get_kb(); //get_kb zwraca kod klikniętego znaku na klawiaturze
- delay(12000);
- if(znak >= '0' && znak <= '9')
- {
- return znak;
- }
- }
- }
- */
- int kom=1;
- int tab[8];
- int licznik=-1;
- int kier=0; // kierunek
- int limp=17;
- int f=17;
- void main()
- {
- unsigned int liczba = 0;
- unsigned char znak;
- unsigned int backspace = 0;
- EAL=1; //ustalanie wartosci flag
- ET2=1;
- T2I0=1;
- T2R1=1;
- lcd_init(); //inicjalizacja wyświetlacza
- while(1)
- {
- znak=get_kb();
- delay(12000);
- if(znak=='d') // zmiana aktualnej komutacji
- {
- kom+=1;
- if(kom>3)
- {
- kom=0;
- }
- }
- if(znak=='l') // zmianna wartości zmiennej odpowiedzialnej za kierunek l/p
- {
- kier=0;
- }
- if(znak=='p')
- {
- kier=1;
- }
- if(znak >= '0' && znak <= '9') // wczytywanie naciśniętych liczb
- {
- liczba = liczba * 10 + (znak - 48);
- backspace = 0;
- out_char(znak);
- }
- if(znak=='e') // po naciśnięciu klawisza enter wpisujemy do rejestrów nową wartość częstotliwosci wirowania
- {
- if(liczba>16&&liczba<500)
- {
- out_instr(0xC0);
- out_char(liczba);
- f=liczba;
- liczba=0;
- limp=1000000/f;
- limp=0xFFFF-limp;
- CRCH=limp>>8;
- CRCL=limp;
- }
- }
- if(znak=='g') // po naciśnięciu strzałki w górę wyświetlamy informację o aktualnej komutacji, oraz kierunku
- {
- out_instr(1);
- switch(kom)
- {
- case 1:
- {
- out_instr('1');
- out_instr('/');
- out_instr('2');
- out_instr(' ');
- }
- break;
- case 2:
- {
- out_instr('1');
- out_instr('/');
- out_instr('4');
- out_instr(' ');
- }
- break;
- case 3:
- {
- out_instr('3');
- out_instr('/');
- out_instr('8');
- out_instr(' ');
- }
- break;
- }
- if(znak=='l')
- {
- out_instr('l');
- }
- else out_instr('p');
- }
- if(znak=='b') //po naciśnięciu klawisza backspace czyscimy wyswietlacz
- {
- liczba=0;
- out_instr(1);
- }
- }
- }
- _interrupt 5 void int_T2(void) // obsługa przerwania mikrokontrolera
- {
- TF2=0;
- if(kom==1) // ustalanie wartości w tablicy dla wybranej komutacji
- {
- tab[0]=8;
- tab[1]=2;
- tab[2]=4;
- tab[3]=1;
- tab[4]=8;
- tab[5]=2;
- tab[6]=4;
- tab[7]=1;
- }
- else if(kom==2)
- {
- tab[0]=9;
- tab[1]=10;
- tab[2]=6;
- tab[3]=5;
- tab[4]=9;
- tab[5]=10;
- tab[6]=6;
- tab[7]=5;
- }
- else if(kom==3)
- {
- tab[0]=8;
- tab[1]=10;
- tab[2]=2;
- tab[3]=6;
- tab[4]=9;
- tab[5]=5;
- tab[6]=1;
- tab[7]=9;
- }
- if(kier==0) //kier - zmienna odpowiedzialna za kierunek komutacji
- {
- licznik+=1;
- if(licznik>7)
- licznik=0;
- }
- else
- {
- licznik-=1;
- if(licznik<0)
- licznik=7;
- }
- P1=tab[licznik]; // wpisywanie tablicy do pamięci mikrokontolera
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement