Překladač - Assembler, úloha SW_ UART



Podobné dokumenty
Překladač - Assembler. kat. měření, ČVUT - FEL, Praha A3B38MMP, X38MIP Přednáška 3 - část. J. Fischer

A51 MACRO ASSEMBLER POKUSNY PROGRAM DATE 10/3/007 PAGE 1

Čísla, reprezentace, zjednodušené výpočty

Čísla, reprezentace, zjednodušené výpočty

velikosti vnitřních pamětí? Jaké periferní obvody má na čipu a k čemu slouží? Jaká je minimální sestava mikropočítače z řady 51 pro vestavnou aplikaci

Překladač - Assembler. ČVUT- FEL, katedra měření, přednášející Jan Fischer. Materiál je určen jako pomocný materiál pouze pro studenty

8. Laboratoř: Aritmetika a řídicí struktury programu

od jaké adresy bude program umístěn? Intel Hex soubor, co to je, z čeho a jak se získá, k čemu slouží? Pseudoinstrukce (direktivy) překladače ORG, SET

Assembler - 5.část. poslední změna této stránky: Zpět

Seznámení s mikropočítačem. Architektura mikropočítače. Instrukce. Paměť. Čítače. Porovnání s AT89C2051

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Mikrořadiče řady 8051.

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Mikrořadiče pro přístrojovou techniku


Klimatizace. Třída: 4.C. Střední Průmyslová Škola Elektrotechnická Havířov Protokol do MIT. Skupina: 3. Zpráva číslo: 3

Jazyk symbolických adres

Algoritmizace a programování

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Předmluva 13 Použité konvence 14. KAPITOLA 1 Základní číselné soustavy a pojmy Číselné soustavy a převody 15 1.

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Úvod do programování. Lekce 1

Strojový kód. Instrukce počítače

MPASM a IDE pro vývoj aplikací MCU (Microchip)

Úloha Ohmetr zadání úlohy

Program "Světla" pro mikropočítač PMI-80

Mikroprocesory v přístrojové technice

Číselné vyjádření hodnoty. Kolik váží hrouda zlata?

Rozhraní mikrořadiče, SPI, IIC bus,..

Kubatova Y36SAP 8. Strojový kód Jazyk symbolických instrukcí asembler JSA pro ADOP a AVR Kubátová Y36SAP-strojový kód 1

5 Přehled operátorů, příkazy, přetypování

Programátorský model procesoru x51

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Náplň předmětu A3B38MMP a kontrolní otázky k terminu testu v semestru Mikroprocesory řady 8051 /52 a jejich použití Obecné blokové schéma

Mikrokontroléry. Doplňující text pro POS K. D. 2001


Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

SW24x3 programovatelné relé

Registry 32 bitové pro všeobecné použití: EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP.

Programovací jazyk Pascal

Popis vývojového prostředí. WinIDE51

Paměť počítače. alg2 1

Přednáška A3B38MMP. Bloky mikropočítače vestavné aplikace, dohlížecí obvody. 2015, kat. měření, ČVUT - FEL, Praha J. Fischer

Opakování programování

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

BASPELIN CPM. Popis komunikačního protokolu verze EQ3 CPM EQ3 KOMPR

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

Náplň předmětu A3B38MMP a kontrolní otázky k termínu testu v semestru Mikroprocesory řady 8051 /52 a jejich použití Obecné blokové schéma

Projekt - Voltmetr. Přednáška 3 - část A3B38MMP, 2015 J. Fischer kat. měření, ČVUT - FEL, Praha. A3B38MMP, 2015, J.Fischer, kat. měření, ČVUT - FEL 1

POKLADNÍ DISPLEJ LCD. hotline: strana 1

ISU Cvičení 3. Marta Čudová

Proměnné a parametry. predn_08.odt :00:38 1

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

SHIFTIN sclk, sdata, mode, (data{/ bits} {, data {/ bits},...}) SPIIN sclk, sdata, mode, (data{/ bits} {, data {/ bits},...})

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 10

Struktura a architektura počítačů (BI-SAP) 7

Vestavné systémy BI-VES Přednáška 5

BASPELIN CPM. Popis komunikačního protokolu verze EQ22 CPM EQ22 KOMPR


Ṁikroprocesory v přístroj. technice. Ohm-metr ... Petr Česák

Komunikace modulu s procesorem SPI protokol

