Laboratorium Podstaw Techniki Mikroprocesorowej Instytut Mikroelektroniki i Optoelektroniki PW MIKROKONTROLER 85 - wiadomości podstawowe. Schemat blokowy mikrokontrolera 85 Obszar rejestrów specjalnych F8H FFH FH B F8H E8H EFH EH ACC E7H D8H DFH DH PSW D7H C8H TCON RCAPL RCAPH TL TH CFH CH C7H B8H IP BFH BH P B7H A8H IE AFH AH P A7H 98H SCON SBUF 9FH 9H P 97H 88H TCON TMOD TL TL TH TH 8FH 8H P SP DPL DPH 87H Adresowane bitowo. Wybrane rejestry specjalne:. Rejestr stanu PSW (program status word) Rejestr adresowany bitowo.. Struktura wewnętrznej pamięci danych mikrokontrolera Intel 85 RAM dla użytkownika 7FH H FH H FH 8H 7H H FH obszar adresowany bajtowo obszar adresowany bitowo 8H 7H R7 H R CY AC F RS RS OV - P CY PSW.7 - wskaźnik przeniesienia (symbol w asemblerze C) AC PSW.6 - wskaźnik przeniesienia połówkowego F PSW.5 - wskaźnik ogólnego przeznaczenia do wykorzystania przez programistę RS PSW.4 - bit wyboru banku rejestrów RS PSW. - bit wyboru banku rejestrów OV PSW. - wskażnik nadmiaru (dla obliczeń w kodzie BCD) - PSW. - wskaźnik definiowany przez użytkownika P PSW. - wskaźnik parzystości (ustawiany sprzętowo jeżeli liczba jedynek w akumulatorze jest nieparzysta, zerowany w przeciwnym przypadku) Wybór banku rejestrów RS RS Bank rejestrów Adres H-7H 8H-FH H-7H 8H-FH. Rejestry związane systemem przerwań Mikrokontroler 85 posiada 5 źródeł przerwań: przerwania zewnętrzne, przerwanie od liczników T i T oraz od portu szeregowego. Wektory przerwań przypisane konkretnym źródłom przerwań są następujące:
Źródło przerwania Znacznik przerwania Wektor przerwania źródło zewnętrzne nr licznik T źródło zewnętrzne nr licznik T port szeregowy IE TF IE TF RI&TI H BH H BH H.. Rejestr aktywacji przerwań IE (Interrupt Enable Register) Rejestr adresowany bitowo. Jeżeli dany bit jest równy zero, związane z nim przerwanie nie jest aktywne. Nadanie bitowi wartości równej uaktywnia związane z nim przerwanie. EA - - ES ET EX ET EX EA IE.7 - globalny bit aktywacji przerwań. Jeżeli EA=, żadne przerwanie nie zostanie przyjęte, jeżeli EA=, aktywacja przerwań z danego źródła zależy od stanu indywidualnego bitu aktywacji przerwań tego źródła. ES IE.4 - indywidualny bit aktywacji przerwań z portu szeregowego ET IE. - indywidualny bit aktywacji przerwań z licznika T EX IE. - indywidualny bit aktywacji przerwań ze źródła zewnętrznego nr ET IE. - indywidualny bit aktywacji przerwań z licznika T EX IE. - indywidualny bit aktywacji przerwań ze źródła zewnętrznego nr.. Rejestr priorytetów przerwań IP (Interrupt Priority Register) W systemie przerwań mikrokontrolera 85 przewidziano poziomy priorytetu: wyższy i niższy. Jeżeli odpowiedni bit ma wartość, przerwania z nim związane ma priorytet wyższy, jeżeli wartość bitu wynosi, odpowiadające mu przerwanie ma priorytet niższy. IT TCON. - bit wyboru typu przerwania z zewnętrznego źródła nr (programowe ustawienie/zerowanie bitu powoduje, że przerwanie jest wywoływane przez opadające zbocze/niski poziom)... Rejestr sterowania trybem pracy liczników TMOD (Timer/Counter Mode Control Register) Rejestr nie jest adresowany bitowo. GATE C/T M M GATE C/T M M 4444444444 4444444444 licznik T icznik T GATE - bramkowanie licznika sygnałem zewnętrznym, jeżeli GATE= C/T - wybór funkcji: C/T= - licznik impulsów zewn., C/T= - czasomierz (zlicza impulsy zegara). M - bit wyboru trybu pracy M - bit wyboru trybu pracy M M Tryb pracy -bitowy czasomierz 6-bitowy czasomierz/licznik 8-bit. licznik/czasomierz z automatycznym przeładowaniem oba rejestry licznika T stają się niezależnymi 8-bitowymi licznikami/czasomierzami. Licznik T zatrzymany. - - - PS PT PX PT PX PS IP.4 - określa priorytet przerwania z portu szeregowego PT IP. - określa priorytet przerwania z licznika T PX IP. - określa priorytet przerwania ze źródła zewnętrznego nr PT IP. - określa priorytet przerwania z licznika T PX IP. - określa priorytet przerwania ze źródła zewnętrznego nr Aby uniknąć konfliktu w obrębie danego poziomu, została ustalona następująca kolejność:.. Rejestry związane z licznikami T i T.. Rejestr sterowania licznikami TCON (Timer/Counter Control Register) Rejestr adresowany bitowo. TF TCON.7 - TR TCON.6 - TF TCON.5 - TR TCON.4 - TF TR TF TR IE IT IE IT wskaźnik przerwania z licznika T (ustawiany i zerowany sprzętowo) bit aktywacji licznika T (ustawiany/zeroany programowo, aby uruchomić/zatrzymać licznik). wskażnik przerwania z licznika T (ustawiany i zerowany sprzętowo) bit aktywacji licznika T (ustawiany/zeroany programowo, aby uruchomić/zatrzymać licznik). IE TCON. - wskaźnik przerwania z zewnętrznego źródła nr (ustawiany i zerowany sprzętowo). IT TCON. - bit wyboru typu przerwania z zewnętrznego źródła nr (programowe ustawienie/zerowanie bitu powoduje, że przerwanie jest wywoływane przez opadające zbocze/niski poziom). IE TCON. - wskaźnik przerwania z zewnętrznego źródła nr (ustawiany i zerowany sprzętowo).
SCON. (TI) - znacznik przerwania związanego z transmisją (zerowany programowo) SCON. (RI) - znacznik przerwania związanego z odbiorem (zerowany programowo) SM SM Tryb pracy Częstotliwość przesył synchroniczny przesył asynchroniczny (8 bitów) przesył asynchroniczny (9 bitów) przesył asynchroniczny (9 bitów) f osc / regulowana f osc / lub f osc /64 regulowana Częstotliwość w trybie : f SMOD = 64 f osc Częstotliwość w trybach i jest określona przez zawartość rejestru TH: SMOD fosc f = [ 56 ( TH) ] Licznik T zwykle pracuje wówczas jako czasomierz w trybie (licznik 8-bitowy z automatycznym przeładowaniem)..4.. Rejestr PCON Bit SMOD znajduje się w rejestrze PCON (adres 87H): Rejestr PCON nie jest adresowany bitowo. SMOD - - - GF GF PD IDL SMOD - bit podwojenia częstotliwości przesyłu danych w trybach, i portu szeregowego GF - wskaźnik (flaga) ogólnego przeznaczenia GF - wskaźnik (flaga) ogólnego przeznaczenia PD - bit aktywacji trybu POWER DOWN (tryb pracy z obniżonym poborem mocy) IDL - bit aktywacji trybu IDLE (tryb pracy z obniżonym poborem mocy). 4 Rejestry związane z portem szeregowym Port szeregowy jest w pełni dwukierunkowy (full duplex). Odbiór danych jest buforowany, tzn. można rozpocząć odbiór drugiego bajtu zanim jego poprzednik zostanie odczytany z rejestru odbiornika (jeżeli jednak w momencie gdy zakończył się odbiór drugiego bajtu, poprzedni nadal nie został odczytany, jeden bajt zostanie bezpowrotnie stracony). Rejestr nadajnika i odbiornika są dostępne jako rejestr specjalny SBUF, chociaż w rzeczywistości są to dwa odrębne rejestry (zapis do SBUF powoduje załadowanie wartości do rejestru nadajnika, natomiast odczyt z SBUF to odczyt z rejestru odbiornika)..4. Rejestr SCON sterujący pracą portu szeregowego Rejestr SCON dostępny bitowo SM SM SM REN TB8 RB8 TI RI SCON.7 (SM) - wybór trybu pracy portu szeregowego SCON.6 (SM) - wybór trybu pracy portu szeregowego SCON.5 (SM) - jeżeli SM=, to przerwanie związane z odebraniem znaku zgłasza się tylko wtedy, gdy RB8=. SCON.4 (REN) - bit odblokowania odbioru (REN= odblokowuje odbiór) SCON. (TB8) - 9-ty bit danych transmitowany w trybie lub, wartość nadawana programowo SCON. (RB8) - 9-ty bit danych odebrany w trybie lub, albo bit stopu w trybie lub 4. Lista rozkazowa oznaczenia: A - akumulator C - wskaźnik przeniesienia DPTR - wskaźnik danych, rejestr 6-bitowy Rn - rejestr R-R7 z aktywnego banku rejestrów direct - 8-bitowy adres lokacji w wewnętrznej pamięci danych (adresowanie bezpośrednie) @Ri - 8-bitowa lokacja w wewnętrzej pamięci danych dostępna pośrednio poprzez zawartość rejstru R lub R (adresowanie rejestrow pośrednie) #n - 8-bitowa stała (adresowanie natychmiastowe) #nn - 6-bitowa stała (adresowanie natychmiastowe) bit - adres bitu dostępnego bezpośrednio (z obszaru H-FH wewnętrznej pamięci danych lub z niektórych rejestrów specjalnych) /bit - negacja zawartości bitu o adresie "bit" rel - przesunięcie 8-bitowe o wartościach zawartych w przedziale <-8, 7> etykieta - adres -bitowy lub 6-bitowy
Tryby adresowania wewnętrznej pamięci danych: a) Adresowanie bezpośrednie (możliwe dla całego obszaru) np. instrukcja: mov A, H (A) (H) oznacza, że do akumulatora podstawiana jest zawartość komórki pamięci o adresie H. UWAGA!!! Jeżeli trzeba zastosować adresowanie bezpośrednie w stosunku do akumulatora, to występuje on jako ACC, np. instrukcje push ACC i pop ACC. b) Adresowanie natychmiastowe, np. instrukcja: mov A, #H (A) H oznacza, że do akumulatora podstawiana jest wartość H. c) Adresowanie przez nazwę rejestru, dotyczy akumulatora, rejestru DPTR oraz rejestrów R-R7 z wybranego banku rejestrów, np. instrukcja: mov A, R (A) (R) oznacza, że do akumulatora jest podstawiana zawartość rejestru R d) Adresowanie rejestrowe pośrednie (dla obszaru H-7FH), np. instrukcja mov A, @R (A) ((R)) oznacza, że do akumulatora wpisywana jest zawartość komórki pamięci, której adres znajduje się w rejestrze R. e) Adresowanie bezpośrednie bitów (dla obszaru H-FH oraz rejestrów specjalnych, adresowanych bitowo np. instrukcja: mov C, ACC.7 (C) (ACC.7) oznacza, że do wskaźnika przeniesienia C (PSW.7) wpisywana jest wartość najstarszego bitu akumulatora Inne przykłady adresowania bezpośredniego bitów: mov TCON.5, C jb H., skacz jnb P., pętla 4. Operacje arytmetyczne Jednym z argumentów dwuargumentowych operacji arytmetycznych jest zawsze akumulator, wynik operacji również jest umieszczony w akumulatorze. Instrukcja ADD A, Rn ADD A, direct ADD A, @Ri ADD A, #n ADDC A, Rn ADDC A, direct ADDC A, @Ri ADDC A, #n SUBB A, Rn SUBB A, direct SUBB A, @Ri SUBB A, #n INC A INC Rn INC direct INC @Ri INC DPTR Długość Dodawanie bez przeniesienia Dodawanie z przeniesieniem Odejmowanie (zawsze z pożyczką) Inkrementacja (zwiększanie o ) Instrukcja Długość DEC A Dekrementacja DEC Rn (zmniejszanie o ) DEC direct DEC @Ri MUL AB 4 Mnożenie A B (młodszy bajt wyniku w A, starszy w B) DIV AB 4 Dzielenie całkowite A/B (wynik dzielenia w A, reszta dzielenia w B) DA A Korekcja dziesiętna (dla kodu BCD) 4. Operacje logiczne Instrukcja Długość ANL A, Rn iloczyn logiczny (wynik w pierwszym argumencie) ANL A, direct ANL A, @Ri ANL A, #n ANL direct, A ANL direct, #n ORL A, Rn suma logiczna (wynik w pierwszym argumencie) ORL A, direct ORL A, @Ri ORL A, #n ORL direct, A ORL direct, #n XRL A, Rn suma rozłączna - exclusive-or (wynik w pierwszym XRL A, direct argumencie) XRL A, @Ri XRL A, #n XRL direct, A XRL direct, #n CLR A zerowanie akumulatora CPL A negacja poszczególnych bitów akumulatora RL A rotacja akumulatora w lewo RLC A rotacja w lewo poprzez bit przeniesienia RR A rotacja akumulatora w prawo RRC A rotacja w prawo poprzez bit przeniesienia SWAP A zamiana połówek akumulatora 4
4. Przesłania danych Instrukcja Długość MOV A, Rn przesłanie w obrębie wewnętrznej pamięci danych MOV A, direct (pierwszy argument jest celem, drugi źródłem) MOV A,@Ri MOV A,#n MOV Rn, A MOV Rn, direct MOV Rn, #n MOV direct, A MOV direct, Rn MOV direct, direct MOV direct, @Ri MOV direct, #n MOV @Ri, A MOV @Ri, direct MOV @Ri, #n MOV DPTR, #nn MOVC A, @A+DPTR przesłania pomiędzy pamięcią programu i akumulatorem MOVC A, @A+PC MOVX A, @DPTR przesłania z /do zewnętrznej pamięci danych MOVX A, @Ri MOVX @DPTR, A MOVX @Ri, A PUSH direct położenie na stos POP direct zdjęcie ze stosu XCH A,Rn wymiana zawartości między rejestrami XCH A,direct XCH A,@Ri XCHD A, @Ri wymiana młodszej cyfry 4.4 Operacje na bitach Instrukcja Długość CLR C zerowanie wskaźnia przeniesienia C CLR bit zerowanie bitu SETB C ustawianie wskaźnia przeniesienia C SETB bit ustawianie bitu CPL C negacja wskaźnia przeniesienia C CPL bit negacja bitu ANL C,bit iloczyn logiczny ANL C, /bit ORL C,bit suma logiczna ORL C, /bit MOV C, bit przesłanie MOV bit, C JC rel skacz, jeżeli C= JNC rel skacz, jeżeli C= JB bit, rel skacz, jeżeli bit= JNB bit, rel skacz, jeżeli bit= JBC bit, rel skacz, jeżeli bit=i wyzeruj bit 5 4.5 Skoki w programie Instrukcja Długość *) CALL etykieta - - wywołanie procedury etykieta RET powrót z procedury RETI powrót z procedury obsługi przerwania *) JMP etykieta - - skok bezwarunkowy JZ rel skok warunkowy, jeżeli A= JNZ rel skok warunkowy, jeżeli A CJNE A, direct, rel porównaj dwa pierwsze argumenty i skacz jeżeli nie są CJNE A, #n, rel sobie równe CJNE Rn, #n, rel CJNE @Ri, #n, rel DJNZ Rn, rel zdekrementuj pierwszy argument i skacz, jeżeli wynik DJNZ direct, rel różny od zera NOP nic nie rób 5. Komunikacja z zewnętrzną pamięcią danych 6. Komunikacja z zewnętrzną pamięcią programu *) W rzeczywistoœci istnieje więcej wariantów tej instrukcji. W zależności od sytuacji asembler przetłumaczy formę podaną w tabeli na odpowiedni wariant.
6