8051 Port P2 Port P3 Transm. szeregowa Timery T0, T1 Układ przerwań Rejestr DPTR Licznik rozkazów Pamięć programu Port P0 Port P1 PSW ALU Rejestr B SFR akumulator 8051 STRUKTURA architektura komputerów w 1 1
128 bajtów górnego obszaru Obszar rejestrów SFR 128 bajtów dolnego obszaru 00h 8051 WEWNĘTRZNA PAMIĘĆ DANYCH Obszar pamięci wewnętrznej Obszar pamięci zewnętrznej 128 bajtów górnego obszaru Obszar rejestrów SFR Zewnętrzna pamięć programu Zewnętrzna pamięć danych 00h 128 bajtów dolnego obszaru 8051 PAMIĘĆ architektura komputerów w 1 2
LICZNIK ROZKAZÓW (16 bitów) rejestr DPTR (16 bitów) Obszar pamięci wewnętrznej Obszar pamięci zewnętrznej Bezpośrednio (8 bitowy adres w rozkazie) Rejestry R0 lub R1 (8 bitów) 128 bajtów górnego obszaru Obszar rejestrów SFR Zewnętrzna pamięć programu Zewnętrzna pamięć danych 00h 128 bajtów dolnego obszaru 8051 ADRESACJA PAMIĘCI 30h 2Fh 20h 1Fh 18h 17h 10h 0Fh 8h 7h 0h R7 R2 R1 RO RB3 RB2 RB1 80 bajtów pamięci ogólnego przeznaczenia Obszar pamięci adresowanej bitowo REJESTRY OGÓLNEGO PRZEZNACZENIA Wybór banku poprzez bity RS1, RS2 rejestru PSW 8051 DOLNY OBSZAR PAMIECI WEWNETRZNEJ architektura komputerów w 1 3
30h 2Fh 81h 23H Rejestr SP 20h 1Fh 18h 17h 10h 0Fh 8h 7h R7 RB3 RB2 RB1 Wewnętrzna pamięć kontrolera Wskaźnik stosu wskazuje adres wierzchołka 0h R2 R1 RO 8051 STOS 30h 2Fh 81h 23H Rejestr SP 20h 1Fh 18h 17h 10h 0Fh 8h 7h R7 RB3 RB2 RB1 Wewnętrzna pamięć kontrolera Wskaźnik stosu wskazuje adres wierzchołka Po resecie SP jest ustawiany na 7H 0h R2 R1 RO 8051 STOS architektura komputerów w 1 4
128 bajtów pamięci ogólnego przeznaczenia 8051 GÓRNY OBSZAR PAMIECI WEWNETRZNEJ 240 (0F0H) B Rejestr ogólnego przeznaczenia 224 (0E0H) ACC Akumulator 208 (0D0H) PSW Słowo stanu procesora 184 (0B8H) IP Rejestr priorytetów przerwań 176 (0B0H) P3 Port we/wy 3 168 (0A8H) IE Rejestr maski przerwań 160 (0A0H) P2 Port we/wy 2 153 (99H) SBUF Rejestr danych układu transmisji szeregowej 152 (98H) SCON Rejestr sterujący układu transmisji szeregowej 144 (90H) P1 Port we/wy 1 141 (8DH) TH1 Rejestr danych układu czasowego 1 (bardziej znaczący) 140 (8CH) TH0 Rejestr danych układu czasowego 0 (bardziej znaczący) 139 (8BH) TL1 Rejestr danych układu czasowego 1 (mniej znaczący) 138 (8AH) TL0 Rejestr danych układu czasowego 0 (mniej znaczący) 137 (89H) TMOD Rejestr trybu pracy układów czasowych 0 i 1 136 (88H) TCON Rejestr sterujący układów czasowych 0 i 1 135 (87H) PCON Rejestr sterujący stanami uśpienia 131 (83H) DPH Rejestr indeksowy DPTR (bardziej znaczący bajt) 130 (82H) DPL Rejestr indeksowy DPTR (mniej znaczący bajt) 129 (81H) SP Wskaźnik stosu 128 (80H) P0 Port we/wy 0 8051 REJESTRY SPECJALNEGO PRZEZNACZENIA architektura komputerów w 1 5
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 C AC F0 RS1 RS0 OV - P C CY F0 RS1 RS0 OV F1 P wskaźnik przeniesienia pomocniczy wskaźnik przeniesienia numer aktywnego banku bit starszy numer aktywnego banku bit młodszy przepełnienie wskaźnik parzystości RS1 RS0 0 0 aktywny bank 0 0 1 aktywny bank 1 1 0 aktywny bank 2 1 1 aktywny bank 3 8051 REJESTR WSKAŹNIKÓW STANU (PSW) T ryb a d re s o w a n ia S p os ó b w yz n a cz a n ia a dre su Z a so b y a dre so w a n e w ty m try bie R E J E S T R O W Y O p e ra n de m jes t rejes tr R 0 - R 7, A, B, D P T R (16 bitow y ) lub C (1 bito w y ) B E Z P O Ś R E D N I N A T Y C H M IA S T O W Y P O Ś R E D N I Z A W A R T O Ś C IĄ R E J E S T R U P O Ś R E D N I S U M Ą Z A W A R T O Ś C I R E J E S T R U B A Z O W E G O I IN D E K S U A d re s o p era n d u je s t po d an y explicite w rozkazie O p e ra n de m jes t s ta ła zn a jd u ją ca s ię w p a m ięc i programu. O perand jest jednym z bajtów rozkazu. Adres wyznacza rejestr P C Adres operandu wyznacza za w a rto ś ć re je s tru R 0, R 1, D P T R lu b (dla roz k a z ów P U S H i P O P ) S P Adres operandu wyznacza su m a z a w a rto ści rejestrów D P T R i A lub P C i A R e je s try R 0-R 7 z a k ty w ne g o b a nk u, A, B, D P T R (1 6 bito w y ) lu b C (1 bito w y ) D o ln y ob sz a r p am ię c i w e w n ętrz n ej R A M, re je s try S F R, b ity a d res ow a lne bezpo ś rednio P a m ię ć p ro gra m u W ewn ętrzna i zewnętrzna p a m ięć d an y c h R A M P a m ię ć p ro gra m u 8051 TRYBY ADRESACJI architektura komputerów w 1 6
Zapis rozkazu w assemblerze <kod rozkazu> <argument1>,<argument 2> przykłady: ADD A,R0 MOV A,@R1 MOV R0,#40H DA CPL A 8051 LISTA ROZKAZÓW Sposób zapisu w assemblerze argumentów 12345 - liczba dziesiętna 12345H - liczba heksalna 10110000101B - liczba binarna A - akumulator B - rejestr B Rn - rejestr R0...7 direct - adres rejestru lub bajtu (liczba dziesiętna, heksalna lub binarna np. w rozkazie MOV A,166) bit - adres bitu @Ri - adresowanie pośrednie zawartością rejestru R0 lub R1 @DPTR - adresowanie pośrednie zawartością rejestru DPTR #data - stała 8bitowa (tryb natychmiastowy), np. #04FH #data16 - stała 16bitowa (tryb natychmiastowy), np. #0F06H addr16-16 bitowy adres skoku (rozkaz LJMP) lub podprogramu (LCALL) addr11-11 bitowy adres skoku (AJMP) lub podprogramu (ACALL) rel - liczba całkowita ze znakiem w kodzie uzupełnieniowym do 2 stanowiąca względną wartość skoku SJMP oraz skoków warunkowych (krótki skok w przód lub w tył w stosunku do wartości licznika rozkazów) 8051 LISTA ROZKAZÓW architektura komputerów w 1 7
Przykłady rozkazów ADD A,<bajt źródłowy> przykład: ADD A,R0 operacja A:= (A)+(R0) ADD A,8 operacja A:= (A)+(8) ADD A,#8 operacja A:= (A)+8 MOV <bajt docelowy>,< bajt źródłowy > przykład: MOV A, R7 ;prześlij do A zawartość rejestru R7 MOV R7, A ;prześlij do R7 zawartość rejestru A MOV R0,#30H ; prześlij stałą 30H do rejestru R0 MOV R0, 30H ; prześlij zawartość bajtu 48go z u do rejestru R0 MOV 30H, R0 ;j/w w przeciwną stronę MOV 30H, #45H ; prześlij do bajtu 48(30H) stałą 45H MOV A, @R0 ; prześlij do akumulatora zawartość komórki, której adres jest w rejestrze R0 MOV @R0, A ;j/w w przeciwną stronę MOV @R0, 30H ; prześlij do komórki, której adres jest w rejestrze R0 zawartość bajtu o adresie 30H MOV @R0, #30H ; prześlij do komórki, której adres jest w rejestrze R0 stałą 30H MOV A, #35H ; załaduj do rejestru akumulatora stałą 35H MOV A, 35H ; załaduj do rejestru akumulatora zawartość komórki o adresie 35H MOV 35H, A ;j/w w przeciwną stronę MOV 35H, 30H ; załaduj do komórki o adresie 30H zawartość komórki o adresie 35H MOV P2, P1 ; prześlij zawartość SFR Port 1 do SFR Port 2 MOV 35H, @R1 ; załaduj do komórki o adresie 35H zawartość komórki o adresie zapamiętanym w R1 MOV DPTR,#data16 przykład: MOV DPTR,#01FCH ;operacja DPTR:=01FCH 8051 LISTA ROZKAZÓW Przykłady rozkazów MOVC A,@A+<rejestr bazowy> przykłady: MOVC A,@A+DPTR ;prześlij do A zawartość bajtu z pamięci programu, którego adres jest wyznaczony jako suma zawartości rejestru DPTR i rejestru A MOVC A,@A+PC ;prześlij do A zawartość bajtu z pamięci programu, którego adres jest wyznaczony jako suma zawartości rejestru licznika rozkazów i rejestru A MOVX <bajt przeznaczenia>,<bajt źródłowy> przykłady: MOVX A,@R1 ; prześlij do A z zewnętrznej pamięci danych zawartość bajtu, którego adres jest zawarty w rejestrze R1 MOVX A,@DPTR ; prześlij do A z zewnętrznej pamięci danych zawartość bajtu, którego adres jest zawarty w rejestrze R1 8051 LISTA ROZKAZÓW architektura komputerów w 1 8