RS485/MODBUS-RTU ver. 4 s rozšířením pro R24

Digitální teploměr s LCD

Informatika Datové formáty

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 8

Mikroprocesory v přístrojové technice

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG )

Úvod do programovacích jazyků (Java)

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

5. A/Č převodník s postupnou aproximací

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

Struktura a architektura počítačů (BI-SAP) 5

Přerušovací systém s prioritním řetězem

Obsah. Popis funkcí. RS485/MODBUS-RTU ver Komunikace s převodníkem probíhá na principu MASTER - SLAVE. Protokol MODBUS mát tuto strukturu:

MCP BIOS řídicí jednotky Kit386EXR

Y36SAP - aritmetika. Osnova

MIKROPOČÍTAČOVÉ SYSTÉMY

PCKEYB JEDNOTKA PRO OBSLUHU KLÁVESNICE TYPU PC AT. Příručka uživatele a programátora

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

Struktura a architektura počítačů (BI-SAP) 6

Assembler - 2.část. poslední změna této stránky: Zpět

D/A převodník. Třída: 4.C Elektrotechnická Havířov Protokol do MIT Skupina: 3. Střední Průmyslová Škola. Zpráva číslo: 4

ZÁVĚREČNÁ PRÁCE Z PŘEDMĚTU MIT

Rozhraní mikrořadiče, SPI, IIC bus,..

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta informačních technologií

Analyzátor sériového rozhraní RSA1B

9. Rozšiřující desky Evb_Display a Evb_keyboard

Mikroprocesory v přístrojové technice

A4B38NVS, 2011, kat. měření, J.Fischer, ČVUT - FEL. Rozhraní mikrořadiče, SPI, IIC bus,.. A438NVS, kat. měření, ČVUT - FEL, Praha. J.

Rozhraní mikrořadiče, SPI, IIC bus,.. Přednáška 11 (12)

Model ver SYSTEM EXCLUSIVE KOMUNIKACE CHD Elektroservis

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

Zápis programu v jazyce C#

STEDNÍ PRMYSLOVÁ ŠKOLA, OSTRAVA - MORAVSKÁ OSTRAVA, KRATOCHVÍLOVA 7. (studijní text)

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Transkript:

Překladač - Assembler, úloha SW_ UART Přednáška 2 - část A3B38MMP, 2014 kat. měření, ČVUT - FEL, Praha J. Fischer A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 1

Náplň Úloha UART, specifikace zadání, vysvětlení asynchronní komunikace Assembler Symboly, Příklady direktiv asembleru a jejich použití Tvorba programu s využitím výhod symbolického programování Úloha - Odpor A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 2

Úloha programový UART- zadání Generovat periodicky na portu P1.4 signál, který odpovídá přenosu ASCII znaků iniciál Vašeho jména. Každý platný datový bit se potvrdí kladným impulsem o délce alespoň 10 usekund, jehož obě hrany proběhnou v době platnosti datového bitu sériový asynchronní přenos 9600 Bd, 1 start bit, 8 datových bitů bez parity, 1 stop bit. Aby bylo možno při pozorování signálu dobře synchronizovat osciloskop, vysílejte po každém znaku prodlevu alespoň 1 ms, kdy zůstává signál v neaktivním stavu (vysoká úroveň). Pokud se bude správně generovat signál na P1.4, ověřte též funkčnost při vysílání na sériovou linku RS-232. Program změňte tak, aby se signál generoval na portu P3.1, který je připojen na RS-232. Pokud je vše správně, budou se po spuštění programu na obrazovce vypisovat zvolené znaky. A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 3

Úloha programový UART, ověření Pro odladění - generovat signál na P1.4 kontrolovat osciloskopem, změnit program na P3.1, vysílání prostřednictvím RS -232 do PC. V microvision otevřít terminálové okno (funkce analogicky hyperterminal) Pokud je vše správně, budou se po spuštění programu na obrazovce vypisovat zvolené znaky. P1.3 P1.4 P1.5 P1.6 P1.7 P3.0/RxD P3.1/TxD P3.2/INT0 P3.3/INT1 VSS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 PDIL 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 VCC A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 4

