72 lines
1.2 KiB
C
72 lines
1.2 KiB
C
#include <xc.h>
|
|
#include <stdio.h>
|
|
|
|
#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);
|
|
} |