DomEN08 wrote: Jeśli chodzi o punkt drugi to zmieniłem i teraz na wyświetlaczu przynajmniej napis nie mruga, ale nadal zero reakcji na przyciski. I jak sterować tym kursorem? I jeśli tam jest zmienna program 1 i program 2 do przechowywania wartości do wyświetlania to jak wybrać program 2 bo teraz mam cały czas program 1, w ogóle nie rozumiem tego programu.
Wizualny effect po tej zmianie jest tylko zwyczajnym przypadkiem lub złudzeniem, a rzeczywista przyczyna leży gdzie indziej.
Bascom, przy konfiguracji kierunku portu akceptuje użycie terminu "PORT" na równi z terminem "PIN". Równie poprawna konfiguracja byłaby wyedytować bezpośrednio register "DDRd = xxx", gdzie xxx oznacza aktualna wartośc wpisu do rejestru w dowolnej notacji: np, dziesiętnej: (48), hex: (&H30), binary: (&B110000). Równie poprawna konfiguracja portu byłaby; wyedytować tylko piny wyjścia (4 i 5) a pozostałe "pominąć", które 'by default' we wszystkich AVR są WEJŚCIAMI, jeżeli nie są skonfigurowano inaczej.
Przyczyn 'mrugania' napisu na wyświetlaczu może być kilka.
Najczęsciej, poza sroną techniczną (wadliwą/kiepską, nie filtrowaną linią zasilania, zbyt długie i krzyżujące się połączena na pytce terstowej - ewentualna interferencja sygnałów), może być nieprawidłowe i nagminne stosowanie CLS, lub nawet zbyt częste odświerzanie treści tego napisu, albo tez sama jego procedura może powodować wrażenie "mrugania".
Wydaje mi się być kompletnym błędem 'wpychanie' CLS do pętli Do... Loop .
Bardziej praktycznym sposobem jest nadpisywanie wyznaczonego miejsca na lcd stosując procedurę 'Locate x,y;' w wymaganych momentach programu.
Użycie CLS (inaczej czyszczenie całego buffora pamięci display) ma uzasadnienie na początku programu gdy stosuje sie swoistego rodzaju 'salut powitalny', a po nim przechodzimy do normalnej rutyny pracy, lub też gdy treść całej screen jest odmiena od kolejnej, albo też wyświeltane parametry lub ich labels przyjmuja inną formę lub miejsce.
Zwykle odbywa sie to w formie "na rządanie" - powodowane zazwyczaj jakąś flagą generowaną w innej częsci programu i która jest sprawdzana w "Do ...Loop".
Pracując z menu jak to wygląda z pytania, NIE edytujesz samej screen (nie ma potrzeby przesuwania cursora) a edytujesz zmienna, która jest w tym momencie wyświetlana. Miejsce tej zmiennej jest zdefiniowane wcześniej i powinno być znane dla programisty na wypadek zastosowania znanego "mrugania" tym miejscem; w określonych odstępach czasu wyświetlana jest na przemian: rzeczywista wartość zmiennej lub " " - pomiędzy znakami odpowiednia ilość spacji.
Tutaj też użyjesz 'Locate x, y...' w odpowiedniej jak rozumiem subrutynie obsługującej menu.
e marcus