Advertisement
Guest User

Untitled

a guest
Apr 21st, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.27 KB | None | 0 0
  1. #include <p24fj128ga010.h>
  2. #include<math.h>
  3.  
  4. //Konfiguracja dla Explorer 16 z progr. icd2
  5. _CONFIG1(JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & FWDTEN_OFF)
  6. _CONFIG2(FCKSM_CSDCMD & OSCIOFNC_ON & POSCMOD_HS & FNOSC_PRI)
  7.  
  8. #define SCALE 308L
  9.  
  10. int main(void){
  11. unsigned long i;
  12. unsigned char display = 0;
  13. unsigned int licznik = 0;
  14. unsigned int dziesiatki = 0;
  15. unsigned int cyfry = 1;
  16. unsigned int dziesiatkirev = 9;
  17. unsigned int cyfryrev = 9;
  18. unsigned int licznikGray = 0;
  19. unsigned int licznikGrayRev = 255;
  20. unsigned int wezyk = 128;
  21. unsigned int wezykRev = 1;
  22. unsigned int rnd = 1;
  23. void BCD(){
  24.     if(cyfry == 9 && dziesiatki == 0){
  25.         cyfry = 0;
  26.         dziesiatki = 1;    
  27.     }
  28.     else if(cyfry == 9 && dziesiatki == 9){
  29.         cyfry = 0;
  30.         dziesiatki = 0;    
  31.     }
  32.     else if(cyfry == 9){
  33.         cyfry = 0;
  34.         dziesiatki++;
  35.     }
  36.     else{
  37.         cyfry++;
  38.     }
  39. }
  40. void BCDREVERSE(){
  41.     if(cyfryrev == 0 && dziesiatkirev == 0){
  42.         cyfryrev = 9;
  43.         dziesiatkirev = 9;     
  44.     }
  45.     /*else if(cyfry == 9 && dziesiatki == 9){
  46.         cyfry = 0;
  47.         dziesiatki = 0;    
  48.     }*/
  49.     else if(cyfryrev == 0){
  50.         cyfryrev = 9;
  51.         dziesiatkirev--;
  52.     }
  53.     else{
  54.         cyfryrev--;
  55.     }
  56. }
  57. int GRAY(liczba){
  58.     return liczba ^ (liczba >> 1);
  59. }
  60. int sprawdzBit(int bit,int wpisana){
  61.         int x = (pow(2,bit-1));
  62.         return (wpisana&x)/x;
  63.     }
  64. int wylosuj(int wpisana){
  65.         if (sprawdzBit(1,wpisana)^sprawdzBit(2,wpisana)^sprawdzBit(5,wpisana)^sprawdzBit(6,wpisana)){
  66.             wpisana>>=1;
  67.             wpisana+=32;
  68.         }
  69.         else{
  70.             wpisana>>=1;
  71.         }
  72.         return wpisana;
  73.     }
  74. int SNAKE(liczba){
  75.     switch(liczba){
  76.         case 224:
  77.         case 112:
  78.         case 56:
  79.         case 28:
  80.         case 14:
  81.             return (liczba>>1);
  82.         case 7:
  83.         case 128:
  84.         case 131:
  85.         case 192:
  86.         case 193:
  87.             return (liczba>>1)+128;
  88.     }
  89. }
  90. int SNAKEREV(liczba){
  91.     switch(liczba){
  92.         case 1:
  93.         case 3:
  94.             return (liczba<<1)+1;
  95.         case 7:
  96.         case 14:
  97.         case 28:
  98.         case 56:
  99.         case 112:
  100.             return (liczba<<1);
  101.         case 224:
  102.         case 193:
  103.         case 131:
  104.             return (liczba<<1)-255;
  105.     }
  106. }  
  107. //inicjalizacja
  108.  PORTA=0x0000;
  109.  TRISA=0xFF00;
  110.  TRISD=0xFFFF;
  111.  
  112.  
  113.  
  114. //niekoA?czÄ?ca siÄ? pÄ?tla
  115. again:
  116.     Nop();
  117.     PORTA=(unsigned int) display;
  118.     for(i=500L*SCALE;i>0;i--) Nop();
  119.     if (PORTDbits.RD13 == 0){
  120.         display = 0;
  121.         licznikGray = 0;
  122.         licznikGrayRev = 255;
  123.         if(licznik == 1){
  124.             licznik = 9;
  125.         }
  126.         else licznik--;
  127.         wezyk = 128;
  128.         wezykRev = 1;
  129.         rnd = 1;
  130.     }
  131.     else if(PORTDbits.RD6 == 0){
  132.         display = 255;
  133.         licznikGray = 0;
  134.         licznikGrayRev = 255;  
  135.         if(licznik == 9){
  136.             licznik = 1;
  137.         }
  138.         else licznik++;
  139.         wezyk = 128;
  140.         wezykRev = 1;
  141.         rnd = 1;
  142.     }
  143.     switch(licznik){
  144.         case 1:
  145.             display = display+1;
  146.             break;
  147.         case 2:
  148.             display = display-1;
  149.             break;
  150.         case 3:
  151.             display = (dziesiatki<<4) + cyfry;
  152.             BCD();
  153.             break;
  154.         case 4:
  155.             display = (dziesiatkirev<<4) + cyfryrev;
  156.             BCDREVERSE();
  157.             break;
  158.         case 5:
  159.             display = GRAY(licznikGray);
  160.             licznikGray++;
  161.             break;
  162.         case 6:
  163.             display = GRAY(licznikGrayRev);
  164.             licznikGrayRev--;
  165.             break;
  166.         case 7:
  167.             display = wezyk;
  168.             wezyk = SNAKE(wezyk);
  169.             break;
  170.         case 8:
  171.             display = wezykRev;
  172.             wezykRev = SNAKEREV(wezykRev);
  173.             break;
  174.         case 9:
  175.             display = rnd;
  176.             rnd = wylosuj(rnd);
  177.             break;
  178.     }
  179.     goto again;
  180.    
  181.     goto again;
  182.  
  183. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement