#define set0(r,b) r&=~(1<<b)
#define set1(r,b) r|=(1<<b)
#define test(r,b) (r&(1<<b))
#include <LiquidCrystal.h>
LiquidCrystal lcd (13,12,11,10,9,8);
int cislo;
int pred = 0;
void setup() {
lcd.begin(16,2);
lcd.print("FREKVENCIA: MHz");
set0(DDRD,7);
set1(PORTD,7);
set0(ADMUX,REFS1);
set0(ADMUX,REFS0);
set0(ADMUX,ADLAR);
set1(ADMUX,MUX0);
set0(ADMUX,MUX1);
set0(ADMUX,MUX2);
set0(ADMUX,MUX3);
set1(ADCSRA,ADEN);
set0(ADCSRA,ADATE);
set0(ADCSRA,ADIE);
set1(ADCSRA,ADPS2);
set1(ADCSRA,ADPS1);
set1(ADCSRA,ADPS0);
set1(PCICR,PCIE2);
set1(SREG,7);
set1(PCMSK2,PCINT23);
}
void loop() {
set1(ADCSRA,ADSC);
while(test(ADCSRA,ADIF)==0);
int znak = ADCL;
znak = znak | (ADCH<<8);
cislo= map(znak,0,1023,88,108);
if(cislo != pred){
lcd.setCursor(11,0);
lcd.print(cislo);
pred=cislo;
if (cislo < 99){
lcd.setCursor(13,0);
lcd.print(" ");
}
}
}
ISR(PCINT2_vect){
if(test(PIND,7)== 0){
lcd.setCursor(0,0);
lcd.print("FREKVENCIA: kHz");
lcd.setCursor(11,0);
lcd.print(cislo);
}
if(test(PIND,7)!= 0) {
lcd.setCursor(0,0);
lcd.print("FREKVENCIA: MHz");
lcd.setCursor(11,0);
lcd.print(cislo);
}
}