Cvičení s mikrokontrolery 8051

Slides:



Advertisements
Podobné prezentace
Základy ukládání dat v počítači
Advertisements

Komunikace periférii.
Zásobník (LiFo) Fronta (FiFo)
Vytváření, použití dávkových souborů
SYSTÉM PŘERUŠENÍ U 68HC11.
PROGRAM PRO VÝUKU T ČLÁNKU
Instrukce procesoru pro přesun (MOV) mov X, Y Instrukce kopíruje osmibitová data ze zdroje Y do cíle X mov A, R n mov A, DPH mov A, DPL mov A, SPH mov.
Databázové systémy 1 Cvičení č. 4 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Programování PA - 2.
Základy mikroprocesorové techniky
Program Programátorský model procesoru Instrukční soubor
Digitální učební materiál
Hromadná korespondence, makro
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Paměťové obvody a vývoj mikroprocesoru
Výrok „Počítač je pouze tak inteligentní jako jeho uživatel.“ (Radek Lochman, dnes)
Čítače a časovače, přerušovací systém
TEP Přerušení č.7. Přerušení Téma Přerušení TEP Předmět TEP Juránek Leoš Ing. Autor Juránek Leoš Ing. TEP.
TEP EEPROM č.8. EEPROM Téma EEPROM TEP Předmět TEP Juránek Leoš Ing. Autor Juránek Leoš Ing. TEP.
Adresy a adresování Střední odborná škola Otrokovice Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Miloš Zatloukal.
Základy syntaxe jazyka PHP PHP JE TECHNOLOGIE BĚŽÍCÍ NA SERVERU. PHP JE TECHNOLOGIE BĚŽÍCÍ NA SERVERU. Typický PHP skript obsahuje: Typický PHP skript.
Výukový program: Mechanik - elektrotechnik Název programu: Číslicová technika - mikroprocesory III. ročník Mikrořadiče Vypracoval : Vlastimil Vlček Projekt.
Digitální učební materiál
P ROGRAMOVÁNÍ V JSA David Rozlílek. P ROGRAMOVÁNÍ V JSA Co to je zkratka JSA - ………….? Je tvořen z jednotlivých - s……. i…….? a k……… ? Jaký program používáme.
Cykly Cykly umožňují provádět určitou část kódu opakovaně až do nastaveného počtu cyklování nebo splnění podmínky. Cykly umožňují provádět určitou část.
KIV/ZIS cvičení 4 Tomáš Potužák. Dotazy - úvod Umožňují pracovat s databází –Získávat specifické informace z tabulky, případně z více tabulek najednou.
Srovnání mikrokontrolerů
Autor:Jiří Gregor Předmět/vzdělávací oblast: Digitální technika Tematická oblast:Digitální technika Téma:Statické paměti RWM – RAM 2. část Ročník:3. Datum.
Procesor Renesas H8S/2633F.
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Výrok „Vypadá to, že jsme narazili na hranici toho, čeho je možné dosáhnout s počítačovými technologiemi. Člověk by si ale měl dávat pozor na takováto.
Programování v JSA.
Programování v JSA. Co je to JSA? FORMÁT ZDROJOVÉHO PROGRAMU JSA Z jakých 4 částí se skládá řádek?
Roman Nasadil – ME4C PROGRAMOVÁNÍ V JSA. CO TO JE JSA?
Vývoj informačních systémů Námět na praktické cvičení Klient – Server (nepovinné)
Instrukce procesoru.
Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické.
Základy programování mikropočítačů První program v jazyce symbolických adres.
Algoritmizace a programování Soubory. Oč jde? Vytvoření externího souboru Vytvoření externího souboru Tento soubor může být: Tento soubor může být: Textový.
Mikrokontrolery řady Tyto obvody představují vlastně velmi jednoduchý, ale kompletní mikropočitačový systém. Ustálil se pro ně název jednočipové.
CZ.1.07/1.5.00/ Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/ Střední odborná škola elektrotechnická, Centrum odborné přípravy.
Odborný výcvik ve 3. tisíciletí Tato prezentace byla vytvořena v rámci projektu.
Orbis pictus 21. století Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky Interkomunikační adresní systém.
Programování mikropočítačů Práce s PLC Foxtrot. PLC Foxtrot na učebně Pří PLC Foxtrot Tlačítkové panely pro ovládání digitálních vstupů Sedmisegmentovka.
PLC Sekvenční logika. RS Klopný obvod (paměť)  Přivedením log. 0 na vstup S (set) se nastaví Q = 1  Q zůstane 1 i po změně vstupu S na log.1 (pamatuje.
Odborný výcvik ve 3. tisíciletí Tato prezentace byla vytvořena v rámci projektu.
Odborný výcvik ve 3. tisíciletí Tato prezentace byla vytvořena v rámci projektu.
Výukový materiál zpracován v rámci projektu
MIKROPROCESOROVÁ TECHNIKA
Výukový materiál zpracován v rámci projektu
Inicializace portů mikrokontroléru
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Jednočipové počítače – instrukční sada
Hardware jednočipových počítačů I
Soubor Soubor v informatice označuje pojmenovanou sadu dat uloženou na nějakém datovém médiu, se kterou lze pracovat nástroji operačního systému jako.
MIKROPROCESOROVÁ TECHNIKA
MIKROPROCESOROVÁ TECHNIKA
Výukový materiál zpracován v rámci projektu
Mikropočítač Soubor instrukcí
Programování mikropočítačů
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Číslicové měřící přístroje
Pamäte Registre Zbernice.
Programování mikrokontrolerů PIC 16F84A
Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/
Transkript prezentace:

Cvičení s mikrokontrolery 8051 Mikrokontrolery řady 8051 Cvičení s mikrokontrolery 8051

Při zadávání dat lze použít kód: binární - B, dekadický – D (označení nepovinné), hexadecimální – H. Kódy jsou si rovnocenné, jen je třeba odlišit označením. Je jen potřeba si uvědomit rozsah použitelných hodnot : pro binární kód je to 00000000B až 11111111B, pro dekadický kód je to 0D až 255D, pro hexadecimální kód je to 00H až FFH

Příklad Přeneste do střadače (akumulátoru) konstantu s dekadickou hodnotou 67. binárně MOV A,#01000011B dekadicky MOV A,#67D nebo MOV A,#67 hexadecimálně MOV A,#43H Pokud se používá hexadecimální kód, pak při použití čísel 0 – 9 je normální zápis. Začíná-li operand, tj. je-li prvé číslo písmenem (A,B,C,D,E,F), pak by použitý překladač (CASS51) nerozuměl a je nutno před písmeno vždy přidat nulu!

Příklad správně 05H, 0AH, 2CH, 48H, 0FFH špatně FFH, A0H, atd.

Direktivy překladače Direktivy překladače, tzv. pseudoinstrukce - jsou určeny překladači, v překladu se nezobrazí. Je výhodné mít jako první nastavení konstant (jedné či více) pro potřeby odlaďování programu. Proto se před použitím v programu přiřazuje direktivou EQU jméno k hodnotě názvu. Je obdobou operaci deklarace konstant ve vyšších programovacích jazycích.

Příklad HOP EQU 05H KONST1 EQU 0FH atd. MOV R1,#HOP : MOV 06H,#KONST1 MOV R5,#HOP

Takovéto přiřazení je velmi vhodné při krokování programem, kdy nemusíme hledat konstanty (například počty cyklů pro čekání, které pro urychlení potřebujeme zkrátit na minimum). Po odladění programu pak přehledně nastavíme hodnoty na původní velikosti.

Rozlišení instrukcí a komentářů Komentář se liší od instrukcí odliší tím, že před komentářem napíšeme středník. Pokud nechceme v daném programu rovnou některé instrukce vypustit, protože si nejsme jisti zda jsou vhodné, pak též místo odstranění lze napsat před instrukci středník a ta bude považována za komentář. Příklady MOV A,#05H ;zapsání konstanty do střadače (komentář je zde textovou částí) ; CPL A (instrukce je brána jako komentář a bude ignorována)

Práce s porty Přenos dat na port O činnosti se lze se přesvědčit tak, že budeme rozsvěcet či zhášet diody LED. To lze realizovat jen před oddělovací obvod například 74LS245. Výstupy z procesoru ani tento obvod však nemají schopnost přivést dostatek energie při úrovni H na diodu LED aby se rozsvítila (výstup má možnost dát cca 0,16 mA). Toto lze obejít, protože obvod má možnost při úrovni L sepnout až 15 mA. Proto se používá zapojení dle následujícího obrázku. Pro rozsvícení diody LED je však potřebná úroveň L.

MOV P3,#01100010B tam kde je 0 bude svítit dioda a naopak Čtení portu Příklad MOV P1,#0F0H 1111 0000 nesvítí svítí nebo MOV P3,#01100010B tam kde je 0 bude svítit dioda a naopak

Tato činnost se skládá z několika kroků Tato činnost se skládá z několika kroků. Nejprve je třeba zajistit úroveň H na vývodech snímaného portu. To se realizuje instrukcí : MOV P3,#0FFH. Poté vnějšími spínači na výstupu portu můžeme zajišťovat úroveň L (zkratováním výstupu portu – port se nezničí, je na to konstruován!). Zapojení viz následující obrázek.

zápis do portu Následně se provede čtení stavu portu instrukcí a přenos sejmutých dat například do střadače. MOV A,P3

Čtení a zápis na portech Čtení stavu portu P3 a přenos dat na výstup P1. Na port P1 se dle výše uvedeného příkladu připojí diody LED, na port P3 se připojí spínače. Zapojení viz na následujícím obrázku. Čtení a zápis na portech

Proto, aby bylo možno sledovat data v neinverzním režimu (aby platilo P3.x = H a P1.x svítí LED a naopak) je nezbytné data invertovat a teprve pak poslat na port P1. Celý sled instrukcí je následující : MOV P3,#0FFH ; zajištění úrovně H na portu P3 MOV A,P3 ; přenos dat z P3 do střadače CPL A ; invertování dat z portu P3 MOV P1,A ; přenos dat ze střadače na port P1

V případě, že potřebujeme průběžně sledovat děje na portu P3, pak musíme zajistit opakování pomocí smyčky : MOV P3,#0FFH NAV: MOV A,P3 CPL A MOV P1,A JMP NAV ; skok na nový cyklus testu P3

Vytvoření časového intervalu Časový interval lze vytvořit podle okolností několika způsoby : vnitřní : vložením prázdných instrukcí (NOP) jen pro velmi malá zpoždění pomocí jednoduché či vícenásobné smyčky a instrukce DJNZ pomocí časovače vnější časování – pomocí externích hodinek

Vložením prázdných instrukcí MOV A,#05H NOP NOP zpoždění pro každé NOP je cca (12/11,059) ms, dáno frekvencí oscilátoru CPL A

Pomocí jednoduché smyčky MOV R3,#08H ; přednastavení počtu cyklů : TIME: DJNZ R3,TIME ; smyčka skáče sama na sebe MOV R3,#08H ; hodnota v R3 se obnovuje jen v případě, že bude tento cyklus ještě použit JMP ZPET ; skok zpět na pokračování programu

MOV R3,#05H ; přednastavení počtu cyklů (5x160=800 cyklů) maximálně Pomocí 2 smyček nebo vícenásobné smyčky (zde se časy jednotlivých pulsů násobí) MOV R3,#05H ; přednastavení počtu cyklů (5x160=800 cyklů) maximálně MOV R4,#0A0H ; v tomto případě 65536 cyklů, pro větší počet, pak ještě další zacyklení TIME: DJNZ R3,TIME MOV R3,#05H DJNZ R4,TIME MOV R4,#0A0H JMP ZPET

POZOR. Skoky pomocí DJNZ lze provádět jen v omezeném rozsahu (rel), tj POZOR! Skoky pomocí DJNZ lze provádět jen v omezeném rozsahu (rel), tj. ±127 adres! Poznámka. Po dobu takovéhoto čekání je procesor nevyužitelný!

Pomocí časovače Zde je nezbytné si uvědomit, že je třeba : musí se povolit přerušení vybrat který čítač/časovač (0 nebo 1) se bude používat a v jakém režimu bude pracovat (pro delší časy pak jen mód 1) – nastaví se v TMOD, ale nelze to provést bitově! provést přednastavení délky času nastavením doplňku (délka se odvozuje od přetečení čítače/časovače) spuštění čítání je potřebný podprogram pro obsluhu přerušení od časovačů (pro mód 1 obsluha T0,T1)

Povolení přerušení Je třeba nastavit registr IE (Interrupt Enable) pro čítač/časovač 0 je nastavení MOV IE,#82H pro čítač/časovač 1 je nastavení MOV IE,#88H pro oba čítače/časovače je nastavení MOV IE,#8AH

Volba módu a volba čítače nebo časovače pokud se nastaví x = 0, pak je navolen časovač x = 1, pak je navolen čítač (vnější události) G – závisí na dalších podmínkách, většinou stačí nastavit signál 0 (po RESETu)

Příklad Nastavit časovač 0 v módu 1 MOV TMOD,#01H nastavit čítač 1 v módu 1 MOV TMOD,#50H nastavit čítač 0 v módu 1 a časovač 0 v módu 2 MOV TMOD,#25H

Přednastavení délky čítání Lze buď vypočítat pracně doplněk a naplnit oba registry Příklad Zapište do registrů čítače/časovače takovou hodnotu, aby načítal 300 pulsů a poté došlo k vyvolání přerušení MOV TL0,#0D3H MOV TH0,#0FEH Nebo se lze spolehnout na překladač, který toto dopočítá sám a bez problémů pomocí direktiv.

Příklad Stejné zadání jako v předchozím případě MOV TL0,#LOW (0FFFFH- 300D) MOV TH0,#HIGH (0FFFFH-300D) Překlad do hexaformátu dopadne v obou případech stejně

Spuštění čítání Čítání lze spustit tak, že budeme vypisovat buď celý byte, nebo použijeme bitové operace. Pomocí registru TCON lze spustit oba čítače/časovače pokud je to nezbytně nutné naráz a též naráz zastavit. Podle toho, který čítač časovač chceme spustit, nastavíme na příslušný bit 1. Okamžitě po nastavení se spustí příslušný čítač/časovač, případně oba dva.

Pro spuštění čítače/časovače 0 je to instrukce MOV TCON,#10H pro spuštění obou čítačů/časovačů je to instrukce MOV TCON,#50H Místo MOV lze použít v řadě případů výhodněji ORL Bitové operace pro spuštění čítače/časovače spustit čítač/časovač 0 SETB TR0 spustit čítač/časovač 1 SETB TR1 Spustit oba čítače/časovače naráz pomocí bitových operací nelze!

Běh časového intervalu Pokud má běžet čas při běhu programu, pak není nutná žádná další přídavná část programu. Program běží a po vypršení určeného počtu pulsů dojde k přerušení, kde se vykoná potřebná činnost. Pokud však program čeká na ukončení intervalu, pak je třeba vytvořit čekací smyčku. Příklad Příklad čekací smyčky TIME: JMP TIME V tomto případě skáče příkaz sám na sebe.

Po přetečení čítače (v obou případech musí být připravena obsluha přerušení čítače/časovače. Obslužný program pro přerušení čítačem/časovačem V okamžiku přerušení provede program skok na adresu 0BH (čítač/časovač0) nebo 1BH (čítač/časovač1)Na této adrese bude pak ležet první instrukce obsluhy přerušení. Zřejmě jako první instrukce by mělo být zastavení čítačů/časovačů a to buď pomocí registru TCON (obou naráz), nebo pomocí bitových operací.

Příklad zastavení obou čítačů/časovačů naráz MOV TCON,#00H zastavení čítače/časovače 0 bitovou operací CLR TR0 zastavení čítače/časovače 1 bitovou operací CLR TR1 Na místo MOV TCON,#00H lze použít ANL TCON,#0AFH

Další instrukcí se musí zajistit činnost po uplynutí času a následně opustit tento obslužný podprogram instrukcí RETI, která obnovuje SFR IE. V tom okamžiku dojde k návratu PC na adresu na které došlo k přerušení (adresa je totiž uložena v SP většinou na adresách 08H (nižší řády adresy) a 09H (vyšší řády adresy). V případě, že nutno začít na jiné adrese, než má zdroj přerušení, pak je třeba přepsat obsah zásobníku (tj. obsah adres 08H a 09H) a teprve pak napsat instrukci RETI.

Příklad Návratová adresa je 1234H (je to například čekací smyčka). Na adrese 08H jsou uloženy NŘ adresy t.j 34H Na adrese 09H jsou uloženy VŘ adresy t.j 12H. Potřebujete však pokračovat po ukončení obslužného podprogramu na adrese 92H.

Proto je třeba ukončit obslužný podprogram následovně : MOV 08H,#92H MOV 09H,#00H RETI Pokud by totiž nedošlo k přesměrování, pak by program po návratu pokračoval znovu na adrese 1234H a skočil by zpět do čekací smyčky TIME: JMP TIME.

Direktivy překladače Použití direktivy překladače (pseudoinstrukce) SET Podobně jako direktiva (pseudoinstrukce) EQU realizuje přiřazení hodnoty názvu, navíc lze k objektu deklarovaného SET přičítat až do hodnoty FFH.

Program TEXT.ASM

Čtení konstant uložených v paměti ROM – s použitím instrukce MOVC A,@A+DPTR Naprogramování konstant do ROM pomocí direktivy (pseudoinstrukce) DB pro generování kombinací v programu HAD. Do tabulky vytvořené v části paměti ROM při psaní programu se zapíší za direktivu DB jednotlivé byty oddělené čárkou podle potřeby, maximálně po 8-mi bytech na řádek (za DB). Příklad Použití direktivy překladače (pseudoinstrukce) DB. Vytvořte světelného hada jehož jednotlivé kroky se budou vyčítat z tabulky konstant v ROM.

Program HAD.ASM

Uvedená tabulka je ilustrační a neodpovídá vlastnímu zápisu ve zdrojovém programu s příponou .ASMH. Tam se zapisují z uvedené tabulky jen „návěští“ a „instrukce“ ale navíc ještě komentáře !!! Překladač po přeložení vytvoří soubor s příponou .PRN, ve kterém pak k uvedeným sloupcům ještě zobrazí sloupce „adresa“ a „strojní kód“ Poznámka : Standardní překladače vyžadují soubor s příponou . SRC a vytvářejí soubory s příponou .OBJ a LST. Finální soubor s příponou .HEX pak vytvářejí programy typu LINKER.

Příklad Jiné použití direktivy překladače (pseudoinstrukce) DB. Generujte text v ASCII kódu a vypisujte ho z tabulky konstant uložené („vypálené“) v ROM.

Použití direktivy překladače (pseudoinstrukce) BIT pro bitové operace. Podobně jako direktiva (pseudoinstrukce) EQU se realizuje přiřazení tentokráte názvu bitu. Hodnoty 0 – 127 jsou určeny pro bity adres 20H až 2FH, bity 30H až F0H pro registry SFR, viz mapa vnitřní paměti RWM.