Advertisement
pabloducato

mikro_6

Jun 1st, 2018
320
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.50 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. unsigned char znak;
  11. unsigned int wz;
  12. int enter = 0;
  13. int e0, e1, e2, w;
  14. float y, yn;
  15.  
  16. _interrupt 1 void int_TO(void)
  17. {
  18.     DAPR=8;
  19.     while(BSY){}
  20.     w=ADDAT;
  21.     yn=CCL1;
  22.     e0=wz-w;
  23.     y=(yn)+(1.2*e0)+(-1.1*e1)+(0.12*e2); //obliczony wzor
  24.     e2=e1;
  25.     e1=e0;
  26.     if(y>255)
  27.         {
  28.         y=255;
  29.         }
  30.     if(y<0)
  31.         {
  32.         y=0;
  33.         }
  34.     CCL1=y;
  35. }
  36.  
  37. void main()
  38. {
  39.     lcd_init();
  40.     out_instr(0x01);
  41.     //flagi z laboratorium nr 5
  42.     CRCH = 0xFF;
  43.     CRCL = 0x00;
  44.     CCH1=0xFF;
  45.     CCL1=10;
  46.     CCEN=0x08;
  47.     CLK=1;
  48.     P3=0xDF;     
  49.     T2I0=1;
  50.     T2R1=1;
  51.     //nowo dodane flagi
  52.     TMOD=1;
  53.     TR0=1;
  54.     EAL=1;
  55.     ET0=1;
  56.     wz=30;
  57.     while(1)
  58.     {
  59.         unsigned int a,b,c;
  60.         znak=get_kb();
  61.         delay(5000);
  62.             if(znak=='g')
  63.             {
  64.             out_instr(0x80);
  65.                 if(wz<250)
  66.                     {
  67.                     wz++;
  68.                     a=wz/100;
  69.                     b=(wz/10)%10;
  70.                     c=wz%10;
  71.                     //wyswietlenie znakow na wyswietlaczu LCD
  72.                     out_char(a+48);
  73.                     out_char(b+48);
  74.                     out_char(c+48);
  75.                     delay(6000);  //opoznienie
  76.                     }
  77.             }
  78.             if(znak=='d')
  79.             {
  80.             out_instr(0x80);
  81.                 if(wz>30)
  82.                 {
  83.                     wz--;
  84.                     a=wz/100;
  85.                     b=(wz/10)%10;
  86.                     c=wz%10;
  87.                     //wyswietlenie znakow na wyswietlaczu LCD
  88.                     out_char(a+48);
  89.                     out_char(b+48);
  90.                     out_char(c+48);
  91.                     delay(6000); //opoznienie
  92.                 }
  93.         }
  94. }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement