SHARE
TWEET

Untitled

a guest May 22nd, 2019 54 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <p24fj128ga010.h>
  2.  
  3. _CONFIG1(JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & FWDTEN_OFF)
  4. _CONFIG2(FCKSM_CSDCMD & OSCIOFNC_ON & POSCMOD_HS & FNOSC_PRI)
  5.  
  6. #define SCALE 308L
  7.  
  8. /* numer ktĂłrym dostajemy siÄ? do potencjometru */
  9. #define TVOLT 5
  10. #define AINPUTS 0xffcf
  11.  
  12. void ADCinit(int amask)
  13. {
  14.     AD1PCFG = amask;
  15.     AD1CON1 = 0x00e0;
  16.     AD1CSSL = 0;
  17.     AD1CON2 = 0;
  18.     AD1CON3 = 0x1f02;
  19.     AD1CON1bits.ADON = 1;
  20. }
  21.  
  22. int readADC(int ch)
  23. {
  24.     AD1CHS = ch;
  25.     AD1CON1bits.SAMP = 1;
  26.     while (!AD1CON1bits.DONE);
  27.     return ADC1BUF0;
  28. }
  29.  
  30. int main(void)
  31. {
  32.     unsigned long i;
  33.     unsigned char display = 0;
  34.  
  35.     int volt;
  36.     int speed;
  37.     //maksymalna wartoĹ?Ä? jakÄ? moĹźna odczytaÄ? to ok 1123. na jej
  38.     //podstawie przeskalujemy wynik
  39.     int maxOdczyt = 1123;
  40.     int scale = maxOdczyt / 5; 
  41.     int program = 1, start = 1, stan = 0, lewa, prawa, pileczka, zmianaprogramu = 10, zatrzymajprogram = 1;
  42.     int licznik = 0;
  43.  
  44.  
  45.     //inicjalizacja
  46.     PORTA = 0x0000;
  47.     TRISA=0xFF00;
  48.     TRISD=0xFFFF;
  49.     ADCinit(AINPUTS); //inicjalizacja konwertera AD
  50.  
  51.  
  52.     while (1) {
  53.         PORTA=(unsigned int) display;
  54.         Nop();
  55.  
  56.         for (i = 500 * SCALE; i > 0; i--) Nop();
  57.  
  58.         volt = readADC(TVOLT); //Odczytanie potencjometru
  59.  
  60.         if(volt < scale)
  61.             speed = 0.01;
  62.         if(volt >= scale && (volt < scale * 2))
  63.             speed = 10;
  64.         if((volt >= scale * 2) && (volt < scale * 3))
  65.             speed = 300;
  66.         if((volt >= scale * 3) && (volt < scale * 4))
  67.             speed = 1000;
  68.         if((volt >= scale * 4) && (volt <= maxOdczyt))
  69.             speed = 5000;
  70.  
  71.         for (i = SCALE * speed; i > 0; i--) Nop();
  72.        
  73.  
  74.         if(zmianaprogramu == 0){
  75.             program++;
  76.             start = 1;
  77.             zmianaprogramu = 10;
  78.         }  
  79.         else if(zatrzymajprogram == 0) zmianaprogramu = 10;
  80.         else zmianaprogramu--;
  81.         if (PORTDbits.RD13 == 0){
  82.             program++;
  83.             start = 1;
  84.             zatrzymajprogram = 1;
  85.         }
  86.         else if(PORTDbits.RD6 == 0) {
  87.             program--;
  88.             start = 1;
  89.             zatrzymajprogram = 1;
  90.         }
  91.         else if(PORTDbits.RD7 == 0) {
  92.             if(zatrzymajprogram == 1) zatrzymajprogram = 0;
  93.             else zatrzymajprogram = 1;
  94.         }
  95.    
  96.         if(program == 1)
  97.         {
  98.             if(start == 1)
  99.             {
  100.                 display = 0;
  101.                 start = 0;
  102.             }
  103.             else
  104.             {
  105.                 if(display != 85)
  106.                 {
  107.                     display = 85;
  108.                     stan = 1;
  109.                 }
  110.                 else
  111.                 {
  112.                     display = display << 1;
  113.                 }
  114.             }
  115.         }
  116.        
  117.         if(program == 2)
  118.         {
  119.             if(start == 1)
  120.             {
  121.                 display = 24;
  122.                 licznik = 0;
  123.                 start = 0;
  124.                 lewa = 8;
  125.                 prawa = 16;
  126.             }
  127.             else
  128.             {
  129.                 if(licznik == 0)
  130.                 {
  131.                     if(display != 129)
  132.                     {
  133.                         lewa = lewa >> 1;
  134.                         prawa = prawa << 1;
  135.                         display = lewa | prawa;
  136.                     }
  137.                     else licznik = 1;
  138.                 }
  139.                
  140.                 else
  141.                 {  
  142.                     if(display != 24)
  143.                     {
  144.                         lewa = lewa << 1;
  145.                         prawa = prawa >> 1;
  146.                         display = lewa | prawa;
  147.                     }
  148.                     else
  149.                     {
  150.                         licznik = 0;
  151.                         display = 24;
  152.                     }
  153.                 }
  154.             }
  155.         }
  156.  
  157.         if(program == 3)
  158.         {
  159.             if(start == 1)
  160.             {
  161.                 display = 24;
  162.                 licznik = 0;
  163.                 start = 0;
  164.             }
  165.             else
  166.             {
  167.                 if(licznik == 0)
  168.                 {
  169.                     if(display < 255)
  170.                     {
  171.                         display = ((display << 1) | (display >> 1));
  172.                     }
  173.                     else licznik = 1;
  174.                 }
  175.                
  176.                 else
  177.                 {  
  178.                     if(display != 60)
  179.                         display = (display << 1) & (display >> 1);
  180.                     else
  181.                     {
  182.                         licznik = 0;
  183.                         display = 24;
  184.                     }
  185.                 }
  186.             }
  187.         }
  188.  
  189.  
  190.         if(program == 4)
  191.         {
  192.             if(start == 1)
  193.             {
  194.                 display = 129;
  195.                 start = 0;
  196.                 prawa = 1;
  197.                 lewa = 128;
  198.                 licznik = 0;
  199.                 pileczka = 1;
  200.             }
  201.             else
  202.             {  
  203.                 if(licznik == 0)
  204.                 {
  205.                     if(pileczka < 64)
  206.                     {
  207.                         pileczka = pileczka << 1;
  208.                         display = prawa | lewa | pileczka;
  209.                     }
  210.                     else licznik = 1;
  211.                 }
  212.                
  213.                 else
  214.                 {  
  215.                     if(pileczka > 2)
  216.                     {
  217.                         pileczka = pileczka >> 1;
  218.                         display = prawa | lewa | pileczka;
  219.                     }
  220.                     else
  221.                     {
  222.                         licznik = 0;
  223.                     }
  224.                 }
  225.  
  226.             }
  227.         }
  228.  
  229.         if(program == 5)
  230.         {
  231.             if(start == 1)
  232.             {
  233.                 display = 21;
  234.                 start = 0;
  235.             }
  236.             else
  237.             {
  238.                 if(stan == 0)
  239.                     if(display < 84)
  240.                     {
  241.                         display = display << 1;
  242.                     }
  243.                     else
  244.                     {
  245.                         display = 168;
  246.                         stan = 1;
  247.                     }
  248.                 else
  249.                     if(display > 42)
  250.                     {
  251.                         display = display >> 1;
  252.                     }
  253.                     else
  254.                     {
  255.                         display = 21;
  256.                         stan = 0;
  257.                     }
  258.             }
  259.         }
  260.  
  261.         if(program == 6)
  262.         {
  263.             if(start == 1)
  264.             {
  265.                 stan = 0;
  266.                 pileczka = 165;
  267.                 lewa = 8;
  268.                 prawa = 16;
  269.                 display = 0;
  270.                 start = 0;
  271.             }
  272.             else
  273.             {
  274.                 if(stan == 0)
  275.                 {
  276.                     display = pileczka | prawa | lewa;
  277.                     prawa = prawa << 2;
  278.                     lewa = lewa >> 2;
  279.                     stan = 1;
  280.                 }
  281.                 else
  282.                 {
  283.                     display = pileczka | prawa | lewa;
  284.                     prawa = prawa >> 2;
  285.                     lewa = lewa << 2;
  286.                     stan = 0;
  287.                 }  
  288.             }
  289.         }
  290.        
  291.  
  292.  
  293.         if (program > 6) {
  294.             program = 1;
  295.         }
  296.         if (program < 1) {
  297.             program = 6;
  298.         }
  299.     }
  300.  
  301.  
  302.     return 0;
  303. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top