Mikroprocesory v přístrojové technice ČVUT V Praze Fakulta elektrotechnická, katedra měření Podklad k přednášce Y38PMM, Je určen pouze pro studenty ČVUT FEL jako pomůcka při studiu předmětu Y38PMM Dokument obsahuje pouze grafická zobrazení a hlavní hesla. Nenahrazuje účast na přednášce. Rotace textu trojhmat CRTL Shift + 1
Programování jednočipových mikropočítačů a mikrořadičů Y38PMM Vyučující: Ing. Jan Fischer, CSc., přednášky Ing. Jan Pohanka, cvičení 2
Kontakty Ing. Jan Fischer, CSc., kat. měření, míst. 441/1 FISCHER@FEL.CVUT.CZ, tel 22435 2179 Ing. Jan Pohanka, míst. 050 POHANJAN @FEL.CVUT.CZ tel. 22435 2058 výuková lab. 318 blok A3 tel. 22435 2130 pro komunikaci používat pouze studentskou adresu FEL xuziv_jménoy@fel.cvut.cz (ostatní je spam) 3
Oblast zájmu předmětu Mikroprocesory v přístrojové technice - Přístrojová technika - přístroj Přístroj: spotřební elektronika, automatizace, měřicí technika, prodejní automaty Mikroprocesorem řízený přístroj Mikroprocesor vestavěný v přístroji či zařízení? kolik máte doma mikroprocesorů? 4
up ve spotřební a domácí elektronice Největší spotřeba mikroprocesorů, resp. mikrokontrolérů spolu s autom. průmyslem. Přístroj - ve spotřební elektronice: mobilní telefon, PDA, dig.fotoaparát, kamera, CD + MP3 přehrávač, televizor, DVD přehrávač, činnosti: vstup - výstup signálu, digitalizace, komprese, ukládání, přenos tzv. Bílá elektronika myčka, lednička, mraznička, pračka, mikrovlnná trouba, mixér, vysavač činnosti: ovládací vstupy, snímání ( teplota, hladina, průtok,..) akční členy - ovládání motoru, solenoidových ventilů, komunikace s obsluhou Osvětlení - řízení zářivky - zabudovaný mikrořadič 5
up řízený přístroj - domovní automatizace Domovní automatizace regulace. regulátor teploty, řízení klimatizace Regulátor topení - snímání teploty v místnostech, venkovní teploty, rychlosti větru, ovládání kotle,... Rozpočítávací měřič tepla - na radiátoru ústředního topení Automatizace - regulace, regulátor teploty, řízení klimatizace Ovládání světel, komunikace - standard D.A.L.I. Dálkové ovládání vrat - garáže - ( komunikace, kódy, akční členy, bezpečnost osob - snímání přítomnosti osob a síly zavírání ) Zabezpečovací technika Přístupové systémy - čtečky karet, klávesnice, komunikace Zabezpečovací systémy- snímače pohybu, zvuku - např. tříštění skla, optické závory, komunikace, signalizace, přenos dat SMS,? přenos redukovaného obrazu ( Nový studijní obor na ČVUT -FEL: Inteligentní budovy 6
up řízený přístroj - prodej, služby Prodejní automaty - na potraviny, ( snímač mincí, zobrazení, akční členy..) Stojan benzinové pumpy ( snímač - průtokoměr, komunikace, zobrazení, čtečka karet). Automatické váhy ( supermarket) snímač síly - tenzometry, zobrazení, komunikace- přeprogramování ceny, tisk Prodejní automat jízdenek ( MHD, ČD,..) Přenosná čtečka karet - (restaurace) - klávesnice, zobrazení, bezdrátová komunikace, tisk. Přístupové systémy - vstupenky, lanovky, vleky čtečka - optická, RFID,.., komunikace, akční členy - otevírání závory Hrací automaty: ( sem patří!!! bohužel i tzv. výherní -hrací automaty - vstup, snímání množství mincí v zásobníku, generace pseudonáhodných čísel, ovládání akčních členů, programovatelný stupeň výhry automatu). 7
up - automobilní elektronika - automotive Automobilní elektronika - palubní přístroje: (řízení motoru- vstřikování,.. řízení brzd ABS, AES, palubní počítač, tempomat,..) Sběr dat: teploty ( olej, voda,..), tlak, klepání motoru,spaliny,.. Doplňkové funkce - řízení stěračů, nastavování polohy volantu, sedaček, stahování oken ( snímání proudu - bezpečnost) Regulace - zadání žádané hodnoty, snímání polohy, ovládání motorků, snímání proudu motorku, řízení klimatizace Naklápění reflektorů- up + výkon. budič + krokový motorek Ovládání zábavní elektroniky - rozhlas. přijímač, přehrávač, navigace Komunikace: rozhraní CAN - základní komunikač. rozhraní - (systémová, zábavní) rozhraní LIN - periferie - ovládání motorků v oknech,.. nově - rozhraní Flex ray - např. přímé ovládání brzd 8
Blokové schéma přístroje řízeného up analogové logické vstupy řízené obvody vstupy, výstupy, A/D, D/A analogové logické výstupy zobrazení tlačítka klávesnice mikropočítač mikrořadič ( microcontroller) LED 7- segment LCD- segment graf. ext. paměti Flash, pam. karty rozhraní RS232, USB, Ethernet LED LCD 9
Náplň předmětu - přednášky Y38PMM Použití jednočip. mikropočítače 8051, architektura, programování Logické obvody ( řady CMOS, druhy, napěťové úrovně, použití) Paměti ( SRAM, EPROM, FLASH, FIFO, Dual port..) Systémové sběrnice mikropočítačů, připojování obvodů na sběrnice Návrh mikropočítače Připojování vstupních a výstupních obvodů Obvody pro komunikaci s obsluhou, připojení vstupních bloků - tlačítek, klávesnic, výstupních bloků -LED, LCD Připojení A/D, D/A převodníků Další druhy mikropočítačů a mikrořadičů- architektura, vlastnosti 32- bitové mikroprocesory řady ARM Cortex M3 (provedení STM32) Signálové procesory ADSP -BF53x Blackfin 10
Náplň předmětu - cvičení Y38PMM Cvičení 1. + 2. Použití jednočipového mikropočítače 8051, programování Napálení programu do AT89C2051, realizace na kontaktním. poli. Další cvičení 3-13 - použití ARM Cortex M3 - STM32F103 ( WWW.ST.COM) programování v C, návaznost na předchozí předmět s ARM7 Generace PWM, použití interního převodníku A/D přístroj - osciloskop Řízení krokových motorků, polohovací mechanismus measure.feld.cvut.cz informace výuka, balalářská etapa, stránka předmětů Y38PMM 11
Vývojové nástroje pro Y38PMM Programování v C IDE RAID7, firmy Raisonance www.raisonance.com procesor STMF32F103 firmy STMicroelectronics www.stm.com, www.stm.com/stm32 GNU C, IDE volné (omezení simulace na kód délky 32 kbyte) překlad, download, RUN, výpisy na RS232 ( možná varianta pro simulaci - KEIL Microvision) STM32F103 RS 232 nepájivé kontaktní pole PC + RAID 7 12
Podmínky klas. zápočtu, Y38PMM Aktivní účast na cvičeních, odevzdání úloh podle plánu, samostatná práce (ne plagiátorství!!!) Zápočet v zápočtovém týdnu, ve zkouškovém období není možný přístup do laboratoře Test v 9. týdnu na přednášce+ test v zápočtovém týdnu, testy - náplň podle přednášek a cvičení Úlohy až 50 bodů, test. v sem. + testy až 50 b. Domácí práce zapůjčení vývoj desky(?? podle situace) možnost použití IDE Keil, Microvision, příprava programů a simulaci RAID7 simulace možná, menší pohodlí další informace na www stránkách, measure.feld.cvut.cz návody 13
Procesory s jádrem 8051 Architektura - 8 bitového procesoru, původ Intel 8051 obvykle používané označení 8051 nebo jen 51 ve skutečnosti jádro 8x52 architektura používaná několika desítkami výrobců Atmel, Philips - NXP, Silicon laborartories, Cypress, Texas Instruments, Analog Devices, Siemens- Infinieon,... 14
Blokové schéma AT89C52 ext. int. Blokové schéma AT89 C52 interrupt control 8 KB Flash 256 B RAM CPU osc bus control I/O port P0 P2 P1 P3 Address / Data Timer 0, 1, 2 counter inputs serial port UART TxD RxD 15
Význam a funkce bloků AT89C52 CPU - central processing unit I/O port - vstupně/výstupní brány Flash 8k- vnitřní paměť programu RAM 256B vnitřní paměť dat UART - sériový port (COM) ext. int. interrupt control CPU osc 8 KB Flash bus control Blokové schéma AT89 C52 256 B RAM I/O port Timer 0, 1, 2 counter inputs serial port UART P0 P2 P1 P3 TxD RxD Address / Data Funkce jako - jednočipový mikropočítač (jediný obvod)- int. paměř programu a dat nebo jako mikropoč. s externí pamětí (připojení na sběrnici BUS) Deska na cvičeních - ext. paměť programu v EPROM 2764 a ext. paměť dat v 6264 spolupráce s CPU prostřednictvím sběrnice - BUS BUS adres. signály, datové signály, říd. signály /PSEN, /RD, /WR 16
Vývody AT89C52 P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6/ P1.7 RST P3.0/RxD P3.1/TxD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD XTAL2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 PDIL 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EA ALE/PR OG PSEN P2.7/A15 P2.6/A14 P2.5/A13 P2.4/A12 P2.3/A11 17 24 18 23 P2.2/A10 XTAL1 VSS 19 20 22 21 P2.1/A9 P2.0/A8 Signály procesoru: Brány P1 ( P0.7 až P0.0) P1 ( P1.7 až P1.0) P2 ( P2.7 až P2.0) P3 ( P3.7 až P3.0) P1.7 - MSB, P1.0 - LSB atd. UART výst. TxD, vst. RxD přeruš.vst. /INT0, /INT1 akt. L T0, T1 vstupy čítačů Signály externí sběrnice: /WR, /RD, říd. sig. zápisu a čtení A15 - A8, adresové signály AD8 -AD0 mux. adresové/datové s. Vss zem ( GND ground) Vcc - napájení, +5 V, RST - Reset celého procesoru XTAL 1,2 - krystal - oscilátor 17
Signály AT89C52 P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6/ P1.7 RST P3.0/RxD P3.1/TxD 1 2 3 4 5 6 7 8 9 10 11 PDIL VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EA ALE/PR OG P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD XTAL2 XTAL1 VSS 12 13 14 15 16 17 18 19 20 29 28 27 26 25 24 23 22 21 PSEN P2.7/A15 P2.6/A14 P2.5/A13 P2.4/A12 P2.3/A11 P2.2/A10 P2.1/A9 P2.0/A8 40 39 38 37 36 35 34 33 32 31 30 POR T 1 POR T 0 RxD TxD INT0 ADDRESS AND DATA BUS ADDRESS BUS SECONDAR Y FUNCTIONS POR T 3 POR T 2 INT1 T0 T1 WR RD XTAL1 XTAL2 RST EA PSEN ALE V CC V SS 18
Pouzdro AT89C52 P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6/ P1.7 RST P3.0/RxD P3.1/TxD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD XTAL2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 PDIL 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EA ALE/PR OG PSEN P2.7/A15 P2.6/A14 P2.5/A13 P2.4/A12 P2.3/A11 17 24 18 23 P2.2/A10 XTAL1 VSS 19 20 22 21 P2.1/A9 P2.0/A8 Pouzdro DIL 40, nepostačuje pro všechny signály, proto - sdílení pinů: UART výst.txd a brána P3.1 vstup RxD a P3.0 hradlování čítače T0, brána P.3.0, a přerušovací vstup /INT0 P2.7 a sig. sběrnice AD15 Někdy možnost použít vstupní pin ve více funkcích současně hradlovat čítač, číst stav pinu, přerušit spádovou hranou ( využití v úloze) 19
Vnitřní blokové schéma CPU řady 51 P0.0 - P0.7 P2.0 - P2.7 PORT 0 DRIVERS PORT 2 DRIVERS V CC V SS RAM ADDR REGISTER RAM PORT 0 LATCH PORT 2 LATCH ROM/EPROM 8 B REGISTER ACC STACK POINTER TMP2 TMP1 PROGRAM ADDRESS REGISTER ALU BUFFER PSW SFRs TIMERS PC INCRE- MENTER 8 16 PROGRAM COUNTER PSEN ALE/PROG EA/ V PP RST TIMING AND CONTROL DPTR'S MULTIPLE PD PORT 1 LATCH PORT 3 LATCH OSCILLATOR XTAL1 XTAL2 PORT 1 DRIVERS PORT 3 DRIVERS P1.0 - P1.7 P3.0 - P3.7 20
Paměťový model mikropočítače 8051 Prostory CODE ( pouze čtení), DATA, XDATA Paměťový model up řady 8051 CODE DATA FFFF FFFF paměť prog. interní paměť dat 0000 FF 80 7F 00 REG. SP. FUNKCÍ RAM 0000 XDATA externí paměť dat 21
Paměťový model mikropočítače AT89C52 AT89C52 navíc - 128B RAM - DATA, 8KB vnitřní paměti FLASH -CODE, povolení vnitřní FLASH vstup /EA= L CODE Pamět. prostory u AT89C52 FFFF FFFF XDATA ext. pam. prog. ext.pam. dat AT89C52 1FFF 1000 0FFF 0000 EA=1 EA=0 DATA FF REG. SP. 80 FUNKCÍ 7F RAM 00 (128B) RAM (128B) 0000 22
FF 80 7F 30 2F 20 1F 18 17 10 0F 08 00 Paměťový model - prostor DATA SP P0 zápisník, data speciální funkční registry FF nepřímo adres. dat. pam. ( pouze u xx52 verzí) adresový prostor DATA paměť RAM + speciální funkční registry SFR 128B 7F 70 17 0F 10 00 80 bitově adresovatelná paměť reg. banka 3 reg. banka 2 R7 R0 reg. banka 1 reg. banka 0 23
FF 80 7F 30 2F 20 1F 18 17 10 0F 08 00 Prostor DATA, paměť RAM u 8051 SP P0 zápisník, data speciální funkční registry FF nepřímo adres. dat. pam. ( pouze u xx52 verzí) 128 Byte paměti RAM 128B 7F 70 17 0F 10 00 80 bitově adresovatelná paměť reg. banka 3 paměť RAM 128 Byte v prostoru DATA reg. banka 2 R7 R0 reg. banka 1 reg. banka 0 24
FF 80 7F 30 2F 20 1F 18 17 10 0F 08 00 Registry R0 - R7 SP P0 zápisník, data speciální funkční registry FF nepřímo adres. dat. pam. ( pouze u xx52 verzí) 128 Byte paměti RAM Registry R0 - R7, banka 0, R0 na adr. 00 128B 7F 70 17 0F 10 00 80 bitově adresovatelná paměť reg. banka 3 reg. banka 2 R7 R0 reg. banka 1 reg. banka 0 registry R0 až R7 25
FF 80 7F 30 2F 20 1F 18 17 10 0F 08 00 Bitově adresovatelná paměť RAM SP P0 zápisník, data speciální funkční registry FF nepřímo adres. dat. pam. ( pouze u xx52 verzí) 128B 128 Byte paměti RAM Registry R0 - R7, banka 0, R0 na adr. 00 bitově adresovatelná.paměť bit 00,01,02...celk. 128 bitů 7F 70 17 0F 10 00 80 bitově adresovatelná paměť 16 Byte = 16 x 8 bitů = 128 bitů reg. banka 3 reg. banka 2 R7 R0 reg. banka 1 reg. banka 0 26
FF 80 7F 30 2F 20 1F 18 17 10 0F 08 00 Doplňková - pouze nepřímo adr. paměť RAM (8x52) SP P0 zápisník, data speciální funkční registry FF nepřímo adres. dat. pam. ( pouze u xx52 verzí) 128B 128 Byte paměti RAM Registry R0 - R7, banka 0, R0 na adr. 00 bitově adresovatelná.paměť bit 00,01,02...celk. 128 bitů 7F 70 17 0F 10 00 80 bitově adresovatelná paměť 128 Byte nepřímo adres. pam (např. MOV A, @R0) reg. banka 3 (pouze) nepřímo adres. paměť RAM -128 Byte reg. banka 2 R7 R0 reg. banka 1 reg. banka 0 27
FF 80 7F 30 2F 20 1F 18 17 10 0F 08 00 Prostor DATA přímo i nepřímo adr. RAM SP P0 zápisník, data speciální funkční registry FF nepřímo adres. dat. pam. ( pouze u xx52 verzí) 128B 128 Byte paměti RAM Registry R0 - R7, banka 0, R0 na adr. 00 bitově adresovatelná.paměť bit 00,01,02...celk. 128 bitů 7F 70 17 0F 10 00 80 bitově adresovatelná paměť reg. banka 3 128 Byte přímo i nepřímo adres. pam (pouze) nepřímo adres. paměť RAM -128 Byte Přímo i nepřímo adr. pam. RAM - 128 Byte reg. banka 2 R7 R0 reg. banka 1 reg. banka 0 28
FF 80 7F 30 2F 20 1F 18 17 10 0F 08 00 Celá oblast nepřímo adr. paměti RAM SP P0 zápisník, data speciální funkční registry FF nepřímo adres. dat. pam. ( pouze u xx52 verzí) 128B 128 Byte paměti RAM Registry R0 - R7, banka 0, R0 na adr. 00 bitově adresovatelná.paměť bit 00,01,02...celk. 128 bitů 7F 70 17 0F 10 00 80 bitově adresovatelná paměť reg. banka 3 reg. banka 2 celkem 256 Byte nepřímo adres. pam RAM (pouze) nepřímo adres. paměť RAM -128 Byte Přímo i nepřímo adr. pam. RAM - 128 Byte Nepřímo adr. pam 256 Byte R7 R0 reg. banka 1 reg. banka 0 29
FF 80 7F 30 2F 20 1F 18 17 10 0F 08 00 Prostor DATA, Speciální funkční registry - SFR SP P0 zápisník, data speciální funkční registry FF nepřímo adres. dat. pam. ( pouze u xx52 verzí) 128B 128 Byte paměti RAM Registry R0 - R7, banka 0, R0 na adr. 00 bitově adresovatelná.paměť bit 00,01,02...celk. 128 bitů 7F 70 17 0F R7 R0 10 00 reg. banka 0 80 bitově adresovatelná paměť spec. funkč. registrybrány, čítače, UART, řízení, řadič reg. banka 3 přerušení, reg. banka 2 reg. banka 1 přímo adr. MOV 80h, #0Fh (pouze) nepřímo adres. paměť RAM -128 Byte Přímo i nepřímo adr. pam. RAM - 128 Byte Nepřímo adr. pam 256 Byte Spec. funkční registry - pouze přímo adresovatelné v prostoru DATA 30
Prostor DATA, jednočip. mikropočítač AT89C2051 FF 80 7F SP P0 zápisník, data speciální funkční registry Jednočip. mikropočítač AT89C2051 - použití v první samostatné úloze pouze 128B RAM malé pouzdro DIL20 30 2F 20 1F 18 17 10 0F 08 00 7F 70 17 0F R7 R0 10 00 bitově adresovatelná paměť reg. banka 3 reg. banka 2 reg. banka 1 reg. banka 0 vývody -port P1 a necelý P3 na P1.0 a P1.1 nejsou PULL - UP rezistory - není schopen generovat na výstupu úroveň H 31
Prostor SFR - (DATA) u AT89S8252 F8h F0h E8h B (00h) E0h D8h ACC (00h) D0h C8h C0h B8h B0h A8h A0h 98h 90h 88h 80h bitově. adresov. PSW (00h) T2CON (00h) T2MOD IP P3 (FFh) P2 (FFh) SCON (00h) SBUF (xx) P1 (FFh) TCON (00h) TMOD (00h) P0 (FFh) RCAP2L RCA2H RCA2H TL2 TH2 SPSR TL0 (00h) TL1 (00h) TH0 (00h) TH1 (00h) SP (h) DPL (00h) DPH (00h) DP1L (00h) DP1H (00h) WMCON PCON 0 (8) 1 (9) 2 (A) 3 (B) 4 (C) 5 (D) 6 (E) 7 (F) 32 FFh F7h EFh E7h DFh D7h CFh C7h BFh B7h AFh A7h 9Fh 97h 8Fh 87h
Adresování SFR B P2 SCON P1 TCON P0 F0h AFh A7h A8h A0h 90h 90h 8Fh 87h 88h 80h MSB LSB MSB LSB MSB LSB MSB LSB MSB LSB MSB LSB bitová adresa Adresování SFR (např. brána P1 na adrese 90h) MOV 90h, #00h ; zapiš do SFR na adr. 90h přímá data 00h SETB 90h nastav bit v s bit. adr. 90h (nejnižší bit-lsb- brány P1) 90h bitová adresa od začátku (obtížně se pamatuje) SETB 90h.0 nastav bit na bitové adrese, která odpovídá nejnižšímu bitu na bajtové adrese 90h (určení y souřadnice -bajt, a x souřadnice -bit), bitovou adresu určí překladač SETB P1.0 totéž, ale i bajtovou adresu (P1 equ 90h) překladač nejdříve vezme z tabulky symbolů- P1 odpovídá hodnota 90h 33
Registry speciálních funkcí - SFR střadač ACC... registr B... registry R0..R7... ukazatel zásobníku - SP datový ukazatel - DPTR porty P0..P3... stavový registr PSW 8 bitový registr; funkce střadače 8 bitový reg., pomoc. reg. pro násobení/ dělení 8 bitové registry; 4 banky, přepínané v PSW 8 bitový reg. 16 - bitový registr (DPH, DPL); adresace XDATA 8-bitové registry; čtení, zápis na porty procesoru 8 bitový reg.; výsledky arit., log. operací CY, AC, F0, RS1, RS0, OV,-, P sériový buffer SBUF hodnoty časovačů řídicí registry... 8 bitový reg.; vyrovnávací registr pro vysíl. /příjem 16- bitové registry (THx, TLx) 8- bitové registry; IP,IE,TMOD, TCON, SCON,PCON 34
Přehled rezervovaných symbolů A R0 - R7 - střadač - osm obecných registrů v právě aktivní bance DPTR - datový ukazatel (data pointer), 16- bitový registr, který se používá pro adresování v programové a externí datové paměti PC C AB - programový čítač; 16 - bitový registr, který obsahuje adresu následující instrukce - Carry flag - přenosový bit; indikuje přenos z MSB při operacích ALU - registrový pár; používá se při násobení a dělení 35
Přehled instrukčního souboru 8051 aritmetické operace (sčítání, odečítání, násobení, dělení,...) logické operace (AND,OR, XOR, bitové rotace, nastavování/nulování bitu přesuny dat (mezi registry, styk s programovou a externí datovou pamětí) předání řízení (skoky) (skoky, volání podprogramu,návrat z podprogramu a z přerušení,...) 36
Instrukční soubor 8051 - Operandy instrukcí rezervované symboly: <název> A,C,DPTR, registry speciálních funkcí -SFR bajtové adresy: <adresa> adresy vnitřní datové paměti (0-127) a SFR registry (128-255) bitové adresy: <adresa bitu> bitově adresovatelná paměť RAM a vybrané SFR přímá data : # <hodnota> operand je přímo zadán, je součástí instrukce nepřímé adresování: @R0, @R1, @DPTR, @A+PC data (skok) se adresují přes ukazatel relativní adresa: 8 bitů se znaménkem (+127 až -128) 37
Instrukční soubor 8051 - Přesuny dat obecné přesuny dat: MOV obecná instrukce pro přesun (18 variant) speciální přesuny dat: MOVC přesun z programové paměti (CODE) MOVX přesun z/do externí datové paměti (XDATA) práce se zásobníkem: POP vyzvednutí dat ze zásobníku PUSH uložení dat do zásobníku 38
Instrukční soubor 8051 - Aritmetické instrukce sčítání: ADD prosté sečtení ADDC sčítání s přenosem z nižšího řádu INC přičtení jedničky (inkrementace) odčítání: SUBB odečítání s výpůjčkou DEC odečtení jedničky (dekrementace) násobení: MUL násobení obsahu střadače obsahem registru B dělení: DIV dělení obsahu střadače registrem B dekadická korekce: DA dekadická korekce po sčítání dvou BCD čísel 39
Logické instrukce a instrukce pracující s bity logické operace: AND logický součin ORL logický součet XOR nonekvivalence bitové operace: SETB nastavení bitu do log. 1 CLR vynulování bitu CPL bitový doplněk RL rotace bitů vlevo RLC rotace bitů vlevo přes C RR rotace bitů vpravo RRC rotace bitů vpravo přes C 40
Instrukční soubor 8051- Předání řízení nepodmíněné skoky: AJMP skok uvnitř 2kB stránky LJMP dlouhý skok ( v rámci 64 kb) JMP obecná inst. skoku (překladač - AJMP nebo LJMP) podmíněné skoky: JB, JNB skok, je/není-li zadaný bit nastaven JBC skok a vynulování bitu, je-li zadaný bit nastaven JC, JNC skok je/není-li nastaven bit přenosu C JZ, JNZ skok je/není-li obsah střadače nulový DJNZ sniž obsah registru o 1;dále JNZ volání podprogramu: ACALL volání podprogramu uvnitř 2 kb stránky LCALL dlouhé volání podprogramu CALL obecná inst. volání podprogramu (překladač...) RET návrat z podprogramu 41
Instrukční soubor 8051- Předání řízení nepodmíněné skoky: AJMP skok uvnitř 2kB stránky LJMP dlouhý skok ( v rámci 64 kb) JMP obecná inst. skoku (překladač - AJMP nebo LJMP) podmíněné skoky: JB, JNB skok, je/není-li zadaný bit nastaven JBC skok a vynulování bitu, je-li zadaný bit nastaven JC, JNC skok je/není-li nastaven bit přenosu C JZ, JNZ skok je/není-li obsah střadače nulový DJNZ sniž obsah registru o 1;dále JNZ volání podprogramu: ACALL volání podprogramu uvnitř 2 kb stránky LCALL dlouhé volání podprogramu CALL obecná inst. volání podprogramu (překladač...) RET návrat z podprogramu návrat z přerušení: RETI návrat z přerušení 42
Demonstrační program, blik, hlavní smyčka ; Program pro blikani LED diody na vyvojove desce MIP s 8051. ; Program slouzi pro blikani LED pripojene na nastaveny pin portu P1. ; Strida blikani je 1:1. LED je zapojena proti napajeno. ; perioda blikani nastavena cekaci funkci Cekej, kde pocet ; cekacich cyklu udava konstanta POCET LED equ P1.5 ; LED - buzena proti napajeni POCET equ 35000 ; pocet cyklu cekaci smycky PROG_PAM equ 0A000h ; adresa ulozeni programu dseg at 30h WaitLo: ds 1 ; Pomocne promenne pro cekaci smycku WaitHi: ds 1 ; cseg at PROG_PAM jmp Init ; reset vektor - skok na vlastni zacatek programu cseg at PROG_PAM+100h ; rezervujeme prostor prvnich 256 bajtu na prerus. Init: mov SP,#70h pro stack vyuzij hornich 15 byte pameti Start: clr LED ; rozsvit LED call Cekej setb LED ; zhasni LED call Cekej jmp Start ; opakuj v nekonecne smycce 43
Demonstrační program, blik, podprog. čekání ;**************************************************************************************************** ;* Procedura cekani - konstantni doba dana konstantou POCET ;* zadne vstupni a vystupni parametry ;**************************************************************************************************** Cekej: mov WaitHi,#HIGH(POCET)+1; inicializace prodlevy mov WaitLo,#LOW(POCET)+1 Znovu: nop djnz WaitLo,Znovu djnz WaitHi,Znovu ret end 44