Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
MODUL DISPLEJE LTN 211
2
Modul displeje LTN 211 LTN 211 je modul dvouřádkového bodového displeje s kapalnými krystaly Obsahuje zabudovaný mikrořadič HD 4478 a tak tvoří inteligentní zobrazovací jednotku. Součástí mikrořadiče je paměť RAM s kapacitou 40 zobrazovaných znaků pro každý řádek a generátor znaků se 160 pevnými znaky v paměti ROM a osmi uživatelem programovatelnými znaky v paměti RAM.
3
Modul displeje LTN 211 Spolupracuje se 4-bitovými i 8-bitovými procesory Paměť zobrazovaných dat znaků Generátor znaků ROM znaků 5x7 bodů RAM znaků 5x7 bodů Paměť zobrazovaných znaků i uživatelem definovaných znaků lze přečíst nadřazeným procesorem
4
Modul displeje LTN 211 Široký instrukční soubor, např. funkce:
Smazání displeje, funkce home, zapnutí/vypnutí displeje, zapnutí/vypnutí kurzoru, blikání kurzoru, posun kurzoru/textu Vnitřní automatický reset po připojení napájecího napětí.
5
Modul displeje LTN 211 Modul displeje je k mikroprocesoru 68 HC11 připojen datovou sběrnicí DO - D7 a řídicími signály E, RS a R/W. Výběrový signál E je generován adresovým dekodérem: signál výběru registru RS přísluší nejnižšímu bitu adresy a signál zápis/čtení R/W je dostupný přímo z mikroprocesoru. Displej je umístěn na adrese $8000 (řídicí registr) a $8001 (datový registr)
6
Inicializace displeje
Displej se automaticky inicializuje po připojení napájecího napětí vnitřním obvodem pro reset. Po resetu se provedou následující instrukce: Smazání displeje Nastavení konfigurace:
7
Inicializace displeje
DL šířka datové sběrnice 8 bitů D vypnutý displej C vypnutý kurzor B vypnuté blikání I/D automatická inkrementace adresy při zápisu S odsouvání textu z naplněného displeje vypnuto Naplnění paměti pro zobrazované znaky hodnotou $00
8
Inicializace displeje
Po dobu automatické inicializace displeje je nastaven příznak vnitřního zpracování (BF = 1). Doba inicializace je asi 10 ms od dosažení úrovně napájecího napětí 4,5 V.
9
Instrukce pro ovládání displeje
Nadřazený procesor může přímo ovládat pouze dva registry mikrořadiče displeje (tj. instrukční registr IR a datový registr DR) a to pouze v době, kdy mikrořadič displeje není zaměstnán vnitřním zpracováním informace. Před každým započetím vnitřní operace mikrořadiče je do těchto registrů zapsána stavová informace. Operace mikrořadiče jsou ovládány signály DO-D7, RS a RW. Tyto signály jsou nadále nazývány instrukcemi.
10
Instrukce lze rozdělit na:
Instrukce pro nastavení pracovního režimu Instrukce pro nastavení adresy interní paměti RWM Instrukce pro přenos zobrazovaných dat do/z interní paměti RWM
11
Popis jednotlivých instrukcí
Smazání displeje R R D D S W Kód: Náplní paměť pro zobrazovaný text kódem mezery ($20). Vynuluje adresový čítač, tj. nastaví kurzor na pozici prvního znaku na prvním řádku. Nastaví režim inkrementace adresového čítače (1/D = 1), režim posunu textu (S) se nemění.
12
Kurzor na počátek R D S W 7 Kód: 1 * Vynuluje adresový čítač, tj. nastaví kurzor na pozici prvního znaku na prvním řádku. Data v paměti zobrazovaného textu zůstávají nezměněna.
13
Vstupní režim Definuje chování displeje při zápisu a čtení dat. R D S
W 7 Kód: 1 I/D Definuje chování displeje při zápisu a čtení dat.
14
Vstupní režim I/D - Při zápisu nebo čtení dat se zvyšuje (I/D = 1) nebo snižuje (I/D = 0) adresa v adresovém čítači o 1. Kurzor se přitom pohybuje doprava (I/D = 1) nebo doleva (I/D = 0). K nastavené změně adresy dochází i při zápisu či čtení do/z paměti generátoru znaků. S Odsouvání textu. Při S = 1 se zobrazovaný text při zápisu do paměti RAM posouvá po displeji. Vypadá to jako by kurzor stál na místě a text se odsouval doprava nebo doleva v závislosti na I/D. Při čtení z paměti se text nepohybuje.
15
Režim displeje Nastavuje zobrazovací režim, zapíná a vypíná displej. R
W 7 Kód: C B Nastavuje zobrazovací režim, zapíná a vypíná displej.
16
Režim displeje D - Zapnutí a vypnutí displeje. Pro D = 1 je displej zapnut. Po vypnutí displeje (D = 0) zůstávají zobrazovaná data v paměti a jsou opět zobrazena ihned po zapnutí displeje (D = 1). C - Zobrazení kurzoru. Kurzor je zobrazen jako podtržítko na osmém řádku matice znaku. Pozice kurzoru odpovídá obsahu adresového čítače. B - Blikání znaku. Je-li B = 1 znak na pozici kurzoru bliká. Blikání je provedeno záměnou zobrazovaného znaku a plného obdélníčku (znak FF hex, viz. Tabulku v příloze D) v taktu 2.5 Hz.
17
Posun kurzoru nebo textu
D S W 7 Kód: 1 S/C R/L * - libovolná hodnota.
18
Posun kurzoru nebo textu
Posunuje kurzor (S/C = 0) nebo text (S/C = 1) doprava (R/L = 1) nebo do leva (R/L = 0) bez zápisu nebo čtení zobrazovaných dat. Funkce je použitelná pro opravy a prohlížení zobrazovaného textu. Po přechodu za 40 znak prvního řádku kurzor přejde na řádek druhý. Při posunu textu se posunují oba řádky zároveň. Text se pohybuje pouze vodorovně, tzn., že text na druhém řádku se nemůže posunout na řádek první. Při posunu textu se nemění obsah adresového čítače.
19
Funkční soubor R D S W 7 Kód: 1 DL * - libovolná hodnota .
20
Funkční soubor Nastavení délky instrukcí. Pro osmibitové instrukce je DL = 1, pro čtyřbitové je DL = 0. Upozornění: Pro správnou součinnost modulu displeje s mikroprocesorem 68HC11 je třeba dodržet nastavení DL = 1.
21
Nastavení adresy v paměti RWM u generátoru znaků
7 Kód: 1 a Vyšší bity adresy Nastaví binární adresu „aaaaaa“ do adresového čítače. Po této instrukci je možné zapisovat nebo číst data definice uživatelsky programovaných znaků.
22
Nastavení adresy v paměti zobrazovaného textu
W 7 Kód: 1 a Vyšší bity adresy Nastavení binární adresy „aaaaaaa“ do adresového čítače. Slouží k nastavení místa kam se mají zapisovat nebo odkud se mají číst zobrazovaná data. Prvnímu řádku odpovídají hexadecimálně adresy $00 - $27, druhému $40 - $67.
23
Čtení příznaku obsazení a adresy
W 7 Kód: BF a Vyšší bity adresy
24
Čtení příznaku obsazení a adresy
Přečtěte aktuální stav mikrořadiče displeje. Hodnota příznaku obsazení BF ukazuje stav mikrořadiče. Je-li BF = 1 mikrořadič provádí interní operace a nemůže přijmout žádnou instrukci (kromě opětovného čtení řídicího registru).
25
Čtení příznaku obsazení a adresy
Hodnotu BF je třeba kontrolovat před každou novou instrukcí pro displej a případně vyčkat na dokončení provedení předcházející instrukce. Současně s příznakem obsazení je přečten také aktuální stav adresového čítače (bity „aaaaaaa“).
26
Zápis dat do paměti textu a generátoru znaků
W 7 Kód: 1 d Vyšší bity adresy
27
Zápis dat do paměti textu a generátoru znaků
Zapíše data „ddddddd“ na adresu, která se právě nachází v adresovém čítači. Adresa v čítači závisí na provedení předcházejících instrukcí (nastavení adresy), posun kurzoru, příp. zápis nebo čtení paměti). Po zápisu se automaticky zvýší nebo sníží adresa v adresovém čítači o 1 a případně dojde k posunu zobrazeného textu v závislosti na nastaveném vstupním režimu displeje.
28
Čtení dat z paměti textu nebo generátoru znaků
S W 7 Kód: 1 d Vyšší bity adresy
29
Čtení dat z paměti textu nebo generátoru znaků
Přečtěte data „ddddddd“ z paměti zobrazovaného textu nebo generátoru znaků. Před čtením dat je třeba nastavit adresu v adresovém čítači instrukcemi nastavení adresy příp. posun kurzoru.
30
Čtení dat z paměti textu nebo generátoru znaků
Bez tohoto nastavení jsou první přečtená data chybná. Při čtení bloku paměti stačí nastavit adresu bloku před prvním čtením. Adresa v čítači se po každém čtení automaticky zvyšuje či snižuje (podle nastaveného vstupního režimu) a čtená data jsou platná.
31
PŘÍKLADY KOMUNIKACE MEZI 68HC11 A DISPLEJEM
Zadání instrukce návrat na počátek (home) 1daa #$02 uložení hodnoty $ bin do akumulátoru A staa $8000 zapsání této hodnoty do řídicího registru displeje Přečtení BF a adresy v čítači 1 daa $8000 přečtení obsahu řídicího registru
32
PŘÍKLADY KOMUNIKACE MEZI 68HC11 A DISPLEJEM
Přečtení dat z 2., pozice na prvním řádku 1daa $#81 nastavení adresy #$ tj. 2. pozice prvního staa #$8000 řádku Loop 1daa #$8000 načtení BF a adresy bita #$80 test BF bne loop je-li BF = 1, čekej 1daa #$8001 přečtení dat.
33
PAMĚŤOVÝ PROSTOR DISPLEJE
Pro uložení kódu zobrazovaných znaků je celkem k dispozici 2x40 paměťových míst, z nichž může být vždy jen 2x16 znaků průběžně zobrazeno. Toto zobrazovací okénko lze přesouvat změnou vnitřní adresy nebo posunem kurzoru. Běžně zobrazitelné znaky jsou v této paměti reprezentovány svými ekvivalenty v kódu ASCII.
34
Generátor znaků Znakový generátor vytváří obrazce 5x7 bodů odpovídající kódům znaků. Kódy $00 až $07 osmi uživatelsky programovatelným znakům.
35
Generátor znaků Vztah mezi kódem programovatelného znaku jeho uložením v paměti generátoru znaků ukazuje tab. Naprogramování jednoho znaku sestává z nastavení inkrementálního vstupního režimu nastavení počáteční adresy umístění znaku a zapsání osmi hodnot do datového registru (inkrementace adresového čítače se děje automaticky).
36
Mapa paměťového prostoru pro uložení zobrazovaných kódů:
1 2 3 4 5 pozice na displ. 1. řádek 00 01 02 03 04 25 26 27 adresa v paměti 2. řádek 40 41 42 43 44 65 66 67 (hexadecimálně)
38
POPIS OVLADAČE DISPLEJE
Ovladač displeje je tvořen souborem podprogramů, které vykonávají nejběžnější příkazové sekvence, jako je inicializace, smazání, zobrazení daného znaku nebo textu na displeji apod. Ovladač se standardně ukládá od adresy $D000, ale je možné jej uložit na libovolné místo v paměti přepsáním hodnoty DSTART.
39
Podprogramy ovladače:
dinit - inicializace displeje Parametry : žádné Návratové hodnoty: žádné Podprogram provede softwarovou inicializaci displeje, nastaví jeho režim na D/I = 1, S = 0, D = 1, C = 0, B = 0, naprogramuje znaky ý (kód $01), ř(kód $02), č(kód $03), zobrazí inicializační text: Mikroprocesorový řadič MS11 Mesit a vyčká dokončení všech vnitřních operací displeje (včetně inkrementace adresového čítače.
40
Podprogramy ovladače:
dels - smazání displeje Parametry: žádné Návratové hodnoty: žádné Smaže displej, umístí kurzor na začátek 1. řádku, v adresovém čítači nastaví odpovídající adresu ( ) a vyčká dokončení vnitřních operací displeje.
41
Podprogramy ovladače:
dline1- umístění kurzoru na začátek 1. řádku Parametry: žádné Návratové hodnoty: A - obsah adresového čítače ($00) Umístí kurzor na začátek 1. Řádku bez změny v paměti zobrazeného textu. Nastaví odpovídající adresu v adresovém čítači ($00) a vyčká dokončení vnitřních operací displeje. V akumulátoru A vrátí obsah adresového čítače.
42
Podprogramy ovladače:
dline2 - umístění kurzoru na začátek 2. řádku Parametry: žádné Návratové hodnoty: A - obsah adr. čítače ($40) Umístí kurzor na začátek 2. Řádku bez změny v paměti zobrazovaného textu. Nastaví odpovídající adresu v adresovém čítači ($40) a vyčká dokončení vnitřních operací displeje. V akumulátoru A vrátí obsah adresového čítače.
43
Podprogramy ovladače:
Dprog - naprogramování uživatelského znaku Parametry: A - kód znaku IY - adresa definice znaku Návratové hodnoty: A - obsah adr. čítače před voláním podprogramu
44
Dprog Naprogramuje do paměti RWM generátoru znaků jeden znak a vyčká dokončení vnitřních operací displeje. V akumulátoru A očekává kód pod kterým bude znak uložen (0-7) a v registru IY adresu začátku definice znaku. Definice znaku odpovídá obrazci znaku v tab. Podprogram nezmění obsah adresového čítače, tedy ani pozici kurzoru. Obsah adresového čítače vrátí v akumulátoru A.
45
Podprogramy ovladače:
Douta - zobrazení znaku na pozici kurzoru Parametry: A - kód zobrazovaného znaku Návratové hodnoty:A - obsah adresového čítače Zobrazí znak, jehož kód je v akumulátoru A na pozici kurzoru. Následný pohyb kurzoru nebo textu závisí na vstupním režimu displeje. Vyčká dokončení vnitřních operací a v akumulátoru A vrátí nový obsah adresového čítače.
46
Podprogramy ovladače:
dtext - zobrazí řetězec znaků Parametry: A - kód znaku IY - adresa textu Návratové hodnoty: A - obsah adresového čítače
47
Dtext Zobrazí řetězec znaků ukončený nulovým bajtem, jehož adresa je v registru IY. Toto zobrazení provede na řádku, jehož kód je v akumulátoru A(DLN1),DLN2). Vyčká dokončení vnitřních operací displeje a v akumulátoru A vrátí obsah adresového čítače. Pokud chceme řetězec zobrazit jinde než od začátku řádku, je možné do akumulátoru A místo konstanty DLN1 nebo DLN2 umístit instrukci nastavení adresy v paměti textu s adresou odpovídající pozici, na které chceme text zobrazit.
48
Podprogramy ovladače:
Tertext - přečtení obsahu paměti textu a jeho zobrazení na terminálu Parametry: žádné Návratové hodnoty: žádné
49
Tertext Přečte obsah paměti textu a vyšle jej na terminál.
Ve standardním provedení program vyžaduje, aby byl spuštěn pod monitorem M-Buffalo, ve kterém je podprogram outa, vysílající znak v akumulátoru A na terminál. Pokud program není spuštěn pod monitorem M-Buffalo nebo potřebujeme znaky čtené z displeje zpracovat jiným způsobem, stačí přepsat volání podprogramu outa voláním vlastního podprogramu. Přečtený znak je předáván v akumulátoru A.
50
Podprogramy ovladače:
bftext - vyčkání na dokončení vnitřních operací Parametry: žádné Návratové hodnoty:A - obsah adresového čítače Testuje příznak BF a čeká na jeho vynulování. V akumulátoru A vrátí obsah adresového čítače.
51
Podprogramy ovladače:
dawait - čekání 6s Parametry: žádné Návratové hodnoty: žádné Čekací smyčka o délce 6s. Využívá se k čekání na inkrementaci adresového čítače.
52
PROGRAMOVÁNÍ 68HC11 V ASSEMBLERU
překládá (transformuje) data nebo adresy z různých číselných soustav (např. z desítkové, osmičkové, šestnáctkové) do dvojkové a překládá i znaky do odpovídajících kódů ASCII, umožňuje programátorovi, aby rezervoval a přiděloval paměť dočasné uchování dat,
53
PROGRAMOVÁNÍ 68HC11 V ASSEMBLERU
umožňuje programátorovi uložit konstanty na určeném místě v paměti, umožňuje programátorovi přiřadit symbolická jména paměťovým místům a vstupně-výstupním registrům, umí vykonat některé aritmetické operace jako součást procesu překladu, informuje programátora o formálních chybách v programu.
54
PROGRAMOVÁNÍ 68HC11 V ASSEMBLERU
Zdrojové programy pro překladač (assembler) se zapisují v jazyce symbolických adres (instrukcí), který se také v praxi nazývá assembler. Zdrojový jazyk připouští použití množiny znaků, které assembler umí rozpoznat:
55
PROGRAMOVÁNÍ 68HC11 V ASSEMBLERU
písmena anglické abecedy, číslice 0 až 9, znaky používané jako speciální prefixy: # určuje bezprostřední adresování $ určuje šestnáctkové (hexadecimální) číslo % určuje dvojkové číslo, ‘ (apostrof) určuje znak ASCII,
56
PROGRAMOVÁNÍ 68HC11 V ASSEMBLERU
speciální znaky aritmetických operací: +,-, *,/, čtyři speciální znaky jako oddělovače: mezera horizontální posuv (TAB) CR(Carriage Return) - konec řádku, , (čárka), komentář ve zdrojovém řádku, který může obsahovat znaky ASCII, se ale nepřekládá.
57
PROGRAMOVÁNÍ 68HC11 V ASSEMBLERU
Zdrojový program, který vytváříme textovým editorem, se skládá z posloupnosti zdrojových řádků. Zdrojový řádek lze zpravidla rozdělit do čtyř polí např. v následujícím uspořádání:
58
Uspořádání Komentář Operand
Mnemonické označení instrukce nebo direktiva Komentář Operand Návěští, může se v programu dále používat jako adresový operand START LDAA # $FF Naplnění registru A jedničkami
59
PROGRAMOVÁNÍ 68HC11 V ASSEMBLERU
Protože návěští určuje adresu instrukce, není dovolena dvojznačnost ve specifikaci hodnoty návěští, např.: START LDAA # $ 45 ADDA NUMBER START STAA PLACE . JMP START
60
PROGRAMOVÁNÍ 68HC11 V ASSEMBLERU
Je však dovoleno víckrát se na návěští odvolávat: START LDAA $ 45 ADDA NUMBER STAA PLACE . JMP START BNE START
61
PROGRAMOVÁNÍ 68HC11 V ASSEMBLERU
Symbolická jména PLACE a NUMBER musí být v programu definována pomocí direktiv. Direktivy jsou pseudoinstrukce pro přiřazení symbolických názvů číselným hodnotám adres nebo dat, jako je např. instrukce EQU uvedená dále. Pole komentářů následuje za polem operandů a je oddělené jednou nebo více mezerami. I celý zdrojový řádek může být komentářem, jestliže znak na první pozici je *. Znak * může taky posloužit k naprogramování skoku zpět na stejnou instrukci např. místo:
62
PROGRAMOVÁNÍ 68HC11 V ASSEMBLERU
Asembler umožňuje ve zdrojovém programu používat příkazy, které se vztahují na řízení vlastního překladače (assembleru). Při překladu se těmto mnemonickým příkazům nepřiřazují žádné strojové kódy. Takovéto instrukce se nazývají pseudo-instrukce nebo direktivy.
63
PROGRAMOVÁNÍ 68HC11 V ASSEMBLERU
Programy a data se mohou ukládat v různých oblastech paměti v závislosti na organizaci adresovatelného prostoru. Direktiva ORG, která se zpravidla uvádí na začátku zdrojového programu, slouží k určení počátečního místa programu a dat v paměti.
64
Příklad ORG $ 100 Určení počáteční adresy cílového programu v paměti mikrořadiče LDAA #$ 5 Naplnění akumulátoru A hodnotou #$ C5. LDAA $ C5 Naplnění akumulátoru A hodnotou, která je uložena na adrese $00C5.
65
Uložení těchto instrukcí do paměti je následující:
Adresa paměťového místa: Obsah paměťového místa $0100 $86 LDAA #SC5 $0101 $C5 $0102 $96 LDAA $CS $0103
66
FCB Direktiva FCB (Form Constant Byte) má jeden nebo víc operandů oddělených čárkami. Direktiva FCB přiděluje určeným paměťovým buňkám daný obsah specifikovaný v poli operandu.
67
Příklad ORG $200 DATA FCB $10, $20, $30, 16 Uložení do paměti:
Adresa paměťového místa Obsah paměťového místa: $ $10 $ $20 $ $30 $ $10 V programu pak můžeme dále psát: LDAA DATA+1 Do A dej hodnotu z adresy $0201, tj. $20 LDX #DATA Do IX dej adresu $0200.
68
FDB Direktiva FDB (Form Constant Double Byte) přiděluje určeným dvojicím paměťových buněk 16-bitové hodnoty. Např. ORG $300 TABLE FDB $AFFF, %
69
Uložení do paměti: $0300 $AF $0301 $FF $0302 $OF $0303 $FO
Adresa paměťového místa Obsah paměťového místa $ $AF $ $FF $ $OF $ $FO
70
V programu pak můžeme psát:
LDX TABLE Do IX ulož hodnotu z adres $0300 a $0301 tj.$AFFF LDY #TABLE Do IY ulož adresu $0300. Direktiva FDB (Form Constant Double Byte) vloží do paměťových buněk kódy určených ekvivalentů ASCII. Například programový úsek: ORG $400 TABLE FCC ‘TEXT’
71
Uložení do paměti: $0400 $54 $0401 $45 $0402 $58 $0403 $54
Adresa paměťového místa Obsah paměťového místa $ $54 $ $45 $ $58 $ $54
72
RMB Direktiva RMB (Reserve Memory Bite) se používá pro rezervaci místa v paměti. Například: ORG $2000 DATA RMB 10
73
RMB Na adrese $2000 se vyhradí 10 paměťových buněk, na které je možné se odvolávat návěštím DATA, např.: STA DATA+5 Na adresu $2005 se uloží obsah akum. A
74
EQU Direktiva EQU (Equate Symbol Value) slouží na přiřazení hodnoty symbolu, který se může objevit v programu na více místech. Symbol, kterému se přiřazuje hodnota, se uvádí v poli návěští. Například: PORTC EQU $1003
75
EQU Symbolu PORTC je přiřazena hodnota $1003, takže např. instrukce
LDAA PORTC naplní akumulátor A obsahem z paměťové buňky (portu C) na adrese $1003. Použitím pseudoinstrukce EQU se zvyšuje srozumitelnost programu. Např. čekání, dokud na nultém výstupu portu B nebude log. 1 naprogramujeme následovně:
76
EQU REGPOLE EQU $1000 Počátek reg. pole
PORTB EQU $04 Registr PORTB v reg. poli Vystup_PBO EQU $01 Nultý výstup portu B . LDY REGPOLE Do IY hodnota $1000 BRCLR PORTB, y Vystup_PBO * Čekací smyčka.
77
Překlad 68HC11 Na překlad zdrojových programů pro 68HC11 na osobních počítačích XT/AT jsou dostupné jako freeware od firmy Motorola asemblery.
78
Asembler Program as11.exe, jehož příkazový řádek může být např. ve tvaru: AS11 program.asm - 1 c s > program. lst Zdrojový soubor soubor protokolu o překladu (listing file)
79
Asembler Tento assembler generuje soubor pod jménem „program.s19“.
Je v něm tzv. záznam typu S strojového kódu, v němž je uložen jak vlastní strojový kód, tak i pomocné kódy, jež umožňují určeným pomocným programem (např. monitorem M-Buffalo) načtení strojového kódu do paměťového systému mikrořadiče .
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.