Dokumentacja mikrokontrolera EM78P153S znajduje się tutaj. Problem niby trywialny. Mam taki kod, realizowany w przerwaniu od timera:
W1...W6 i W1_POM...W6_POM to zwykłe rejestry. Instrukcja rlc to teoretycznie zwykłe przesunięcie bitowe w lewo przez przeniesienie.
W moim programie W1...W6 to wiersze wyświetlane na matrycy LED (wyświetlanie w pętli głównej). W1_POM...W6_POM to pomocniczy bufor potrzebny przy animacjach - przejścia. Wykonanie czegoś takiego powinno teoretycznie wpychać bity z bufora do W1...W6. Nie jest istotne, że na najmłodsze bity W1_POM...W6_POM wchodzą śmieci. W odpowiednim momencie wszystko inicjalizuję jeszcze raz. Multipleksowanie matrycy działa prawidłowo.
Powinienem uzyskać efekt w którym jedna klatka się przesuwa i zastępuje ją inna. Problem w tym, że mimo poprawnej inicjalizacji wszystkiech zmiennych, dopiero po pięciu przesunięciach (mam matrycę 5x6) wchodzi klatka z bufora.
O co tu chodzi ? Nie wydaje mi się, by problem leżał w innym miejscu. W liście instrukcji wyraźnie podano, że rlc R wykonuje: R(n) → R(n+1), R(7) → C, C → R(0). Typowe przesunięcie bitowe.
Kod: text
W1...W6 i W1_POM...W6_POM to zwykłe rejestry. Instrukcja rlc to teoretycznie zwykłe przesunięcie bitowe w lewo przez przeniesienie.
W moim programie W1...W6 to wiersze wyświetlane na matrycy LED (wyświetlanie w pętli głównej). W1_POM...W6_POM to pomocniczy bufor potrzebny przy animacjach - przejścia. Wykonanie czegoś takiego powinno teoretycznie wpychać bity z bufora do W1...W6. Nie jest istotne, że na najmłodsze bity W1_POM...W6_POM wchodzą śmieci. W odpowiednim momencie wszystko inicjalizuję jeszcze raz. Multipleksowanie matrycy działa prawidłowo.
Powinienem uzyskać efekt w którym jedna klatka się przesuwa i zastępuje ją inna. Problem w tym, że mimo poprawnej inicjalizacji wszystkiech zmiennych, dopiero po pięciu przesunięciach (mam matrycę 5x6) wchodzi klatka z bufora.
O co tu chodzi ? Nie wydaje mi się, by problem leżał w innym miejscu. W liście instrukcji wyraźnie podano, że rlc R wykonuje: R(n) → R(n+1), R(7) → C, C → R(0). Typowe przesunięcie bitowe.