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.
A3B38MMP, 2014, J .Fischer , ČVUT - FEL Praha, kat. měření
1 2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 9 P3.0/RxD 10 P3.1/TxD 11 12 P3.2/INT0 P3.3/INT1 13 14 15 16 17 18 19 VSS 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
nastavení prodlevy mezi znaky – pro snazší kontrolu osciloskopem,
potvrzovací impulsy
A3B38MMP, 2014, J .Fischer , ČVUT - FEL Praha, kat. měření
znak
znak
stop
start
vyslání znaku ´1´ doba = 10 x ( 1 / Br ) , nast. - 8 dat, 1 stop bit Asynchronní komunikace, obvykle 1/ Br přenos ASCII znaků „A“ = 41h, „B“=42h „1“= 31h, „2“ = 32h start D0 D1 D2 D3 D4 D5 D6 D7 stop 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žší 1 0 0 0 1 1 0 0 31 = "1" doba vyslání celého znaku – zde potvrzovací 10 x (1/9600)= 1,04 ms impulsy
znak
znak
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 SCLK
equ equ
P1.5 P1.6
; datovy signal, na DATA vstup pos. registru ; hod. signal ; znak je predan v akumulatoru
mov R0,#8 SendBit: clr SCLK rlc A
; pocet bitu k odeslani ; hod. signal do nuly ; 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
mov setb djnz ret ; 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
Titlulek: MOV DPTR,# Txt_U ; Vypis uvodniho titulku
DPTR, 01C4h ; 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 ; cekej CALL 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 ; HEX
vyhodnocují se 16 -bitově H, h 1234h , 99H, 0A0F0H, 0FFH
; DEC D, d , 1234, 65590D, 20d, 123
Hexadecimální Dekadické
; OKTAL. 177O, 7777o, 25O, 123o, 177777O Oktalové ; BIN B, b 111B, 10011 ; 1111$0000$1010$0011B
Binární 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 TABLE:
MOV DPTR, # EX_RAM DB ' Zadej znak ', 0
; SYMBOLY ; Symboly - max. 31 ZNAKU DLOUHE ; symbol začíná znakem 'A' az 'Z', nebo '?' ; TYPY 0099 0020 F599
CODE, DATA, BIT TYPELES
SERIAL_BUFFER DATA SBUF ; deklarace 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:
0070 53454E49 00 0008 LEN
DB LEN,'HLASENI',0
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) ; DW VYRAZ [,VYRAZ,..] SLOVA v paměti CODE BSEG ; DBIT vyraz ( počet míst pro bitové proměnné) bseg at 20h.0 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 CISLO1 DATA CISLO2 DATA
BIT 30h 34h
20h.2 ; definice bit. sym. vypnutí na adr. 20h.2 ; definice datového symbolu CISLO1 ; (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 0003 000B 0013 0030 0000 802E 0003 B295 0005 32 000B B295 000D 32 0013 B295 0015 32
RESET code 0000 ; reset - začátek prog. pro resetu Intr0 code 03 ; adr pro obsluhu přer. INT0 IntrTF0 code 0bh ; adr pro obsluhu přer. čas. T0 Intr1 code 13h ; adr pro obsluhu přer. INT1 pos_zac equ 30h ; posun začátku programu CSEG at Reset JMP reset + Pos_zac CSEG at Intr0 CPL P1.5 RETI CSEG at IntrTF0 CPL P1.5 RETI CSEG at Intr1 CPL P1.5 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
0A003h …. 0A023h
CSEG at A003h LJMP obsluha_INT0 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 0000 74FF
1 2 3
konst set -1 mov a, #konst 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 0002 0004 0008 0010 0020 0040 0080
seg_a seg_b seg_c seg_d seg_e seg_f seg_g seg_h
EQU 00000001B EQU 00000010B EQU 00000100B EQU 00001000B EQU 00010000B EQU 00100000B EQU 01000000B EQU 10000000B
T1
T2
T3
T4
SA1
SA2
SA3
SA4
+5V
89C52 Tl.1
R1 R2 R3
P1 R4 Tl.4 data bus Rk1
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 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
A3B38MMP, 2014, J .Fischer , ČVUT - FEL Praha, kat. měření
37