Úloha programový UART, princip Asynchronní komunikace, obvykle přenos ASCII znaků A = 41h, B =42h 1 = 31h, 2 = 32h start bit, datové bity D0 D7, stop bit (nastavení bez parity) obecně komunikace:start bit, 5-8 datových bitů, parita, či bez parity, 1, 1,5 nebo 2 stop bity, vysílání dat od D0 po D7, to je od LSB nejnižší doba vyslání celého znaku zde 10 x (1/9600)= 1,04 ms vyslání znaku 1 doba = 10 x ( 1 / Br ), nast. - 8 dat, 1 stop bit 31 = "1" potvrzovací impulsy start D0 D1 D2 D3 D4 D5 D6 D7 stop start 1/ Br 1 0 0 0 1 1 0 0 stop nastavení prodlevy mezi znaky pro snazší kontrolu osciloskopem, potvrzovací impulsy znak znak znak znak A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 5

Modulační rychlost, baudrate Obvykle používané Br (baud rate - modulační rychlost)...19200, 9600, 4800, 2400, 1200,...Bd ( Baud) 9600 bývá základní rychlost Br = 9600, 1 / Br = 0,1041 ms, vyslání celého ASCI 1 znaku 1,04 ms nast.: start bit - vždy ; 8 datových bitů (bez parity ); 1 stop bit možný přenos: 5 až 8 datových bitů; s paritou - bez parity ; 1, 1,5 nebo 2 stop bity U 8051 -obvod UART: 8 dat. bit bez parity nebo 7 dat. bitů s paritou u PC s COM Port - možnost nastavení až 115 200 Bd Převodník RS-232 na USB i vyšší rychlosti (www.nc.cz - 190 Kč), pro boot procesorů STM32,.. A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 6

Programový UART, postup řešení Vytvořit jako podprogram pro vyslání jednoho znaku. Určení doby čekání při vyslání jednoho bitu (smyčka), nutno snížit dobu dalších režijních instrukcí call, Frekvence krystalu vývojové desky s I8031 je 11.0592 MHz. Doba jednocyklové instrukce je dána T=12 /11.0592 MHz = 1,085 us. MOV A, Rn 12 osc. 1,085 us LCALL,.. adr.16 24 osc. 2,17 us RRC A 12 osc 1,085 us DJNZ Rn 24 osc. 2,17 us Vstupem znak např. v akumulátoru, posun akumulátoru přes Carry, kopírovat Carry do P3.1, ( MOV P3.1, C) testovat na dokončení vyslání celého znaku. Využít simulátor, pozorovat signál na log. analyzátoru v uvision -3, kontrola časování, ( v simulátoru nebude však vypisovat znaky na terminálu) A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 7

Sériové vysílání dat - příklad ; priklad. casti prog. pro seriove vysilani dat do serio-paralelniho pos. registru SDATA equ P1.5 ; datovy signal, na DATA vstup pos. registru SCLK equ P1.6 ; hod. signal ; znak je predan v akumulatoru mov SendBit: clr rlc mov setb djnz ret R0,#8 ; pocet bitu k odeslani SCLK ; hod. signal do nuly A ; rotovani doleva skrz carry, posouvame A o 1 bit vlevo, ; horni bit jde do carry, spodni je naplnen z carry SDATA,C ; nastav vyst. SDATA podle bitu carry - vysli nejvyssi bit SCLK ; nastav hodiny - potvrzeni platnych dat, nab. hrana R0,SendBit ; opakuj pro vsech 8 bitu ; program vysila plnou rychlosti, ; pro UART, třeba doplnit start a stop bity a cekani, upravit vysilani v poradi od ; LSB A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 8

Tvorba programu pro mikroprocessor Cíl - získat spustitelný kód strojní kód, jeho umístění do ROM, EPROM, FLASH, nebo zavedení (BOOT) do programové RAM Vygenerování strojního kódu - v počátcích i ruční překlad tato znalost někdy užitečná při hledání chyb nebo zpětném inženýrství A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 9

Dva způsoby tvorby programu A) Základní program bez využití symbolů a symbolických adres MOV DPTR, 01C4h ; Vypis uvodniho titulku ACALL 0294h ; volani programu pro vypis textu MOV 3Fh,# 00h ; vynulovani pocitadla bliknuti SETB 90h.5 ; zhasni LED - zapojene proti Ucc ACALL 018Eh ; cekej CLR 90h.5 ; rozsvit LED A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 10

