Facebook
From Stained Plover, 8 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 408
  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.  
  10. #define TVOLT 5
  11. #define AINPUTS 0xffcf
  12.  
  13. void ADCinit(int amask)
  14. {
  15.         AD1PCFG = amask;
  16.         AD1CON1 = 0x00e0;
  17.         AD1CSSL = 0;
  18.         AD1CON2 = 0;
  19.         AD1CON3 = 0x1f02;
  20.         AD1CON1bits.ADON = 1;
  21. }
  22.  
  23. int readADC(int ch)
  24. {
  25.         AD1CHS = ch;
  26.         AD1CON1bits.SAMP = 1;
  27.         while (!AD1CON1bits.DONE);
  28.         return ADC1BUF0;
  29. }
  30.  
  31. int main(void){
  32. unsigned long i;
  33. unsigned char display=255;
  34. unsigned char displayX=0;
  35. //inicjalizacja
  36.  PORTA=0x0000;
  37.  TRISA=0xFF00;
  38.  TRISD=0xFFFF;
  39.  
  40.         int volt;
  41.         //inicjalizacja
  42.         ADCinit(AINPUTS); //inicjalizacja konwertera AD
  43. //nieko�cz�ca si� p�tla
  44. again1:
  45.         Nop();
  46.        
  47.                 volt = readADC(TVOLT); //Odczytanie potencjometru
  48.                 if(volt<200) volt=200;
  49.                 if(volt>1100) volt=1100;
  50. /*
  51.                 for(i=volt * SCALE;i>0;i--)
  52.                          Nop();
  53.                 PORTA=(unsigned int) display;
  54.                 display=display+1;
  55. */
  56. /*
  57.                 for(i=volt*SCALE;i>0;i--) Nop();
  58.                 PORTA=(unsigned int) displayX;
  59.                 displayX=(display/10*16) + (display%10);
  60.                 display=display+1;
  61. */
  62.  
  63. for(i=volt*SCALE;i>0;i--) Nop();
  64.                 PORTA=(unsigned int) display;
  65.                 display=display+1;
  66.         if (PORTDbits.RD13 == 0)
  67.         goto again2;
  68.        
  69.         goto again1;
  70. again2:
  71.         Nop();
  72.        
  73.                 volt = readADC(TVOLT); //Odczytanie potencjometru
  74.                 if(volt<200) volt=200;
  75.                 if(volt>1100) volt=1100;
  76. /*
  77.                 for(i=volt * SCALE;i>0;i--)
  78.                          Nop();
  79.                 PORTA=(unsigned int) display;
  80.                 display=display+1;
  81. */
  82. /*
  83.                 for(i=volt*SCALE;i>0;i--) Nop();
  84.                 PORTA=(unsigned int) displayX;
  85.                 displayX=(display/10*16) + (display%10);
  86.                 display=display+1;
  87. */
  88.  
  89. for(i=volt*SCALE;i>0;i--) Nop();
  90.                 PORTA=(unsigned int) displayX;
  91.                 displayX=display^(display/2);
  92.                 display--;
  93. if (PORTDbits.RD6 == 0)
  94. goto again1;   
  95.        
  96.         goto again2;
  97.  
  98. }