Intel 8051
Z Wikipedii
Intel 8051 - mikrokontroler stworzony przez firmę Intel w 1980 roku, do dziś znajduje szerokie zastosowanie w niemal każdej dziedzinie elektroniki. Istnieje wiele mikrokontrolerów których architektura jest oparta na 8051, zazwyczaj są to układy rozbudowane lub znacznie ulepszone w stosunku do pierwowzoru, ich produkcją zajmują się m.in. Dallas, Philips i Atmel.
Mikrokontrolery rodziny 8051 wykonane są w zmodyfikowanej architekturze harwardzkiej. Należą do grupy mikrokontrolerów CISC.
Oprócz możliwości programowania mikrokontrolera w języku asembler rodziny 8051, istnieje możliwość programowania w językach wysokiego poziomu. Jednym z najpopularniejszych języków programowania mikrokontrolerów jest język C.
Spis treści |
[edytuj] Specyfikacja mikrokontrolera 8051
- ośmiobitowa jednostka arytmetyczno-logiczna (ALU)
- cztery banki rejestrów roboczych (4 x R0..R7)
- 4 kB pamięci wewnętrznej ROM (pamięć zewnętrzna ROM do 64 kB)
- 128 B pamięci wewnętrznej RAM (pamięć zewnętrzna RAM do 64 kB)
- zbiór rejestrów specjalnych SFR
- układ generatora sygnału taktującego (czyli zegar procesora)
- cztery ośmiobitowe równoległe porty P0..P3
- jeden port szeregowy (obsługuje zarówno transmisję synchroniczną jak i asynchroniczną)
- dwa liczniki/czasomierze działające w jednym z czterech trybów
- jednobitowy procesor funkcji logicznych
- system przerwań z układem priorytetów
==
[edytuj] Rejestry specjalne
Obszar pamięci o adresach od 0x80 do 0xFF nazywany jest obszarem rejestrów specjalnych (SFR - Special Function Registers). Rejestry te pozwalają na sterowanie różnymi funkcjami mikrokontrolera. Obszar ten nie jest ciągły (nie wszystkie adresy są zajęte) - umożliwia to ewentualne uzupełnienie obszaru o nowe funkcje.
[edytuj] Układ rejestrów w pamięci
* - adresowane bitowo
Adres | Symbol | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
---|---|---|---|---|---|---|---|---|---|
0xF0* | B | ||||||||
0xE0* | ACC | ||||||||
0xD0* | PSW | CY | AC | F0 | RS1 | RS0 | OV | - | P |
0xC0* | IP | - | - | - | PS | PT1 | PX1 | PT0 | PX0 |
0xB0* | P3 | /RD | /WR | T1 | T0 | /INT1 | /INT0 | TxD | RxD |
0xA8* | IE | EA | - | - | ES | ET1 | EX1 | ET0 | EX0 |
0xA0* | P2 | ||||||||
0x99 | SBUF | ||||||||
0x98* | SCON | SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |
0x90* | P1 | ||||||||
0x8D | TH1 | ||||||||
0x8C | TH0 | ||||||||
0x8B | TL1 | ||||||||
0x8A | TL0 | ||||||||
0x89 | TMOD | GATE | C/T | M1 | MO | GATE | C/T | M1 | M0 |
0x88* | TCON | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
0x87 | PCON | SMOD | - | - | - | GF1 | GF0 | PD | IDL |
0x83 | DPH | ||||||||
0x82 | DPL | ||||||||
0x81 | SP | ||||||||
0x80* | P0 |
[edytuj] Ważniejsze rejestry specjalne
- ACC - akumulator, jeden z najczęściej wykorzystywanych rejestrów, gdyż obsługuje większość operacji arytmetycznych, logicznych, skoków warunkowych i wiele innych
- B - dodatkowy akumulator, wykorzystywany w trakcie operacji mnożenia (MUL) i dzielenia (DIV)
- PSW - rejestr stanu programu (Program Status Word), jest to zbór rożnych flag (wskaźników):
- CY - przeniesienia (Carry), oznaczana również jako C, przekroczenie zakresu w operacjach arytmetycznych NKB
- AC - przeniesienie pomocnicze (Auxiliary Carry), przekroczenie zakresu dla BCD
- F0 - flaga ogólnego zastosowania (Flag 0)
- RS1 - starszy bit numeru banku
- RS0 - młodszy bit numeru banku
- OV - przepełnienie (Overflow), przekroczenie zakresu w U2
- PSW.1 - (1 bit PSW) flaga, którą może zdefiniować użytkownik
- P - parzystość (Parity), flaga stanu akumulatora
- Porty P0-P3 - wykorzystywane są do komunikacji ze światem zewnętrznym (wszelkimi urządzeniami peryferyjnymi), niektóre mają jeszcze dodatkowe funkcje
- P0 i P2 - mogą zostać wykorzystanie jako wyprowadzenia szyny systemowej mikrokontrolera
- P1 - portu ogólnego zastosowania
- P3 - port posiada wyspecjalizowane linie (w SRF przedstawiane jako bity)
- RD - odczyt pamięci danych
- WR - zapis pamięci danych
- T0,T1 - wejścia timerów zewnętrznych (zliczanie impulsów trybie pracy timerów jako liczniki)
- INT0,INT1 - wejścia zewnętrznych przerwań
- TxD, RxD - wysyłanie (Transmit) i odbieranie (Receive) danych (Data) przy transmisji szeregowej
- Sterowanie przerwań
- IE - zezwolenia dla przerwań (Interrupt Enable)
- EA - ogólne zezwolenie dla przerwań
- ES - zezwolenie dla przerwań od transmisji szeregowej
- ET0, ET1 - zezwolenie dla przerwań od timerów
- EX0, EX1 - zezwolenie dla przerwań zewnętrznych
- IP - priorytety przerwań (Interrupt Priority)
- PS - priorytet dla przerwań od transmisji szeregowej
- PT0, PT1 - priorytet dla przerwań od timerów
- PX0, PX1 - priorytet dla przerwań zewnętrznych
- TCON - tylko młodsze 4 bity
- IF0, IF1 - flagi przerwań zewnętrznych (zgłoszenie zewnętrznego przerwania)
- IT0, IT1 - sposób zewnętrznego przerwania (0 - poziom niski, 1 - opadające zbocze)
- IE - zezwolenia dla przerwań (Interrupt Enable)
- Sterowanie timerów
- TMOD - młodsze 4 bity odpowiadają timerowi 0, starsze - timerowi 1
- GATE - bramkowanie, zliczanie impulsów kiedy GATE=0
- C/T - tryb pracy timera (0 - timer wewnętrzny, 1 - licznik impulsów zewnętrznych)
- M0, M1 - ustalają trybu pracy licznika
- TMOD - młodsze 4 bity odpowiadają timerowi 0, starsze - timerowi 1
M0 | M1 | Tryb | |
---|---|---|---|
0 | 0 | 0 | |
0 | 1 | 1 | licznik 16 bitowy |
1 | 0 | 2 | licznik 8 bitowy |
1 | 1 | 3 |
-
- TCON - starsze 4 bity
- TF0, TF1 - flaga przepełnienia timera
- TR0, TR1 - flaga pracy timera (0 - stop, 1 - zliczanie)
- TCON - starsze 4 bity
- DPTR - 16 bitowy wskaźnik adresu danych
- DPH - starszy bajt wskaźnika
- DPL - młodszy bajt wskaźnika
- SP - wskaźnik stosu (Stack Pointer)
[edytuj] Zobacz też
[edytuj] Linki zewnętrzne
- http://www.atmel.com/products/8051/ - mikrokontrolery rodziny 8051 firmy Atmel
- http://www.intel.com/design/mcs51/ - mikrokontrolery rodziny 8051 firmy Intel
- http://sdcc.sourceforge.net/ - Small Device C Compiler (SDCC), darmowy kompilator C dla mikrokontrolerów
- http://www.keil.com/c51/ - narzędzia programistyczne, w tym kompilator C dla rodziny 8051 firmy Keil
Mikrokontrolery | |
---|---|
Intel | Motorola (Freescale Semiconductor) |
8-bitowe: MCS-48 | MCS-51 | 8xC251 16-bitowe: 80186/80188 | MCS-96 | MXS296 |
8-bitowe: 68HC05 | 68HC08 | 68HC11 16-bitowe: 68HC12 | 68HC16 | DSP56k |
ZiLOG | Atmel |
Z8 | Z86E02 | Atmel AT89 | Atmel AT90 - AVR | Atmel AT91SAM - ARM | MARC 4 |
Microchip Technology | Texas Instruments |
PIC | MSP430 | TMS370 |
Philips | Renesas Tech. Corp. |
LPC2000 | LPC900 | LPC700 | H8 | SuperH | M16C | M32R |