Dva způsoby tvorby programu A) Základní program bez využití symbolů a symbolických adres B) Program s využitím symbolů a symbolických adres MOV DPTR, 01C4h ; Vypis uvodniho titulku Titlulek: MOV DPTR,# Txt_U ; Vypis uvodniho titulku ACALL 0294h ; volani programu pro vypis textu MOV 3Fh,# 00h ; vynulovani pocitadla bliknuti CALL Sendrss ; volani programu pro vypis textu Start: MOV Pruch, #00 ;vynulovani pocitadla bliknuti SETB 90h.5 ; zhasni LED - zapojene proti Ucc ACALL 018Eh ; cekej CLR 90h.5 ; rozsvit LED Aznovu: SETB LED ; zhasni LED - zapojene proti Ucc CALL Cekej ; cekej CLR LED ; rozsvit LED A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 11

Srovnání variant tvorby programu A) Základní program bez využití symbolů a symbolických adres Programátor musí přehled o umístění jednotlivých proměnných, adresách, kam se skáče,... změna jednoho parametru - nutnost přepisování ve více místech programu Komplikovaná modifikace programu MOV R0, # 55H DJNZ R0, ZAC B) Program s využitím symbolů a symbolických adres Snaha minimalizovat přímé číselné konstatnty v těle programu, ale nahradit je symbolickými konstatntami. Symbolická jména proměnných i pevných konstatnt umístěných v paměti. Snadná modifikovatelnost OPAK EQU 55H... MOV RO, # OPAK DJNZ R0, ZAC A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 12

Symbol, symbolické adresy Místo číselných adres a číselných konstant symbolické adresy a symbolické konstanty. Překladač dosadí příslušnou hodnotu symbolu podle zadání nebo počitadla adres při překladu. Symbol je jméno, které se definuje, aby reprezentovalo hodnotu, textový blok, adresu nebo jméno registru. Symboly mohou reprezentovat číselnou konstantu a výraz Symboly začínají písmenem nebo spec znaky _,? (nesmí začínat číslicí) vyhodnocení symbolu 16 bitově možno rozsah 0 až 65535 (bez znaménka) nebo -32768 až +32767 dvojkový doplněk A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 13

Překladač Assembler, z jazyka symbolických adres Assembler programový nástroj pro zjednodušení psaní počítačového. prog. Překládá symbolický kód do kódu.obj, který může být naprogramován do mikropočítače a spuštěn. Adresy a hodnoty používané v poli operandů instrukcí mohou být vyjádřeny symbolicky. (Také používaný název jazyk symbolických adres JSA) Program v assembleru má tři části: Strojní instrukce, instrukce proc. 8051 (MOV, ACALL,..) dle popisu 8051 Direktivy asembleru pseudoinstrukce pro definovaní programové, datové struktury a symbolů, generování nespustitelného kódu ( není to informace pro procesor!) ( SET, DB, EQU, ORG,.CSEG,..) Řízení asembleru řízení procesu překladu a tvorby kódu (Include, XREF, NOMOD51, Object,..) A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 14

Překladač Modulární programování, rozdělení na menší bloky a podprogramy, které se lépe testují assembler AX51 ( A51), linker Lx51, OHx51 převodník do hex. Samostatné části programu, přeložení (aritmetika, komunikace, sběr dat) samostatné přeložení- relativní modul, linkování do výsledného programu Na cvičeních absolutní segmenty, přesně definovaná adresa (CSEG AT 0A000h,..., DSEG AT 30h) od které bude umístěn. Obvykle však více modulů, relativní moduly, při překladu není známo, jak budou umístěny. Přeložení modulů a jejich linkování A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 15

Překladač symbol význam číslo adresa programu Code, Data, XDATA, direktivy assembleru (pseudoinstrukce) přiřazení hodnoty vždy 16- bitově segment blok kódové nebo datové paměti A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 16

Testovací program pro syntaxi příkazů překladače A51 firmy KEIL DIREKTIVY PŘEKLADAČE $ XREF ; crossreference, zkráceně XR, NOXR ; implicitně NOXREF!! $ MOD51 ; je implicitně, ; $ NOMOD51 ; zakáže předdef.né symboly 8051 a pomocí ; $INCLUDE (REG552.INC) ; se vloží soubor s definicí ; symbolu pro jiné klony, např. Philips 80C552,... ; ZKUSIT v předchozích řádcích $MOD51..změnit ; $ INCLUDE (knih.lib) $ MACRO ;implicitně, povolí zpracování definicí ; opak $ NOMACRO; A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 17

