This repository has been archived on 2025-01-25. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
PM2_projekt/main.c
2025-01-11 22:53:26 +01:00

96 lines
1.8 KiB
C

#include <xc.h>
#include <stdio.h>
#pragma config FOSC = HS // Oscillator Selection bits
#pragma config WDTE = OFF // Watchdog Timer Enable bit
#pragma config PWRTE = OFF // Power-up Timer Enable bit
#pragma config CP = OFF // FLASH Program Memory Code Protection bit
#pragma config BOREN = OFF // Brown-out Reset Enable bit
#define LENGTH 8
unsigned int sum = 0; // Suma liczb 8-bitowych, zapisana w zmiennej 16-bitowej
unsigned char rest = 0;
unsigned int result = 0;
unsigned int read[LENGTH] = {};
unsigned char isFull = 0;
unsigned char index = 0;
void readData(void);
void processData(void);
void resetIndex(void);
void isReadFull(void);
void config_ad(void);
void ad_go(void);
void oblicz(void);
void print_results(void);
void main(void) {
config_ad();
while(1) { // g?ówna p?tla programu
ad_go();
readData();
isReadFull();
resetIndex();
processData();
}
return;
}
void readData(void) {
while(ADCON0bits.GO)
{
read[index] = ADRES;
index++;
}
}
void processData(void) {
if(isFull) {
oblicz();
print_results();
isFull = 0;
}
}
void resetIndex(void) {
if(index == LENGTH - 1) {
index = 0;
}
}
void isReadFull(void) {
if(!isFull && index == LENGTH - 1) {
isFull = 1;
}
}
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);
}