Architektura mikrokontrolera MCS51 Ryszard J. Barczyński, 2017 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego
Architektura mikrokontrolera MCS51 Co siedzi w środku?... Wersje μc 8051 są nieprawdopodobnie liczne, ale wszystkie posiadają pewne stałe elementy. Występują zarówno w postaci dyskretnej, wbudowanej w większe układy, jak i IP-Core w układach FPGA czy ASIC. Opracowany w latach 80 XX wieku jest popularny do dziś pozostając prawdopodobnie najpopularniejszym mikrokontrolerem.
8 bitowy procesor optymalizowany pod kątem sterowania rozbudowane operacje logiczne (również bitowe) 64 kb przestrzeni adresowej programu 64 kb przestrzeni adresowej danych 128 B wewnętrznej pamięci RAM dwa 16 bitowe liczniki/zegary dwukierunkowy UART 6 źródeł przerwań z 5 pozycyjnym wektorem i priorytetami wewnętrzny zegar systemowy
Architektura mikrokontrolera X51
Architektura mikrokontrolera MCS51 Co siedzi w środku?... Wersje μc 8051 są nieprawdopodobnie liczne, ale wszystkie posiadają pewne stałe elementy. Występują zarówno w postaci dyskretnej, wbudowanej w większe układy, jak i IP-Core w układach FPGA czy ASIC. Opracowany w latach 80 XX wieku jest popularny do dziś pozostając prawdopodobnie najpopularniejszym mikrokontrolerem.
Architektura mikrokontrolera X51 (wyprowadzenia)
Architektura mikrokontrolera X51 (jak to działa)
(obszary adresowe) Pamięć programu Pamięć RAM
(połączenie pamięci zewnętrznej)
(połączenie pamięci zewnętrznej zależności czasowe)
(SFR)
(SFR) PSW słowo stanu programu (adresowane bity) CY CY AC F0 RS1 RS0 OV P AC PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.0 F0 RS1 RS0 OV Wskaźnik przeniesienia Wskaźnik przeniesienia pomocniczego Wskaźnik boolowski dla użytkownika Bit wyboru banku rejestrów Bit wyboru banku rejestrów Wskaźnik nadmiaru Wskaźnik parzystości P
(SFR) PCON rejestr sterowania zasilaniem SMOD SMOD GF1 GF2 PD IDL GF1 GF0 PD Bit zdwojonej prędkości transmisji UART Wskaźnik boolowski ogólnego przeznaczenia Wskaźnik boolowski ogólnego przeznaczenia Przejście w stan czuwania (power down) Przejście w stan uśpienia (idle) IDL
(SFR) IE rejestr zezwolenia na przerwania (adresowany bitowo) EA EA ES ET1 EX1 ET0 EX0 IE.7 IE.4 IE.3 IE.2 IE.1 IE.0 ES ET1 EX1 ET0 EX0 Bit zezwolenia na przerwania Bit zezwolenia na przerwania z portu szeregowego Bit zezwolenia na przerwania z licznika T1 Bit zezwolenia na przerwania z wejścia INT1 Bit zezwolenia na przerwania z licznika T0 Bit zezwolenia na przerwania z wejścia INT0
(SFR) IE rejestr priorytetu przerwań (adresowany bitowo) PS PT1 PX1 PT0 PX0 Jedynka wpisana na pozycję określonego bitu to wysoki priorytet Przypisanie bitów takie samo jak w rejestrze zezwoleń na przerwania
(SFR) TCON rejestr sterowania licznikami T0 i T1 (adresowany bitowo) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TF1 TCON.7 Wskaźnik przepełnienia licznika T1 TR1 TCON.6 Bit sterowania licznika T1 (1=start, 0=stop) IE1 TCON.5 Wskaźnik przerwania zewnętrznego INT1 IT1 TCON.4 Bit wyboru sposobu przerwania (1=zbocze, 0=poziom) Pozostałe bity pełnią identyczną rolę w stosunku do licznika T0
(SFR) TMOD rejestr sterujący trybem pracy liczników T0 i T1 Licznik T1 GATE Licznik T0 C/T M1 M0 GATE C/T M1 M0 GATE gdy = 1, wejście licznika jest bramkowane linią INTx C/T gdy = 1 zlicza impulsy na wejściu Tx, gdy = 0 zlicza impulsy zegara M1, M0 tryb pracy zegara 0 0 licznik 13 bitowy (zgodny z 8048) 0 1 licznik/układ czasowy 16 bitowy 1 0 8 bitowy licznik/układ czasowy z automatycznym załadowaniem 1 1 TL0 i TH0 pracują jako liczniki 8 bitowe (T1 jest zatrzymany)
(SFR) SCON rejestr sterowania trybem portu szeregowego SM0 SM1 SM2 REN TB8 SM0, SM1 tryb pracy portu szeregowego 0 0 synchroniczny (rejestr przesuwający) 0 1 8 bitowy UART 1 0 9 bitowy UART 1 1 9 bitowy UART RB8 Szybkość transmisji Fosc/12 programowana Fosc/64 lub Fosc/32 programowana SM2 używany do transmisji międzyprocesorowej REN odblokowanie odbiornika TB8 dziewiąty bit nadawany RB8 dziewiąty bit odbierany TI, RI wskaźnik przerwania od nadajnika i odbiornika TI RI
Wektor przerwań Przerwanie IE0 TF0 IE1 TF1 RI oraz TI Adres wektora 0003h 000Bh 0013h 001Bh 0023h Przykładowy początek kodu programu CSEG ; Begin: JMP Start ; ORG Begin+0Bh ; Timer 0 int. vector JMP TIinter ; ORG Begin+023h ; Serial interrupt JMP RsInt