18. Programování mikropočítačů - Assembler, Wiring, IDE.pdf
Document Details
Uploaded by WorthwhilePanther
VOŠ a SPŠ, Jičín
Tags
Full Transcript
Otázka VOŠ a SPŠ, Jičín | Maturita Programování mikropočítačů – assembler, jazyk wiring a vývojová prostředí Témata 1. Harvardská architektura 2. Assembler a vývojové prostředí – textový editor, překladač, zavaděč programu, simulátor, integrované prostředí 3. Dělení instrukcí – dle funkce, délk...
Otázka VOŠ a SPŠ, Jičín | Maturita Programování mikropočítačů – assembler, jazyk wiring a vývojová prostředí Témata 1. Harvardská architektura 2. Assembler a vývojové prostředí – textový editor, překladač, zavaděč programu, simulátor, integrované prostředí 3. Dělení instrukcí – dle funkce, délky v B a strojových cyklech 4. SFR na CISC µP řady MCS-51- příklady a význam 5. Další moderní systémy s mikrokontrolery – Arduino, jazyk wiring, IDE, obsluha V/V periferií Vypracovaná otázka Co je to harvardská architektura? počítačová architektura má fyzicky oddělenou paměť programu a paměť dat protiklad Von Neumannové (ta je má fyzicky spojené) Co je to paměť programu? slouží k uložení programu mikrokontroleru je Read-Only, tudíž je to paměť ROM ukládá kód, který má CPU provádět (resp. posloupnost Assembler instrukcí) pro nahrání programu slouží tzv. programátor ten dokáže přenést kód z počítače do paměti programu připojuje se do sériové linky Co je to paměť dat? slouží k uložení dat programu mikrokontroleru slouží k ukládání dat, které jsou používány v průběhu běhu programu data proudí oběma směry = paměť typu RAM pro zápis do paměti dat se používá instrukce MOV Co je to assembler? software pro překlad z jazyka symbolických adres do strojového kódu EdSim51 = textový editor pro jazyk symbolických adres Co je to Wiring? jazyk založený na programovacím jazyce C++ slouží pro programování mikrokontrolerů bez detailních znalostí hardware vývojové prostředí: Arduino IDE program se skládá ze 2 části: Setup() = funkce která se spustí (pouze jednou) na začátku programu, používá se na počáteční nastavení Loop() = funkce, která vykonává kód v nekonečném cyklu, dokud je deska Arduino napájena Co je to Arduino IDE? anglicky: Integrated Development Environment česky: integroavané vývojové prostředí aplikace, která umožňuje jednoduchou práci s deskou Arduina obsahuje: textový editor a několik tlačítek k překladu a nahrání kódu komunikace s deskou, pomocí USB s využitím sériového portu COM (instalace ovladače nutná) programovací jazyk: Wiring výhody: nezávislost na platformě jednoduché programování široká uživatelská komunita Co je to Arduino? obsahuje vstupy a výstupy (piny) k nim jsou připojeny další obvody, čipy, relé, … funkce pinMode() slouží k nastavení pinu musí obsahovat 2 parametry: pinMode(č. pinu, INPUT/OUTPUT) k digitálním operacím lze použít piny (ANALOG IN) funkce digitalWrite() = slouží k ovládání výstupu musí obsahovat 2 parametry: digitalWrite(č. pinu,HIGH=proud teče/ LOW=neteče) funkce digitalRead() = obsahuje pouze jeden operand (č. pinu) vrací hodnotu HIGH, když proud teče, pokud ne LOW Jak dělíme instrukce dle funkce? instrukce pro přenos dat aritmetické logické Jaké existují instrukce pro přenos dat? MOV cíl, zdroj (Move) Jaké existují aritmetické instrukce? INC cíl (Increment) => ++cíl DEC cíl (Decrement) => --cíl ADD cíl, zdroj (Add) => cíl += zdroj SUBB cíl, zdroj (Subtract) => cíl -= zdroj MUL co_s_čím (Multiply) => co * s_čím DIV co_čím (Divide) => co / čím ;nastavení výchozích hodnot 1 2 3 MOV 30h, #74 MOV 31h, #13 4 5 6 7 8 ;sčítání MOV A, 30h ADD A, 31h MOV 40h, A 9 10 11 12 13 ;odčítání MOV A, 30h SUBB A, 31h MOV 41h, A 14 15 16 17 18 ;násobení MOV A, 30h MOV B, 31h MUL AB 19 20 21 22 23 MOV 50h, B MOV 51h, A ;dělení MOV A, 30h MOV B, 31h DIV AB MOV 60h, A 24 25 26 27 Jaké existují logické instrukce? NOT zdroj => neguj všechny bity zdroje (000 -> 111) AND cíl, zdroj => logický součin zdroje s cílem ulož do cíle OR cíl, zdroj => logický součet zdroje s cílem ulož do cíle XOR cíl, zdroj => logický vylučovací součet zdroje s cílem ulož do cíle Jak dělíme instrukce dle délky ve strojových cyklech? jednocyklové vícecyklové DJNZ DECREMENT JUMP NOT ZERO odečti jedničku a skoč, když tam není nula např. DJNZ R5, skok odečti jedničku od R5 a skoč, pokud na R5 není nula JB JUMP BIT ve chvíli, kdy je tam 1, skáče např. JB P2.0, zmen pokud hodnota na P2.0 není 1, tak pokračuje v programu JNB JUMP NOT BIT ve chvíli, kdy je tam 0, skáče např. JNB P2.0, zmen pokud hodnota na P2.0 není 0, tak pokračuje v programu JNB P2.0, $ dokud hodnota není 0, tak stojí na místě CPL negace hodnoty např. CPL A negace hodnoty v registru A (přičemž předtím jsme do registru daly nějakou hodnotu) CJNE COMPARE JUMP NOT EQUAL porovná dvě hodnoty a skáče na návěští, pokud se sobě nerovnají např. CJNE P2, #11111111b, $ P2 => 8 tlačítek, přičemž stav každého tlačítka je reprezentován jedním bitem pokud žádné tlačítko není stisknuté, nedělej nic Skoky 1. podmíněné 2. nepodmíněné © Ondřej Švorc Odhlásit se