VÝRAZY ; ČÍSELNÉ VÝRAZY vyhodnocují se 16 -bitově ; HEX H, h 1234h, 99H, 0A0F0H, 0FFH Hexadecimální ; DEC D, d, 1234, 65590D, 20d, 123 Dekadické ; OKTAL. 177O, 7777o, 25O, 123o, 177777O Oktalové ; BIN B, b 111B, 10011 Binární ; 1111$0000$1010$0011B ZNAK $ pro snazší orientaci ; STRING - RETEZCE 0041 sym set 'A' 4142 sym set 'AB' 0061 sym set 'a' 6162 sym set 'ab' ; sym set 'abc' to je CHYBNĚ A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 18

0000 7641 TEST: MOV @ R0, # 'A' 0002 9430 SUBB A, # '0 0004 908000 MOV DPTR, # 8000 h A000 EX_RAM EQU 0A000 h 0007 90A000 MOV DPTR, # EX_RAM TABLE: DB ' Zadej znak ', 0 ; SYMBOLY ; Symboly - max. 31 ZNAKU DLOUHE ; symbol začíná znakem 'A' az 'Z', nebo '?' ; TYPY CODE, DATA, BIT TYPELES 0099 SERIAL_BUFFER DATA SBUF ; deklarace 0020 F599 MOV SERIAL_BUFFER, A ; použití A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 19

; NAVĚŠTÍ LABEL1: DS 2 LABEL2: ; komentář 0022 1B215354 NUMBERA: DB 27, 33,'STRING', 0 0026 52494E47 002A 00 002B E0 COPY: MOVX A, @DPTR A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 20

REZERVOVANE SYMBOLY ; tyto symboly jsou rezervovovány pro stálé použití překladačem ; A, R0 az R7 ; DPTR, PC, C, AB, AR0 až AR7 ; SYMBOL $ ČÍTAČ ADRES v SEGMENTU ; odděleně SEGMENT CODE, DATA, IDATA, BIT, CSEG 0064 ORG 100 ; pomocí ORG se nastavuje $ ORG nastavení počitadla ($) adres ($) (v daném segmentu) 0064 80FE HALT: SJMP $ 0066 00660068 TABLEA: DW $, $, $ 006A 006A A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 21

OPERÁTORY ; aritmetické operátory ; =,- znaménko +5, FFFF SYM SET -1 FFFE SYM SET NOT 1 FFFE SYM SET NOT 0000$0000$0000$0001B FFFF SYM SET NOT 1 + 1 FFFF SYM SET (NOT 1) +1 FFF6 SYM SET -0AH ; +, - 2 + 10-2 sčítání, odečítání ; * 1200h * 7 násobení ; / dělení 0004 SYM SET 17/4 ; celočíselné dělení 0001 SYM SET 17 MOD 4 ; zbytek po dělení 0078 SYM SET ( 2 + 8 ) * 12 ; změna pořadí výkonu operací A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 22

BINÁRNÍ OPERACE ; ; NOT FFFA sym set NOT 5 ; negace - jedničkový doplněk 04D2 sym set 1234 0004 sym set HIGH 1234; vyšší Byte 00D2 sym set LOW 1234; nižší Bytet ; SHR, SHL POSUN DOPRAVA, DOLEVA 0020 sym set 2 SHL 4 sym set 0FFH AND 12H; logická AND operace 00B3 sym set 12H OR 177 0003 sym set 12 XOR 15 A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 23

RELAČNÍ OPERÁTORY ; ; >= / GTE GREATER THAN OR EQUAL TO ; <= / LTE LESS THAN OR EQUAL TO ; <> / NE NOT EQUAL ; = / EQ EQUAL ; < / LT LESS THAN ; > / GT GREATER THAN ; OPERÁTORY GTE, LTE, NE, EQ, LT, GT ;... je nutno oddělit mezerou od operandu ; OPERATORY <>= není nutno oddělovat mezerou A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 24

PRIORITA OPERATORU ; priorita - pořadí použití operátorů při vyhodnocení symbolu ; 1. ( ZÁVORKY ) ; 2. NOT, HIGH, LOW ; 3. =, - JAKO ZNAMÉNKO ; 4. *, /, MOD, ^ ; 5. +, - SČÍTÁNÍ, ODEČÍTÁNÍ ; 6. SHR, SHL ; AND, OR, XOR ; >=, <=, =, <, > A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 25

