#include #include #define LENGTH 8 unsigned int sum = 0; // Suma liczb 8-bitowych, zapisana w zmiennej 16-bitowej unsigned char rest = 0; unsigned char result = 0; unsigned char read[LENGTH] = {}; unsigned char isFull = 0; unsigned char index = 0; void config_ad(void); void ad_go(void); void oblicz(void); void print_results(void); void main(void) { config_ad(); while(1) { ad_go(); while(ADCON0bits.GO) { read[index] = ADRES; index++; } if(!isFull && index == LENGTH - 1) { isFull = 1; } if(index == LENGTH - 1) { index = 0; } if(isFull) { oblicz(); print_results(); isFull = 0; } } return; } void config_ad(void) { ADCON0 = 0; ADCON1bits.PCFG = 0b100; ADCON0bits.ADON = 1; } void ad_go(void) { ADCON0bits.GO = 1; } void oblicz(void) { sum = 0; for(int i = 0; i < LENGTH; i++) { sum += read[i]; } result = sum / LENGTH; rest = sum % LENGTH; } void print_results(void) { printf("result: %u", result); printf("rest: %u", rest); }