64__ 7. Port
Tabela 7-4 różnica symetryczna
instrukcje: |
zapis binarny instrukcji |
-—- wykonywane operacje |
XRL A,Rn |
OllOlrrr |
A <- A xor Rn |
XRL A,adr |
01100101 adr |
A <- A xor (adr) |
XRL A,@Ri |
OllOOlli |
A <- A xor (Ri) |
XRL A,#dana |
01100100 dana |
A A xor dana |
XRL adr,A |
01100010 adr |
(adr) <- (adr) xor A |
XRL adr,#dana |
01100011 adr dana |
(adr) <- (adr) xor dana |
Tabela 7-5 zerowanie i negacja akumulatora
instrukcje: |
zapis binarny instrukcji |
wykonywane operacje |
CLR A |
11100100 |
A<-0 |
CPL A |
01110100 |
A <- not A |
Operacje bitowe: Tabela 7-6 iloczyn logiczny | ||
instrukcje: |
zapis binarny instrukcji |
wykonywane operacje 1 |
ANL c,bit |
10000010 adres bitu |
C <- C and bit |
ANL cybit |
10110000 adres bitu |
C <- C and (not bit) |
Tabela 7-7 suma logiczna | ||
instrukcje: |
zapis binarny instrukcji |
wykonywane operacje |
ORL C,bit |
11110010 adres bitu |
C 4- C or bit |
ORL Cybit |
10100000 adres bitu |
C «- C or (not bit) |
Tabela 7-8 negacja bitu | ||
instrukcje: |
zapis binarny instrukcji |
wykonywane operacje |
CPL C |
10110011 |
C <— not C |
CPL bit |
00110010 |
bit «- not bit |
Tabela 7-9 ustawianie bitu w stan 1
instrukcje: |
zapis binarny instrukcji |
wykonywane operacje |
ŚETB C |
11010011 |
C<-1 |
SETB bit |
11010010 adres bitu |
bit «- 1 |
Tabela 7-10 zerowanie bitu
instrukcje: |
zapis binarny instrukcji |
wykonywane operacje |
CLR C |
11000011 |
C«-0 |
CLR bit |
01110010 adres bitu |
bit <- 0 |
gdzie: rrr - numer rejestru R0 + R7 aktualnego banku rejestrów (rrr = 000 dla RO, rrr = 111 dla R7),
i - numer rejestru RO, R1 aktualnego banku rejestrów (i= 0 dla RO, i = l dla Rl),
adr - adres pierwszych 128 bajtów pamięci wewnętrznej RAM lub adresów rejestrów w obszarze SFR,
dana- zmienna 8-bitowa,
() - zawartość komórki pamięci danych lub rejestru w obszarze SFR o
adresie podanym w nawiasach.
Operacje logiczne na zawartościach komórek pamięci wewnętrznej RAM u-mieszczonych powyżej adresu 127 (07Fh) mogą być wykonywane tylko przy pomocy rozkazów pośrednich - adresowanie poprzez rejestry RO i Rl.
Korzystając z rozkazów logicznych można ustawić w odpowiedni stan kilka linii portów jednocześnie. Na przykład, gdy linie 0, 3,5 i 6 portu PI mają być ustawione w stan 1, to można to osiągnąć stosując rozkaz sumy logicznej ORL Pl,#01101001b. Jeżeli odpowiednia dana znajduje się w akumulatorze, to można wykonać rozkaz ORL PI,A, który będzie o jeden bajt krótszy od poprzedniego. Pozostałe linie portu, którym odpowiadają wartości zerowe danej nie ulegną zmianie. Gdy trzeba odpowiednie linie portu ustawić w stan zera, należy zastosować rozkaz iloczynu logicznego, np. ANL Pl,#53h. Po wykonaniu takiego rozkazu linie 2, 3, 5 i 7 będą miały stan 0, a pozostałe nie ulegną zmianie.
Jeżeli mają być ustawiane pojedyncze linie portu, to można użyć rozkazów operacji bitowych, np CLR P3.5 - zerowanie linii 5 portu P3 lub SETB Pi l -ustawienie w stan 1 linii 7 portu PI, co spowoduje włączenie przekaźnika z rysunku 7-5.