|
|
mikrokontrolery.net |
|||||||||||||||||||||||||
|
Przykład 3 - przerzutnik T
Kod źródłowy programu przedstawiony jest poniżej :
Instrukcja EOR (Exclusive OR) - suma modulo 2 zawartości
dwóch rejestrów. Wykonanie operacji EOR na rejestrze z drugim argumentem
o wartości logicznej jedynki powoduje zanegowanie bitów w rejestrze.
Kod operacji : 0010 01rd dddd rrrr Nieco komentarza wymaga procedura cpl. Ponieważ na liście
instrukcji mikrokontrolerów AVR nie ma instrukcji służącej bezpośrednio
do zanegowania bitu w przestrzeni I/O, tak, jak ma to miejsce w 8051 konieczne
jest zrealizowanie tego zadania okrężną drogą. Sposób, w jaki to zrealizowałem
nie jest, być może najprostszy, ale spełnia swoje zadanie. Aby zmienić
stan lini portu wyjściowego, należy wczytać ten stan do rejestru, np.
r16. Jednak nie odczytujemy rejestru PINB, jak mogłoby się wydawać, ale
rejestr PORTB, gdyż właśnie ten rejestr ma wpływ na stan linii portu jako
wyjścia. Następnie ładujemy do r17 maskę, na podstawie której zanegujemy
odpowiedni bit. Ponieważ chcemy zanegować stan kropki wyświetlacza, która
jest połączona z pinem 7 portu B, ładujemy wartość 128 (dziesiętnie).
Po wykonaniu instrukcji EOR ładujemy z powrotem do PORTB zawartość rejestru
r16. Jak widać, to co w 8051 możemy zrealizować za pomocą jednej instrukcji,
w AVR musimy użyć trzech instrukcji. |
|||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
(c) 2004-2008 Radosław Kwiecień |