Assembler, úloha SW UART

Assembler, úloha SW UART

Překladač - Assembler, úloha SW_ UART

Přednáška 2 - část

A3B38MMP, 2015 kat. měření, ČVUT - FEL, Praha

J. Fischer

A3B38MMP, 2015, 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, 2015, J .Fischer , ČVUT - FEL Praha, kat. měření

2

Úloha – programový UART- zadání

Generovat periodicky na portu P1.4 signál (nebo jiném zvoleném pinu), který odpovídá přenosu ASCII znaků iniciál Vašeho jména při sériovém synchronním přenosu s parametry: 9600 Bd, 1 start bit, 8 datových bitů bez parity, 1 stop bit.

Každý platný datový bit se navíc dle obr.2 v polovině vysílání datového bitu potvrdí spádovou hranou potvrzovacího impulsu Délka impulsu může být 10 až 40 mikrosekund. Pro generaci potvrzovacího impulsu využijte Vámi zvolený pin

AT89C51RC2.

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, 2015, 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

9

10

11

12

13

5

6

7

8

1

2

3

4

14

15

16

17

18

19

20

PDIL

32

31

30

29

28

36

35

34

33

27

26

25

24

23

22

21

40

39

38

37

VCC

A3B38MMP, 2015, J .Fischer , ČVUT - FEL Praha, kat. měření

4

Úloha – programový UART, princip

Asynchronní komunikace, obvykle přenos ASCII znaků

vyslání znaku ´1´ doba = 10 x ( 1 / Br ) , nast. - 8 dat, 1 stop bit

1/ Br

„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žší doba vyslání celého znaku – zde

10 x (1/9600)= 1,04 ms

31 = "1" potvrzovací impulsy

1 0 0 0 1 1 0 0 nastavení prodlevy mezi znaky – pro snazší kontrolu osciloskopem, potvrzovací impulsy znak znak

A3B38MMP, 2015, J .Fischer , ČVUT - FEL Praha, kat. měření 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, 2015, 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

LCALL,…..

RRC

DJNZ

A, Rn adr.16

A

Rn

12 osc.

24 osc.

12 osc

24 osc.

1,085 us

2,17 us

1,085 us

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, 2015, 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 R0,#8 ; pocet bitu k odeslani

SendBit: clr SCLK ; hod. signal do nuly rlc A ; rotovani doleva skrz carry, posouvame A o 1 bit vlevo,

; horni bit jde do carry, spodni je naplnen z carry mov SDATA,C ; nastav vyst. SDATA podle bitu carry - vysli nejvyssi bit setb SCLK ; nastav hodiny - potvrzeni platnych dat, nab. hrana djnz R0,SendBit ; opakuj pro vsech 8 bitu ret

; program vysila plnou rychlosti,

; pro UART, třeba doplnit start a stop bity a cekani, upravit vysilani v poradi od

; LSB

A3B38MMP, 2015, 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, 2015, 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, 2015, 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, 2015, 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, 2015, 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, 2015, 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, 2015, 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, 2015, 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, 2015, 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, 2015, 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, 2015, J .Fischer , ČVUT - FEL Praha, kat. měření

18

0000 7641

0002 9430

0004 908000

A000

0007 90A000

TEST: MOV @ R0, # 'A'

SUBB A, # '0‘

MOV DPTR, # 8000 h

EX_RAM EQU 0A000 h

MOV DPTR, # EX_RAM

TABLE: DB ' Zadej znak ', 0

0099

0020 F599

; SYMBOLY

; Symboly - max. 31 ZNAKU DLOUHE

; symbol začíná znakem 'A' az 'Z', nebo '?'

; TYPY CODE, DATA, BIT TYPELES

SERIAL_BUFFER DATA SBUF ; deklarace

MOV SERIAL_BUFFER, A ; použití

A3B38MMP, 2015, 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, 2015, 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, 2015, 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

FFFF

SYM SET NOT 0000$0000$0000$0001B

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, 2015, 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

0020

; SHR, SHL POSUN DOPRAVA, DOLEVA 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, 2015, 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, 2015, 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, 2015, 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, 2015, 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, 2015, 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, 2015, J .Fischer , ČVUT - FEL Praha, kat. měření

28

; DIREKTIVY PRO PŘIŘAZENÍ JMÉNA SYMBOLU

VYPNUTI BIT

CISLO1 DATA 30h

20h.2 ; definice bit. sym. vypnutí na adr. 20h.2

; 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, 2015, 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

0013 Intr1 code 13h

; adr pro obsluhu přer. čas. T0

; 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, 2015, 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, 2015, 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, 2015, 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, 2015, 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, 2015, 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, 2015, 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

0002 seg_b

0004 seg_c

0008 seg_d

0010 seg_e

0020 seg_f

0040 seg_g

0080 seg_h

EQU 00000001B

EQU 00000010B

EQU 00000100B

EQU 00001000B

EQU 00010000B

EQU 00100000B

EQU 01000000B

EQU 10000000B

89C52

P1 data bus

Tl.1

Tl.4

+5V

R1

T1

R2

R3

R4

T2 T3 T4

SA1 SA2 SA3 SA4

Rk1

74HCT573

Rk8

8 více k zapojení a ovládání zobrazovače na: http://measure.feld.cvut.cz/groups/edu/pmt/uloha6.html

A3B38MMP, 2015, 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

0066 CTYRKA

EQU seg_a OR seg_b OR seg_c OR seg_d OR seg_g

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, 2015, J .Fischer , ČVUT - FEL Praha, kat. měření

37

Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement