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



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

Překladač - Assembler, úloha SW_ UART

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

Výrazy lze též zavést v nečíselných oborech, pak konstanty označuji jeden určitý prvek a obor proměnné není množina čísel.

Mikrořadiče pro přístrojovou techniku

NÁVOD K OBSLUZE MODULU VIDEO 64 ===============================

Algoritmizace a programování

Mikroprocesor Intel 8051

Mikrořadiče řady 8051.

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

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

Analýza dějů na rozhraní RS 232 C

MS Word 2007 REVIZE DOKUMENTU A KOMENTÁŘE

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

Sbírka úloh pro elektronickou stavebnici. Stručný popis programovacího jazyka Bascom AVR


Mikroprocesory v přístrojové technice


Zkouška z předmětu Počítačové systémy

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


2.6.4 Lineární lomené funkce s absolutní hodnotou

Asymptoty grafu funkce

Obvody s programovatelným řídicím relé

1 Měření kapacity kondenzátorů

Business Contact Manager Správa kontaktů pro tisk štítků

Programování - úvod. Programování. Proces programování. Vlastnosti dobrého programu: Kapitola seznamuje se základními pojmy programování.

Systém MCS II. Systém MCS II < 29 >

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

AMU1 Monitorování bezpečného života letounu (RYCHLÝ PŘEHLED)

Ovládání automatické frézky. Úvod. Popis funkce

Úloha Ohmetr zadání úlohy

Ozobot aktivita lov velikonočních vajíček

ALLEX FX Programovatelný logický automat. Katalogový list. říjen Programovatelné logické automaty

Přechodové jevy, osciloskop

Lekce 2 LEGO Education (3,5 vyuč. hodiny)

Lineární algebra. Vektorové prostory

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

Poukázky v obálkách. MOJESODEXO.CZ - Poukázky v obálkách Uživatelská příručka MOJESODEXO.CZ. Uživatelská příručka. Strana 1 / 1. Verze aplikace: 1.4.

Adresace paměti. 11.přednáška

48. Pro RC oscilátor na obrázku určete hodnotu R tak, aby kmitočet oscilací byl 200Hz

Univerzita Tomáše Bati ve Zlíně

Definice z = f(x,y) vázané podmínkou g(x,y) = 0 jsou z geometrického hlediska lokálními extrémy prostorové křivky k, Obr Obr. 6.2.

Poruchy modul pro rychlé hlášení poruch z provozu.

ULTRAZVUKOVÝ DÁLKOMĚR

Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49

Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1. Podpora digitalizace a využití ICT na SPŠ CZ.1.07/1.5.00/34.

Zařízení má několik částí.

Podprogram DELAY.INC. - konstanty časových prodlev. RB3 equ 11b DEL1MS: DEL800: DEL400: DEL200 DEL100 DELAY: ret DEL1MS

Mikrořadiče fy ATMEL

Varianty zkouškových testů

DATABÁZE DŮLEŽITÉ: Před načtením nové databáze do vaší databáze si prosím přečtěte následující informace, které vám umožní:

Cílem kapitoly je seznámit studenta se strukturou programu a jeho překladem.

Rostislav Horčík. 13. října 2006

SRF08 ultrazvukový dálkoměr

Komunikační protokol

Vítězslav Bártl. prosinec 2013

Algoritmizace a programování

Pokyny České pošty pro označování Doporučených zásilek čárovými kódy

PROGRAMÁTOR "WinProg-1" Návod k obsluze

(k 1)x k + 1. pro k 1 a x = 0 pro k = 1.

Fyzikální praktikum 3 - úloha 7

Obsah. Úvod 13 Část I: Úvod do MySQL. Část II: Návrh a tvorba databází v MySQL

Modul: Cvičebnice programování ISO - soustruh

Datamax I-Class - stručný návod k použití

LPS2. Sada pro synchronní komunikaci na 1000m s galvanickým oddělením. 15. října 2010 w w w. p a p o u c h. c o m

MCP BIOS řídicí jednotky Kit386EXR

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

POKLADNÍ DISPLEJ LCD. hotline: strana 1

INTELIGENTNÍ DŮM. Zdeněk Kolář, Viktor Daněk. Střední průmyslová škola sdělovací techniky Panská 856/3, Praha 1

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

Zápis dat z dotykového displeje s integrovaným PLC SmartAxis Touch na USB Flash disk a vyčítání dat pomocí softwaru Downloader

2.1. Pojem funkce a její vlastnosti. Reálná funkce f jedné reálné proměnné x je taková

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

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

Mikroprocesory v přístrojové technice

rozlišení obrazovky 1024 x 768 pixelů operační systém Windows 2000, Windows XP, Windows Vista 1 volný sériový port (volitelný) přístup na internet

Číslicové měření kmitočtu

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

MIKROPOČÍTAČOVÉ SYSTÉMY

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Převodníky rozhraní RS-485/422 na optický kabel ELO E243, ELO E244, ELO E245. Uživatelský manuál

Rikomagic MK36S Windows 10

Měření základních vlastností OZ

Předmluva 1 Typografická konvence použitá v knize 2. 1 Úvod do Wordu Popis obrazovky 7 Popis panelu nabídek 9 Zadávání příkazů 10

SCHÉMA PROCESU MTM ÚPRAV V SYSTÉMU INVESMARK FUTURA

Elektrická měření 4: 4/ Osciloskop (blokové schéma, činnost bloků, zobrazení průběhu na stínítku )

PRŮVODCE PRAVIDLY PUBLICITY v projektech spolufinancovaných z Integrovaného operačního programu.

Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY

Matematika 1. ročník. září

1. LINEÁRNÍ APLIKACE OPERAČNÍCH ZESILOVAČŮ

awk programovatelný filtr

Mikromarz. CharGraph. Programovatelný výpočtový měřič fyzikálních veličin. Panel Version. Stručná charakteristika:

Externí zařízení Uživatelská příručka

2.8.8 Kvadratické nerovnice s parametrem

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

Quido USB 0/ Spínač síťového napětí 230 V ovládaný z PC přes USB rozhraní. 28. února 2011 w w w. p a p o u c h. c o m

Vývoj výpočetní techniky. Rozdělení počítačů. Blokové schéma počítače

Rychlé vyrovnávací paměti (cache)

Transkript:

Překladač - Assembler v. 2011 Materiál je určen jako pomocný materiál pouze pro studenty zapsané v předmětu: A3B38MMP a X38MIP, ČVUT- FEL, katedra měření, přednášející Jan Fischer Jan Fischer, 2011 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 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. 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. 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 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 1/ Br start D0 D1 D2 D3 D4 D5 D6 D7 stop 1 0 0 0 1 1 0 0 nastavení prodlevy mezi znaky pro snazší kontrolu osciloskopem, 5 start stop 31 = "1" znak znak znak znak

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,.. 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) 7

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í 8

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, X38MIP, 2011, kat. měření, ČVUT - FEL 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, X38MIP, 2011, kat. měření, ČVUT - FEL B) Program s využitím symbolů a symbolických adres Titlulek: MOV DPTR,# Txt_U ; Vypis uvodniho titulku CALL Sendrss ; volani programu pro vypis textu Start: MOV Pruch, #00 ;vynulovani pocitadla bliknuti Aznovu: SETB LED ; zhasni LED - zapojene proti Ucc CALL Cekej ; cekej CLR LED ; rozsvit LED 10

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 11

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 12

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,..) 13

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í 14

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, X38MIP, 2011, kat. měření, ČVUT - FEL 15

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; 16

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Ě 17

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í 18

; 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 19

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 20

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í 21

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 22

; A3B38MMP, X38MIP, 2011, kat. měření, ČVUT - FEL 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 23

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 ; >=, <=, =, <, > 24

; 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 25

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 26

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 27

; 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? ) 28

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 29

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 30

; 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 31

; 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í... 32

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) 33

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 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 0040 seg_g EQU 01000000B 0080 seg_h EQU 10000000B 89C52 P1 data bus Tl.1 Tl.4 +5V R1 R2 R3 R4 Rk1 Rk8 T1 T2 T3 T4 SA1 SA2 SA3 SA4 8 74HCT573 více k zapojení a ovládání zobrazovače na: http://measure.feld.cvut.cz/groups/edu/pmt/uloha6.html 34

Definice generátoru znaků ; definice generatoru znaku v pozitivni logice, toto je jen priprava 0006 JEDNOTKA EQU seg_b OR seg_c 005B DVOJKA EQU seg_a OR seg_b OR seg_g OR seg_e OR seg_d 004F TROJKA 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 35