; NUMERICKÉ VÝRAZY - TYP SEGMENTU ; ; v tabulce XREF uveden TYP SYMBOLU ; NUMBER - (CISLO) nezávisí na segmentu ; CSYM adresový symbol (SEG.) kódový ; DSYM adresový symbol DATOVÝ - INTERNÍ PAM. ; ISYM IDATA symbol (INT. DAT. paměť nepř. adresov.) ; XSYM adresový symbol DATOVÝ (EXT. PAMET) ; BSYM bitový symbol ; 1) Výsledek unární operace (+,- jako znaménko ; NOT, LOW, HIGH) mají stejný typ seg. jako operand ; 2) Výsledek všech binárních operací ; (MIMO + A -) nemá segmentový typ ; 3) Pro binární operace + A - pokud má pouze!!! ; jeden seg. typ, pak má stejný typ ; výsledek v ostatních případech nemá typ A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 26

OPERACE SE SYMBOLY RUZNÉHO TYPU ; ; CSYM + (DSYM-DSYM) = TYP CODE ; DSYM - DSYM = CISLO (BEZ TYPU) ; CISLO + CISLO = CISLO ( BEZ TYPU) ; CSYM + CISLO = TYP CODE 006C 08484C41 MSG: DB LEN,'HLASENI',0 0070 53454E49 00 0008 LEN EQU $-MSG-1 ; spočítá délku řetězce A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 27

