Advertisement
MSlomiany

Marysia

Jan 8th, 2020
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.00 KB | None | 0 0
  1. #include "reg1210.h"
  2.  
  3. #define TRUE 1
  4. #define FALSE 0
  5.  
  6. unsigned char _20_MS_FLAG;
  7. unsigned int _20_MS_COUNTER;
  8. unsigned int _1_SEC_COUNTER;
  9. unsigned int _SEC_COUNTER;
  10. unsigned char _1_SEC_FLAG;
  11. unsigned int _MASTER_SEC_COUNTER;
  12.  
  13. void TimerInt0() interrupt 1
  14. {
  15.     TH0 = 0xFC; //napelnia rejestr licznika do 1 ms
  16.     TL0 = 0x18; //napelnia rejestr licznika do 1 ms
  17.     _20_MS_COUNTER++;
  18.     if (_20_MS_COUNTER == 20)
  19.     {
  20.         _20_MS_FLAG = TRUE;
  21.         _1_SEC_COUNTER++;
  22.         _20_MS_COUNTER = 0;
  23.         if (_1_SEC_COUNTER == 50)
  24.         {
  25.             _SEC_COUNTER++;
  26.             _1_SEC_COUNTER = 0;
  27.             _1_SEC_FLAG = TRUE;
  28.         }
  29.     }
  30. }
  31.  
  32. void rr(int *value)
  33. {
  34.     if (*value != 0x01)
  35.     {
  36.         int rotated_value;
  37.         rotated_value = *value >> 1;
  38.         *value = rotated_value;
  39.     }
  40.     else
  41.     {
  42.         *value = 0x80;
  43.     }
  44. }
  45.  
  46. void choinka()
  47. {
  48.     static int licznik = 0;
  49.     switch (licznik)
  50.     {
  51.         case 0:
  52.             P2=0x01;
  53.         break;
  54.         case 1:
  55.             P2=0x02;
  56.         break;
  57.         case 2:
  58.             P2=0x04;
  59.         break;
  60.         case 3:
  61.             P2=0x08;
  62.         break;
  63.         case 4:
  64.             P2=0x10;
  65.         break;
  66.         case 5:
  67.             P2=0x20;
  68.         break;
  69.         case 6:
  70.             P2=0x40;
  71.         break;
  72.         case 7:
  73.             P2=0x80;
  74.         break;
  75.     }
  76.     licznik++;
  77.     if(licznik==8)
  78.     {
  79.         licznik=0;
  80.     }
  81.    
  82. }
  83.  
  84. void main()
  85. {
  86.  
  87.     int A;
  88.     _20_MS_FLAG = FALSE;
  89.     _20_MS_COUNTER = 0;
  90.     _1_SEC_FLAG = FALSE;
  91.     _1_SEC_COUNTER = 0;
  92.     _SEC_COUNTER = 0;
  93.     _MASTER_SEC_COUNTER = 0;
  94.  
  95.     ET0 = 1;
  96.     TMOD = 0x01;
  97.     TR0 = 1;
  98.     EA = 1;
  99.     TH0 = 0xFC;
  100.     TL0 = 0x18;
  101.  
  102.     A = 0x80; //zapalona wylacznie skrajna dioda
  103.     P3 = A;
  104.  
  105.     //PETLA GLÓWNA PROGRAMU
  106.     while (1)
  107.     {
  108.         if (_SEC_COUNTER < 15)
  109.         {
  110.             if (_1_SEC_FLAG == TRUE) //wywolanie co 1 sekunde
  111.             {
  112.                 _1_SEC_FLAG = FALSE; //na samym poczatku zerowanie flagi
  113.                 rr(&A);
  114.                 P3 = A;
  115.                                 choinka();
  116.             }
  117.         }
  118.         else
  119.         {
  120.         }
  121.     }
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement