To jszcze raz ja , po tym co zaraz przedstawie zarzucicie mi może ze nie wyciągam wszystkich wniosków z Waszych cennych uwag, są to moje pierwsze kroki w programowaniu i proszę o wyrozumiałość.
Pin 2 portuB jst zadeklarowany nastepująco: DDRB |= _BV(2);
i,e,f to zmienne lokalne odpowiadajace za bajty wyluskiwane z tablicy jakie trafiaja na siedmiosegmentowy, wyswietlacz led z multiplksowaniem.
j,k,l - jest to programowana trzy cyfrowa liczba porównywana do aktualnego wskazania licznika
Zmieniłem poprzedni kod
if(i+e*10+f*100>=j+k*10+l*100&&j+k*10+l*100!=0){
PORTB |= _BV(2);
}else{PORTB &=~ _BV(2);}
//co skutkuje wylaczeniem leda w razie spelnienia warunku
na następujący:
aa=i+e*10+f*100;
bb=j+k*10+l*100;
if(aa>=bb&&bb!=0){
PORTB |= _BV(2);}else{PORTB &=~ _BV(2);}
w tej postaci działa identycznie jak w poprzedniej(tak samo zmula mi procka)
natomiast gdy:
aa=i+e*10+f*100;
bb=j+k*10+l*100;
if(aa>=bb&&bb!=0){;}
- program jest owiele szybszy, po prostu widzę to po częstotliwosci multipleksowania która mam zrealizowana w oparciu o glówną pętle.
Dodano po 5 [godziny] 55 [minuty]: Problem udalo mi sie częsciowo rozwiązać obliczając zmienną bb tylko raz.
dodaje aktualny kod ktory jest moim poligonem doświadczalnym
http://www.nopaste.pl/6ew , docelowo ma postać z tego czegoś : licznik obrotów,prędkościomierz i kontomierz w oparciu o enkoder inkrementalny z miezerą podziałką 120 impulsow na obrót który tez gdzieś na boku powstaje