REZERVACE MÍSTA V PAMĚTI, DEFINICE KONSTANT ; nejdříve definovat typ seg. (CSEG, DSEG, BSEG, XSEG a výraz, až pak je možno použít návěští DSEG (at 40h ) DS výraz (např. DS 2, ) rezervace v pam. DATA XSEG (např. at 0A400h) DS 6 ; rezervace místa pro 6 bajtů v paměti typu XDATA CSEG HLASENI: DB VYRAZ [VYRAZ,...] BYTE v paměti CODE 0075 000141D2 DB 0,1,'A', LOW (1234D) BSEG bseg at 20h.0 ; DW VYRAZ [,VYRAZ,..] SLOVA v paměti CODE ; DBIT vyraz ( počet míst pro bitové proměnné) ANO_NE_Pr: dbit 1 ANO_NE_Suma: dbit 1 A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 28

; DIREKTIVY PRO PŘIŘAZENÍ JMÉNA SYMBOLU VYPNUTI BIT 20h.2 ; definice bit. sym. vypnutí na adr. 20h.2 CISLO1 DATA 30h ; definice datového symbolu CISLO1 CISLO2 DATA 34h ; (lze použít MOV R1, # CISLO1 ( jaký je rozdíl mezi MOV R1, CISLO1 a MOV R1, #CISLO1? ) A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 29

PŘÍKLAD POUŽITÍ JMEN SYMBOLU S PŘIŘAZENÝM TYPEM 0000 RESET code 0000 ; reset - začátek prog. pro resetu 0003 Intr0 code 03 ; adr pro obsluhu přer. INT0 000B IntrTF0 code 0bh ; adr pro obsluhu přer. čas. T0 0013 Intr1 code 13h ; adr pro obsluhu přer. INT1 0030 pos_zac equ 30h ; posun začátku programu CSEG at Reset 0000 802E JMP reset + Pos_zac CSEG at Intr0 0003 B295 CPL P1.5 0005 32 RETI CSEG at IntrTF0 000B B295 CPL P1.5 000D 32 RETI CSEG at Intr1 0013 B295 CPL P1.5 0015 32 RETI A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 30

PŘÍKLAD POUŽITÍ JMEN SYMBOLU S PŘIŘAZENÝM TYPEM -2 CSEG at Reset + Pos_zac ; povolení přerušení a ještě další instrukce 0030 opakuj: 0030 00 NOP 0031 00 NOP 0032 80FC JMP opakuj END A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 31

PŘÍKLAD OBSLUHY PŘERUŠENÍ NA DESCE v EPROM program monitor, přesměrování do RAM 0003h LJMP 0A003h 0023h LJMP 0A003H ve vlastním programu CSEG at A003h 0A003h LJMP obsluha_int0. 0A023h LJMP obsluha_int_uart A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 32

; PODMÍNĚNÝ PŘEKLAD - 1 CSEG ; TYP_PROC 0 - AT89C2051, 1 - AT89C8252, 2 - C8051F020 Silic. Lab. $ SET (TYP_PROC = 0); 0 nebo 1, nebo 2 $ IF (TYP_PROC = 0) ; program inicializace UART pro AT89C2051 ZASOBNIK SET 40h LED SET P1.5 TLAC SET P 1.4 $ ELSEIF (TYP_PROC = 1), KONSTUKCE S ; ELSEIF mozna POUZE s $ ; program inicializace pro AT89C8252 ZASOBNIK SET 80h LED SET P2.5 TLAC SET P 1.4 $ ELSEIF (TYP_PROC = 2) ; program inicializace pro C8051F020 ZASOBNIK SET 80h LED SET P1.5 TLAC SET P3.5 ; program inicializace pro AT89C8252 $ ENDIF A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 33

; PODMÍNĚNÝ PŘEKLAD - 2 CSEG ZAC: ; tady je hlavní a společný program MOV SP, # ZASOBNIK ; Inicializace SP podle typu proc. NOP ; NOP ;... END ; konec programu Využití jednoho programu pro více variant zařízení, zadání parametrů pro podmíněné přeložení jednotlivých částí programu. Modifikace, podle velikosti záznamové paměti, zobrazovače v přístroji, klávesnice, rozhraní... A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 34

Vyhodnocení symbolu záporná čísla - poznámka vyhodnocení symbolu 16 bitově MOV A, # symbol? jak je možné (8-bitový registr, 16- bitová hodnota?) ---- přesune se pouze dolní Byte stejné jako - MOV A, # low ( symbol) Jak u dvojkového doplňku? číslo -1 ve dvojkovém doplňku: FFFFh (16-bitově) -1 FFh (8-bitově) dolní byte je stejný FF proto možné konst SET -1 FFFF 1 konst set -1 0000 74FF 2 mov a, #konst 3 end MOV A, # konst (do 8- bit. aku dosadí dolní byte konst) A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 35

Využití pseudoinstrukcí - připojení 7- seg. LED Popis připojení 7- segmentového zobrazovače ; Pripojeni tato cast definuje propojeni jednotlivych segmentu na bity budiciho slova v katodach, pokud se zmeni obvod, predefinuje se pouze tato tabulka 0001 seg_a EQU 00000001B 89C52 Tl.1 +5V R1 T1 T2 T3 T4 0002 seg_b EQU 00000010B 0004 seg_c EQU 00000100B 0008 seg_d EQU 00001000B 0010 seg_e EQU 00010000B 0020 seg_f EQU 00100000B P1 data bus Tl.4 R2 R3 R4 SA1 SA2 SA3 SA4 Rk1 0040 seg_g EQU 01000000B 0080 seg_h EQU 10000000B Rk8 8 74HCT573 více k zapojení a ovládání zobrazovače na: http://measure.feld.cvut.cz/groups/edu/pmt/uloha6.html A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 36

Definice generátoru znaků ; definice generatoru znaku v pozitivni logice, toto je jen priprava 0006 JEDNOTKA EQU seg_b OR seg_c 005B DVOJKA 004F TROJKA EQU seg_a OR seg_b OR seg_g OR seg_e OR seg_d EQU seg_a OR seg_b OR seg_c OR seg_d OR seg_g 0066 CTYRKA EQU seg_f OR seg_g OR seg_b OR seg_c ; vlastni generator znaku je v negativni logice, protoze segment sviti pri nule na katode 2200 F9 GENER_ZNAKU: DB NOT jednotka ; toto již kód vlastniho generatoru 2201 A4 DB NOT dvojka ; umisteneho v pameti 8051 2202 B0 DB NOT trojka ; od adr 22 00 h 2203 99 DB NOT ctyrka ; pokud by svitlo při 1, odpadne NOT, Je možno použít další možnosti v A cislo 1, nebo 2, Získání kódu MOV DPTR, #(GENER_ZNAKU-1) MOVC A, @A+DPTR ( pro cislo 1 ukazuje prave na Gener_znaku A3B38MMP, 2014, J.Fischer, ČVUT - FEL Praha, kat. měření 37