#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) { 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); } 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; }