Facebook
From Sloppy Madrill, 8 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 454
  1. #include <p24fj128ga010.h>
  2.  
  3. //Konfiguracja dla Explorer 16 z progr. icd2
  4. _CONFIG1(JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & FWDTEN_OFF)
  5. _CONFIG2(FCKSM_CSDCMD & OSCIOFNC_ON & POSCMOD_HS & FNOSC_PRI)
  6.  
  7. #define SCALE 308L
  8.  
  9. int bitEnty(int nat, int numer)
  10. {
  11.         int a=0,i;
  12.         int tab[8]={0};
  13.         int temp[8]={0};
  14.        
  15.         while(nat!=0)
  16.         {
  17.                 temp[a]=nat%2;
  18.                 a++;
  19.                 nat/=2;
  20.         }
  21.         a=0;
  22.         for (i=7;i>=0;i--)
  23.         {
  24.                 tab[i]=temp[a];
  25.                 a++;
  26.         }
  27.         return tab[7-numer];
  28. }
  29.  
  30.  
  31. int main(void){
  32. unsigned long j,k;
  33. unsigned long i;
  34. unsigned char display;
  35.  PORTA=0x0000;
  36.  TRISA=0xFF00;
  37.  TRISD=0xFFFF;
  38. again:
  39.  
  40. func0:
  41.                                 display=0;
  42.                                 for (;;)
  43.                                 {      
  44.                                         for(i=500L*SCALE;i>0;i--) Nop();
  45.                                         if (PORTDbits.RD13 == 0)
  46.                                         {
  47.                                                 goto func1;
  48.                                         }
  49.                                         else if (PORTDbits.RD6 == 0)
  50.                                         {
  51.                                                 goto func8;
  52.                                         }
  53.                                         else
  54.                                         {
  55.                                                 Nop();
  56.                                                 PORTA=(unsigned int) display;
  57.                                                 for(i=500L*SCALE;i>0;i--) Nop();
  58.                                                         display=display+1;
  59.                                         }
  60.                                 }
  61. func1:
  62.                                 display=255;
  63.                                 for (;;)
  64.                                 {      
  65.                                         for(i=500L*SCALE;i>0;i--) Nop();       
  66.                                         if (PORTDbits.RD13 == 0)
  67.                                         {
  68.                                                 goto func2;
  69.                                         }
  70.                                         else if (PORTDbits.RD6 == 0)
  71.                                         {
  72.                                                 goto func0;
  73.                                         }
  74.                                         else
  75.                                         {
  76.                                        
  77.                                                 PORTA=(unsigned int) display;
  78.                                                 for(i=500L*SCALE;i>0;i--) Nop();
  79.                                                         display=display-1;
  80.                                         }
  81.                                 }
  82.                        
  83. func2:
  84.                                 display=0;
  85. for(;;)
  86. {
  87.                                        
  88.                                 for (k=1; k<=9; k++)
  89.                                 {
  90.                                         for (j=0;j<=9;j++)
  91.                                         {
  92.                                         for(i=500L*SCALE;i>0;i--) Nop();
  93.                                                 for(i=500L*SCALE;i>0;i--) Nop();       
  94.                                                         if (PORTDbits.RD13 == 0)
  95.                                                         {
  96.                                                                 goto func3;
  97.                                                         }
  98.                                                         else if (PORTDbits.RD6 == 0)
  99.                                                         {
  100.                                                                 goto func1;
  101.                                                         }
  102.                                                         else
  103.                                                         {
  104.                                                                         display=display+1;
  105.                                                                         PORTA=(unsigned int) display;
  106.                                                         }
  107.                                         }
  108.                                         display = 0;
  109.                                         display = 16*k;
  110.                                         PORTA=(unsigned int) display;
  111.                                 }
  112.                                 display =0;
  113. }                              
  114.        
  115. func3:
  116.                        
  117. for (;;)
  118. {
  119.                                 Nop();
  120.                                 for (k=9; k>0; k--)
  121.                                 {
  122.                                         display = 16*k+9;
  123.                                         PORTA=(unsigned int) display;
  124.                                         for (j=0;j<=9;j++)
  125.                                         {
  126.                                         for(i=500L*SCALE;i>0;i--) Nop();
  127. if (PORTDbits.RD13 == 0)
  128.                                                         {
  129.                                                                 goto func4;
  130.                                                         }
  131.                                                         else if (PORTDbits.RD6 == 0)
  132.                                                         {
  133.                                                                 goto func2;
  134.                                                         }
  135.                                                         else
  136.                                                         {
  137.                                                         display=display-1;
  138.                                                         PORTA=(unsigned int) display;
  139. }
  140.                                         }
  141.                                 }
  142.                                 display =9;
  143.                                 for (j=0;j<=9;j++)
  144.                                         {
  145.                                         for(i=500L*SCALE;i>0;i--) Nop();
  146.                                                 if (PORTDbits.RD13 == 0)
  147.                                                         {
  148.                                                                 goto func4;
  149.                                                         }
  150.                                                         else if (PORTDbits.RD6 == 0)
  151.                                                         {
  152.                                                                 goto func2;
  153.                                                         }
  154.                                                         else
  155.                                                         {
  156.                                                         display=display-1;
  157.                                                         PORTA=(unsigned int) display;
  158. }
  159.                                         }
  160.                                 display=0;
  161.                        
  162.                                 }
  163.                                
  164. func4:
  165. display=0;
  166. unsigned char displayX=0;
  167. for (;;)
  168. {
  169.    
  170.     if (PORTDbits.RD6 == 0)
  171.         {
  172.          goto func3;
  173.         }
  174.     else if (PORTDbits.RD13 == 0)
  175.         {
  176.          goto func5;
  177.         }
  178.         else
  179.         {
  180.                 PORTA=(unsigned int) displayX;
  181.         for(i=500L*SCALE;i>0;i--) Nop();
  182.         displayX=display^(display/2);
  183.         display=display+1;
  184.         }
  185. }                
  186. func5:
  187. {
  188.                         unsigned char displayX=0;
  189.                         for(;;)
  190.                         {
  191.                 PORTA=(unsigned int) displayX;  
  192.                 if (PORTDbits.RD6 == 0)
  193.                         goto func4;
  194.                 else if (PORTDbits.RD13 == 0)
  195.                         goto func6;
  196.                                 else
  197.                                 {
  198.                                 for(i=500L*SCALE;i>0;i--) Nop();
  199.                 displayX=display^(display/2);
  200.                 display=display-1;
  201.                                
  202.                                 }
  203.               }
  204. }
  205. func6:  
  206.                                 display = 0;
  207.                                 for (;;){
  208.                                 for(i=500L*SCALE;i>0;i--) Nop();       
  209.                                 Nop();
  210.                                 PORTA=(unsigned int) display;
  211.                                 if (PORTDbits.RD13 == 0)
  212.                                                         {
  213.                                                                 goto func7;
  214.                                                         }
  215.                                                         else if (PORTDbits.RD6 == 0)
  216.                                                         {
  217.                                                                 goto func5;
  218.                                                         }
  219.                                                         else
  220.                                 if (display<7)
  221.                                 {
  222.                                         for(i=500L*SCALE;i>0;i--) Nop();
  223.                                                 display=display+1;
  224.                                         PORTA=(unsigned int) display;
  225.                                         for(i=500L*SCALE;i>0;i--) Nop();
  226.                                                 display=display+2;
  227.                                         PORTA=(unsigned int) display;
  228.                                         for(i=500L*SCALE;i>0;i--) Nop();
  229.                                                 display=display+4;
  230.                                         PORTA=(unsigned int) display;
  231.                                 }
  232.                                 else
  233.                                 {
  234.                                         for(i=500L*SCALE;i>0;i--) Nop();
  235.                                         display = display << 1;
  236.                                 }      
  237.                                 }
  238. func7:
  239. display=0;
  240. for (;;)
  241. {      
  242.         for(i=500L*SCALE;i>0;i--) Nop();
  243.         Nop();
  244.         PORTA=(unsigned int) display;
  245.         if (PORTDbits.RD13 == 0)
  246.         {
  247.                 goto func8;
  248.         }
  249.         else if (PORTDbits.RD6 == 0)
  250.         {
  251.                 goto func6;
  252.         }
  253.         else
  254.         if (display==0)
  255.         {
  256.         for(i=500L*SCALE;i>0;i--) Nop();
  257.         display=128;
  258.         PORTA=(unsigned int) display;
  259.         for(i=500L*SCALE;i>0;i--) Nop();
  260.         display=display+64;
  261.         PORTA=(unsigned int) display;
  262.         for(i=500L*SCALE;i>0;i--) Nop();
  263.         display=display+32;
  264.         PORTA=(unsigned int) display;
  265.         }
  266.         else
  267.         {
  268.                 for(i=500L*SCALE;i>0;i--) Nop();
  269.                 display = display >> 1;
  270.         }      
  271. }
  272. func8:
  273.         display = 1;
  274.         for (;;)
  275.         {
  276.                 if (PORTDbits.RD13 == 0)
  277.                                                         {
  278.                                                                 goto func0;
  279.                                                         }
  280.                                                         else if (PORTDbits.RD6 == 0)
  281.                                                         {
  282.                                                                 goto func7;
  283.                                                         }
  284.                                                         else
  285. {
  286.                 for(i=500L*SCALE;i>0;i--) Nop();
  287.                 PORTA=(unsigned int) display;
  288.                 int wynik=0;
  289.                 wynik=bitEnty(display,0)^bitEnty(display,1);
  290.                 wynik=wynik^bitEnty(display,6);
  291.                 wynik=wynik^bitEnty(display,7);
  292.                 if (wynik==1)
  293.                 {
  294.                         display = display >> 1;
  295.                         display = display + 128;
  296.                 }
  297.                 else
  298.                 {
  299.                         display = display >> 1;
  300.                 }
  301. }
  302.  
  303.         }
  304.        
  305.  
  306.  
  307. goto again;
  308. }
  309.