Kod programu wygląda na poprawny.
Jak nie odbierasz danych na przerwaniu, to czekasz w pętli czekającej na flagę RXC0. Ale gdy używasz przerwania, to non stop komunikujesz się z wyświetlaczem. Może to powoduje Twoje problemy. Czy na pewno masz poprawnie zrobione filtrowanie zasilania?
Przetestuj czy problem będzie występował jak wyświetlać będzie tylko raz dla jednej odebranej danej.
Możesz to zrobić poprzez uśpienie procesora. Kolejne przerwanie obudzi Ci procesor, więc będziesz miał poprawny odbiór danych i poprawne wyświetlanie. Aby to zrobić dodaj:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Przed pętlą while (po sei();) daj:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
i na koniec pętli while (po wyświetleniu danych na lcd) daj:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
--
Pozdrawiam,
Robert