#include //Konfiguracja dla Explorer 16 z progr. icd2 _CONFIG1(JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & FWDTEN_OFF) _CONFIG2(FCKSM_CSDCMD & OSCIOFNC_ON & POSCMOD_HS & FNOSC_PRI) #define SCALE 308L #define TVOLT 5 #define AINPUTS 0xffcf void ADCinit(int amask) { AD1PCFG = amask; AD1CON1 = 0x00e0; AD1CSSL = 0; AD1CON2 = 0; AD1CON3 = 0x1f02; AD1CON1bits.ADON = 1; } int readADC(int ch) { AD1CHS = ch; AD1CON1bits.SAMP = 1; while (!AD1CON1bits.DONE); return ADC1BUF0; } int main(void){ unsigned long i; unsigned char display=255; unsigned char displayX=0; //inicjalizacja PORTA=0x0000; TRISA=0xFF00; TRISD=0xFFFF; int volt; //inicjalizacja ADCinit(AINPUTS); //inicjalizacja konwertera AD //nieko�cz�ca si� p�tla again1: Nop(); volt = readADC(TVOLT); //Odczytanie potencjometru if(volt<200) volt=200; if(volt>1100) volt=1100; /* for(i=volt * SCALE;i>0;i--) Nop(); PORTA=(unsigned int) display; display=display+1; */ /* for(i=volt*SCALE;i>0;i--) Nop(); PORTA=(unsigned int) displayX; displayX=(display/10*16) + (display%10); display=display+1; */ for(i=volt*SCALE;i>0;i--) Nop(); PORTA=(unsigned int) display; display=display+1; if (PORTDbits.RD13 == 0) goto again2; goto again1; again2: Nop(); volt = readADC(TVOLT); //Odczytanie potencjometru if(volt<200) volt=200; if(volt>1100) volt=1100; /* for(i=volt * SCALE;i>0;i--) Nop(); PORTA=(unsigned int) display; display=display+1; */ /* for(i=volt*SCALE;i>0;i--) Nop(); PORTA=(unsigned int) displayX; displayX=(display/10*16) + (display%10); display=display+1; */ for(i=volt*SCALE;i>0;i--) Nop(); PORTA=(unsigned int) displayX; displayX=display^(display/2); display--; if (PORTDbits.RD6 == 0) goto again1; goto again2; }