programowanie st7 2011 03 14 id Nieznany

background image

Politechnika Wrocławska

Mikrokontrolery rodziny ST7

Jarosław Emilianowicz

Wrocław 2011

background image

2 |

Strona

Mikrokontrolery rodziny ST7

J. Emilianowicz

S

PIS TREŚCI

A

SEMBLER

........................................................................ 3

Etykiety, rozkazy i komentarze ............................................................ 3

Pierwszy program .............................................................................. 4

Formatka .......................................................................................... 5

ST

V

ISUAL

D

EVELOP

.......................................................... 6

Konfiguracja przestrzeni roboczej ......................................................... 6

Konfiguracja projektu ......................................................................... 7

Kompilacja projektu ........................................................................... 9

Uruchamianie projektu ..................................................................... 11

S

CHEMATY BLOKOWE

........................................................ 13

Symbole schematów blokowych ......................................................... 13

Przykładowy algorytm ...................................................................... 14

M

IKROKONTROLER

ST72334 ............................................ 16

Charakterystyka .............................................................................. 16

Opis wyprowadzeń ........................................................................... 17

P

AMIĘĆ

......................................................................... 19

Rezerwacja zmiennych ..................................................................... 19

Inicjalizacja stałych .......................................................................... 19

Przypisanie wartości ......................................................................... 20

S

TEROWANIE PROGRAMEM

................................................. 21

Skoki i wywołania bezwarunkowe ....................................................... 21

Testowanie bitów i skoki warunkowe .................................................. 21

background image

Strona

| 3

J. Emilianowicz

Mikrokontrolery rodziny ST7

A

SEMBLER

Etykiety,
rozkazy
i komentarze

Język mnemoniczny jest łącznikiem pomiędzy maszynami, których język jest
wyłącznie numeryczny, a ludźmi, którym wygodniej jest używać znaków i słów.
Język mnemoniczny jest łatwo tłumaczony na język maszynowy, bo charakteryzuje
go zależność słowo-na-słowo, pomiędzy językiem numerycznym a językiem
słownym, mnemonicznym. Język mnemoniczny jest także nazywany asemblerem, a
program tłumaczący na język maszynowy Asemblerem.

Linia programu źródłowego składa się z czterech elementów:

-

etykiety,

-

mnemonika rozkazu lub dyrektywy asemblera oraz linkera

-

operanda (liczby, rejestru), gdzie liczba operandów zależy od użytego
rozkazu

-

komentarza (zawsze rozpoczynającego się od średnika)


dzielenie sub A,#$22 ; dzielenie akumulatora przez warto

ść

$22

Etykiety powinny rozpoczynać się od samego boku dokumentu, natomiast rozkazy
wraz z operandami powinny być odsunięte przynajmniej o jedną spację.


dzielenie
sub A,#$30 ; dzielenie akumulatora przez warto

ść

$30

sub A,#$22 ; dzielenie akumulatora przez warto

ść

$22

Etykiety są symbolicznymi adresami i wskazują miejsca w programie, do którego
mogą następować skoki. Oznaczają też wyraźnie wybrany blok rozkazów, przez co
zwiększa się czytelność pliku. Muszą zaczynać się od kropki i od lewego marginesu
oraz nie mogą zawierać znaków spacji.

Lista mnemoników jest definiowana przez producenta mikrokontrolera. Zawiera ona
listę kodów specyficznych dla danego modelu mikrokontrolera. Rozkazy są
powiązane z funkcją instrukcji. Część z nich jest dokładną nazwą instrukcji, np.

ADD

(add), część skrótem, jak

SUB

(substract), a inne akronimen, jak

TNZ

(Test for

Negative or Zero).

Liczby mogą być zapisane w jednym z powszechnie stosowanych formatów,
przedstawionych w tabeli poniżej. W środowisku ST Visual Develop domyślnym
formatem jest format Motoroli.

Zapis

Motorola

Intel

Texas

Zilog

Dwójkowo

%01010000

01010000b

?01010000

%(2)01010000

Ósemkowo

~7

7o

~7

%(8)7

Dziesiętnie

10

10

lub

10d

10

10

Szesnastkowo

$FF

0FFh

>FFh

%FF

Komentarze są poprzedzone średnikiem i mogą znajdować się w dowolnej
kolumnie. Nie są one przetwarzane przez asembler, a pozwalają utrzymać
czytelność pliku źródłowego i zrozumiałość, przy próbie jego analizy w przyszłości.

background image

4 |

Strona

Mikrokontrolery rodziny ST7

J. Emilianowicz

Pierwszy
program

Wszystkie pliki przetwarzane przez asembler muszą rozpoczynać się instrukcją

ST7/

, umieszczoną w pierwszej kolumnie pierwszego wiersza, co wskazuje

asemblerowi, że asemblujemy plik dla procesorów rodziny ST7, a kończyć
instrukcją

END

. Pominięcie instrukcji

END

będzie sygnalizowane jako błąd. Dla

pewności, że ostatnia instrukcja nie zostanie pominięta podczas asemblacji, należy
potwierdzić koniec linii znakiem ENTER by kursor przeszedł do następnej linii.


ST7/

...

END

Właściwy program powinien zostać umieszczony we właściwym segmencie

ROM

,

zacząć się od etykiety (np.

MAIN)

i posiadać rozkaz resetujący wskaźnik stosu

RST

.

Ponadto powinien być zakończony ponownym skokiem na początek programu lub
niekończącą się pętlą, by uniemożliwić wykonywanie niechcianego kodu, który
może znajdować się w dalszej części pamięci programu.


...

segment ‘rom’

main
rsp ; reset wska

ź

nika stosu


infinite_loop
jp infinite_loop ; nieko

ń

cz

ą

ca si

ę

p

ę

tla


...

Kompilacja tak opracowanego programu przebiegnie poprawnie, jednakże próba
symulacji zakończy się niepowodzeniem, ponieważ procesor nie będzie potrafił
odnaleźć początek programu w pamięci. W tym celu należy dołożyć wektor
przerwań i w przerwaniu o najwyższy priorytecie wskazać etykietę

MAIN

.


...

NonHandledInterrupt
iret ; powrót z przerwa

ń

nieobsługiwanych


segment 'vectit'

dc.w NonHandledInterrupt

; irq13

dc.w NonHandledInterrupt

; irq12

dc.w NonHandledInterrupt

; irq11_eeprom

dc.w NonHandledInterrupt

; irq10_sci

dc.w NonHandledInterrupt

; irq9_timb

dc.w NonHandledInterrupt

; irq8_tima

dc.w NonHandledInterrupt

; irq7_spi

dc.w NonHandledInterrupt

; irq6

dc.w NonHandledInterrupt

; irq5_ext3

background image

Strona

| 5

J. Emilianowicz

Mikrokontrolery rodziny ST7

dc.w NonHandledInterrupt

; irq4_ext2

dc.w NonHandledInterrupt

; irq3_ext1

dc.w NonHandledInterrupt

; irq2_ext0

dc.w NonHandledInterrupt

; irq1_mcc

dc.w NonHandledInterrupt

; irq0

dc.w NonHandledInterrupt

; trap

dc.w main

; reset


END

Formatka

śeby pierwszy program był w całości gotowy, potrzebne są także dodatkowe
odwołania do plików z definicjami, charakterystycznymi dla całej rodziny
mikrokontrolerów ST7 oraz dla ST72334N2 wykorzystywanego w makiecie
uruchomieniowej.


ST7/

#include "mapping.inc"
#include "ST72334N2.inc"

segment ‘rom’

main
rsp ; reset wska

ź

nika stosu


; tutaj wła

ś

ciwy program


infinite_loop
jp infinite_loop ; nieko

ń

cz

ą

ca si

ę

p

ę

tla


NonHandledInterrupt
iret ; powrót z przerwa

ń

nieobsługiwanych


segment 'vectit'

dc.w NonHandledInterrupt

; irq13

dc.w NonHandledInterrupt

; irq12

dc.w NonHandledInterrupt

; irq11_eeprom

dc.w NonHandledInterrupt

; irq10_sci

dc.w NonHandledInterrupt

; irq9_timb

dc.w NonHandledInterrupt

; irq8_tima

dc.w NonHandledInterrupt

; irq7_spi

dc.w NonHandledInterrupt

; irq6

dc.w NonHandledInterrupt

; irq5_ext3

dc.w NonHandledInterrupt

; irq4_ext2

dc.w NonHandledInterrupt

; irq3_ext1

dc.w NonHandledInterrupt

; irq2_ext0

dc.w NonHandledInterrupt

; irq1_mcc

dc.w NonHandledInterrupt

; irq0

dc.w NonHandledInterrupt

; trap

dc.w main

; reset


END

background image

6 |

Strona

Mikrokontrolery rodziny ST7

J. Emilianowicz

ST

V

ISUAL

D

EVELOP

Oprogramowanie

ST

Visual

Develop

umożliwia

symulowanie

pracy

mikrokontrolerów rodziny ST7, ale także ich sprzętowe emulowanie przy współpracy
z emulatorem DVP2, dostępnym w laboratorium C5 705. Oprogramowanie jest
dostępne do pobrania na stronie producenta (www.st.com) pod nazwą ST Toolset.
Program instalacyjny instaluje oprócz ST Visual Develop także ST Visual
Programmer.

W lewej części aplikacji jest okno z przestrzenią roboczą, gdzie będą widoczne w
postaci rozwijanego drzewa wszystkie projekty. W prawej części aplikacji będzie
wyświetlana zawartość plików. Natomiast u dołu będą wyświetlane komunikaty
kompilacji i debugowania.

Konfiguracja
przestrzeni
roboczej

Prace z oprogramowaniem ST Visual Develop rozpoczyna sie od utworzenia
przestrzeni roboczej (Workspace), a następnie poprzez dodanie kolejnych
projektów, które będą widoczne w postaci drzewa. Do katalogu, w którym będą
przechowywane pliki przestrzeni roboczej warto przekopiować z katalogu aplikacji
ST Toolset pliki st72334n2.asm oraz st72334n2.inc.

background image

Strona

| 7

J. Emilianowicz

Mikrokontrolery rodziny ST7

Nową przestrzeń roboczą tworzy sie wybierając w menu File - New Workspace,
następnie Create an empty workspace. W okienku należy wypełnić obydwa
dostępne pola.

1.

W pierwszym polu Workspace filename wprowadzić nazwę przestrzeni
roboczej, np. st7.

2.

W drugim polu Workspace location podać ścieżkę dostępu do katalogu
przestrzeni roboczej, np. C:/ST7/.

Po poprawnym skonfigurowaniu po lewej stronie aplikacji pojawi sie nazwa
przestrzeni roboczej wraz z rozszerzeniem stw.

Konfiguracja
projektu

Nowy projekt do istniejącej juz przestrzeni roboczej dodamy poprzez Project - Add
New Project to Workspace.... Pojawi sie okienko, w którym wypełniamy trzy
pierwsze pola z czterech dostępnych.

1.

W pierwszym polu Project filename wprowadzamy nazwę projektu. Nazwa
powinna być krótka, maksymalnie 8 znaków, bez znaków specjalnych.

2.

W drugim polu Project location klikając na symbol żółtej teczki zakładamy
podkatalog dla projektu. Działanie takie zabezpieczy przed nadpisywaniem
się plików różnych projektów.

3.

W trzecim polu Toolchain należy wybrać ST Assembler Linker.

background image

8 |

Strona

Mikrokontrolery rodziny ST7

J. Emilianowicz

Po zatwierdzeniu konfiguracji pojawi się okienko wyboru procesora MCU Selection.
W okienku tym należy wybrać procesor ST72334N2.

Następnie należy dodać do projektu pliki st72334n2.asm oraz st72334n2.inc
klikając prawym klawiszem myszki odpowiednio na Source Files oraz Include
Files. Pliki te można odnaleźć w jednym z podkatalogów aplikacji ST Toolset.

background image

Strona

| 9

J. Emilianowicz

Mikrokontrolery rodziny ST7

Kompilacja
projektu

Kompilację realizuje się poprzez menu Build > Buld (skrót klawiszowy F7).
Podczas kompilacji powtarza się często grupa błędów.

Brak pliku wykonywalnego

Podczas kompilacji może zdarzyć się błąd, wynikający z braku pliku
wykonywalnego, a dokładniej niepoprawnej ścieżki do niego.

Należy wtedy pozwolić na wyświetlenie ustawień projektu, wybrać zakładkę STM
ASM, a następnie wcisnąć klawisz Defaults.

background image

10 |

Strona

Mikrokontrolery rodziny ST7

J. Emilianowicz

Błąd krótkiej kompilacji

Podczas prawidłowo przeprowadzanej kompilacji w oknie wyjściowym przewija się
zwykle około 30 linijek. Jeżeli jednak kompilacja zakończy się wyświetleniem
jedynie jednej linijki 0 error(s), 0 warning(s), to świadczy i nieprawidłowym jej
przebiegu i należy przeprowadzić kompilację całego projektu od nowa poprzez
menu Buld > Rebuild All.

Błąd EOF

Skrót EOF oznacza End of File. Błąd ten jest wynikiem braku znaku ENTER za
dyrektywą END.

Oznacza to, że powinna być przynajmniej jedna pusta linia pod ostatnią dyrektywą.

background image

Strona

| 11

J. Emilianowicz

Mikrokontrolery rodziny ST7

Uruchamianie
projektu

Przed rozpoczęciem uruchamiania należy wybrać tryb pracy poprzez ustawienie w
menu Debug instrument > Target settings…. W praktyce mogą być
wykorzystane trzy z wielu opcji:

-

Simulator nie wymagający posiadania zestawu uruchomieniowego,

-

Swim ST-Link w przypadku posiadania zestawu STM8 Discovery,

-

DVP2 w przypadku emulatorów sprzętowych, będących na wyposażeniu
laboratorium.

Uruchamianie realizuje się poprzez menu Debug > Start debuging (skrót
klawiszowy F7). Prawidłowe uruchomienie powinno zakończyć się wyświetleniem
kodu programu wraz z żółtym paskiem podświetlającym pierwszy rozkaz.

background image

12 |

Strona

Mikrokontrolery rodziny ST7

J. Emilianowicz

Błąd wektora przerwań

Jeżeli po uruchomieniu żółty pasek nie wyświetla się, to oznacza że w programie nie
ma wektora przerwań lub jest niepoprawny, więc procesor/symulator nie potrafi
odnaleźć pierwszego rozkazu w pamięci.

background image

Strona

| 13

J. Emilianowicz

Mikrokontrolery rodziny ST7

S

CHEMATY

BLOKOWE

Częściami składowymi schematów blokowych są proste figury geometryczne, w
których umieszczone są warunki oraz proste instrukcje.

Symbole
schematów
blokowych

Blok graniczny (początek i koniec procedury)

Blok operacyjny (obliczenia). Ma kształt prostokąta. Wewnątrz bloku umieszcza
się zapis jednej lub kilku operacji.

Blok wejścia/wyjścia (wprowadzanie i wyprowadzanie danych). Ma kształt
równoległoboku. Wewnątrz bloku umieszcza się nazwy zmiennych, którym mają być
nadane wartości wprowadzone z interfejsów zewnętrznych lub nazwy zmiennych,
których wartości mają być wysłane do interfejsów zewnętrznych.

Blok warunkowy (decyzyjny). Ma kształt rombu. Wewnątrz bloku umieszcza się
zapis badanego warunku. Jeżeli warunek jest spełniony, to realizowany jest skok.
Jeśli natomiast warunek nie jest spełniony, to mikrokontroler przechodzi do
następnego rozkazu (pod rozkazem warunku).

background image

14 |

Strona

Mikrokontrolery rodziny ST7

J. Emilianowicz

Blok procesu (procedury). Proces zdefiniowany jest poza algorytmem. Można go
porównać do procedury, którą definiuje się raz w programie, by następnie móc ją
wielokrotnie wywoływać. Warunkiem użycia jest więc wcześniejsze zdefiniowanie
procesu.

Bloki łącznikowe (stronicowe lub międzystronicowe). Koło symbolizuje tzw.
łącznik stronicowy. Może się zdarzyć, że rysunek musi być dokończony w innym
miejscu strony, albo nawet na innej stronie. W pierwszym miejscu należy umieścić
łącznik z określonym symbolem w środku (np. cyfrą, literą) i doprowadzić do niego
strzałkę. Następnie w drugim miejscu należy umieścić drugi łącznik z takim samym
symbolem w środku i wyprowadzić z niego strzałkę.

Komentarz

Przykładowy
algorytm

Główny algorytm powinien być zawsze zapętlony na jeden z dwóch sposobów. W
algorytmie po lewej zdefiniowana grupa procedur będzie wykonywana cyklicznie.
Natomiast w algorytmie po prawej będzie wykonana tylko raz, następnie procesor
zacznie wykonywać niekończącą się pętlę.

background image

Strona

| 15

J. Emilianowicz

Mikrokontrolery rodziny ST7

W żadnym z powyższych algorytmów nie ma bloku Koniec czy Stop. Bloki takie
dozwolone są jedynie przy definiowanych zewnętrznych procedur i oznaczają
zakończenie ich wykonywania oraz powrót do głównego programu. Poniżej
przedstawiona jest zewnętrzną procedura wyliczająca silnię.

background image

16 |

Strona

Mikrokontrolery rodziny ST7

J. Emilianowicz

M

IKROKONTROLER

ST72334

Charakterystyka

8-BIT CORE

ALU

CONTROL

LVD

MULTI OSC

+ CLOCK

FILTER

MCC/RTC

PORT F

TIMER A

BEEP

PORT E

SCI

WATCHDOG

PROGRAM

MEMORY

(8KB/16KB)

RAM

(384B/512B)

EEPROM

(256B)

PORT A

PORT B

PORT C

TIMER B

SPI

PORT D

8-BIT ADC

A

D

D

R

E

S

S

A

N

D

D

A

T

A

B

U

S

PA7:0

PB7:0

PC7:0

PD7:0

V

DDA

V

SSA

RESET

PF7,6,4,2:0

ISPSEL

V

DD

V

SS

OSC1
OSC2

PE7:0

Pamięć

-

8 lub 16K pamięci programu (ROM lub FLASH) z możliwością
programowania po zamontowaniu w układzie (ISP), wraz z zabezpieczeniem
przed odczytem

-

256 bajtów pamięci danych EEPROM (z opcją zabezpieczenia przed
odczytem, w przypadku wersji z pamięcią programu ROM)

-

384 lub 512 bajtów pamięci RAM.

Zegar, reset i zasilanie

-

Zawansowany system resetu

-

Zaawansowane

zarządzanie

niskim

poborem

energii,

z

trzema

programowalnymi poziomami

-

Różnorodne źródła taktowania: rezonatory kryształowe lub ceramiczne,
rezonatory

RC,

zewnętrzny

sygnał

zegara,

rezerwowy

system

zabezpieczający zegar

-

4 tryby oszczędzania energii: Halt, Active-Halt, Wait i Slow

Układ przerwań

-

10 źródeł przerwań, także TRAP i RESET

-

15 źródeł przerwań zewnętrznych (4 wektory)

44 lub 32 porty I/O

-

44 lub 32 wielofunkcyjnych, dwukierunkowych linii I/O:

o

21 lub 19 linii z alternatywną funkcją

background image

Strona

| 17

J. Emilianowicz

Mikrokontrolery rodziny ST7

o

12 lub 8 linii z wysoką impedancją

4 Liczniki

-

Konfigurowalny układ watchdoga

-

Liczniki czasu rzeczywistego

-

Dwa 16-bitowe liczniki z: 2 wejściami zapamiętywania (tylko jedno w
liczniku A), 2 wyjścia porównania (tylko jedno w liczniku A), zewnętrzne
wejścia taktowania licznika A, PWM oraz generator impulsów

2 Porty komunikacyjne

-

synchroniczny port szeregowy SPI

-

asynchroniczny port szeregowy SCI

1 Przetwornik analogowo-cyfrowy

-

8-bitowy przetwornik analogowo-cyfrowy, z 8 kanałami wejściowymi

Zestaw instrukcji

-

operacje 8-bitowymi danymi

-

63 proste instrukcje

-

17 głównych trybów adresowania

-

mnożenie 8x8, bez znaku

-

operacje na bitach

Opis wyprowadzeń

Pin

Opis

PA0

Port A0

PA1

Port A1

PA2

Port A2

PA3

Port A3

PA4(HS)

Port A4

PA5(HS)

Port A5

PA6(HS)

Port A6

PA7(HS)

Port A7

PB0

Port B0

PB1

Port B1

PB2

Port B2

PB3

Port B3

PB4

Port B4

PB5

Port B5

PB6

Port B6

PB7

Port B7

PC0/OCMP2_B

Port C0 / Wyjście 2 porównania licznika B

PC1/OCMP1_B

Port C1 / Wyjście 1 porównania licznika B

PC2(HS)/ICAP2_B

Port C2 / Wejście 2 przechwytujące licznika B

PC3(HS)/ICAP1_B

Port C3 / Wejście 1 przechwytujące licznika B

PC4/MISO

Port C4 / Wyjście portu SPI

PC5/MOSI

Port C5 / Wejście portu SPI

PC6/SCK

Port C6 / Taktowanie portu SPI

PC7//SS

Port C7 / Wejście Slave portu SPI

PD0/AIN0

Port D0 / Wejście analogowe ADC 0

background image

18 |

Strona

Mikrokontrolery rodziny ST7

J. Emilianowicz

PD1/AIN1

Port D1 / Wejście analogowe ADC 1

PD2/AIN2

Port D2 / Wejście analogowe ADC 2

PD3/AIN3

Port D3 / Wejście analogowe ADC 3

PD4/AIN4

Port D4 / Wejście analogowe ADC 4

PD5/AIN5

Port D5 / Wejście analogowe ADC 5

PD6/AIN6

Port D6 / Wejście analogowe ADC 6

PD7/AIN7

Port D7 / Wejście analogowe ADC 7

PE0/TD0

Port E0 / Wyjście portu SCI

PE1/RDI

Port E1 / Wejście portu SCI

-

-

-

-

PE4(HS)

Port E4

PE5(HS)

Port E5

PE6(HS)

Port E6

PE7(HS)

Port E7

PF0/MCO

Port F0 / Wyjście zegara (f

osc

/2)

PF1/BEEP

Port F1 / Sygnał do przetwornika piezoelektrycznego

PF2

Port F2

-

-

PF4/OCMP1_A

Port F4 / Wyjście porównania licznika A

-

-

PF6/ICAP1_A

Port F6 / Wejście przechwytujące licznika A

PF7/EXTCLK_A

Port F7 / Zewnętrzne źródło licznika A

ISPSEL

Wejście ISP

/RESET

Wejście resetujące

OSC2

Wyjście rezonatora lub wejście oscylatora RC

V

DD_0

Napięcie zasilające bloku cyfrowego

V

DD_1

Napięcie zasilające bloku cyfrowego

V

DD_3

Napięcie zasilające bloku cyfrowego

V

SS_0

Masa bloku cyfrowego

V

SS_1

Masa bloku cyfrowego

V

SS_3

Masa bloku cyfrowego

V

DDA

Napięcie zasilające bloku analogowego

V

SSA

Masa bloku analogowego

Legenda:
HS – maks. 20mA

background image

Strona

| 19

J. Emilianowicz

Mikrokontrolery rodziny ST7

P

AMIĘĆ

Pamięć mikrokontrolerów rodziny ST7 oparta jest o architekturę Von Neumanna.
Oznacza to, że jest tylko jedna przestrzeń adresowa, gdzie znajduje sie pamięć
RAM, ROM, EEPROM, oraz rejestry sterujące mikrokontrolerem i peryferiami. Zaletą
takiego rozwiązania jest to, ze dostęp do zmiennych, stałych i rejestrów
specjalnych, realizowany jest tymi samymi instrukcjami.

Rezerwacja
zmiennych

Pamięć RAM może być rezerwowana dla zmiennych. Służy do tego instrukcja
asemblera

ds.b

, po której należy podać ilość rezerwowanych bajtów. Etykieta

będzie wskazywać pierwszy z zarezerwowanych bajtów.


segment ’ram0’
count ds.b 1 ; rezerwacja jednego bajtu
temp_tab ds.b 4 ; rezerwacja czterech kolejnych bajtów

Tuż po włączeniu mikrokontrolera zawartość zmiennych jest przypadkowa i należy
pamiętać o ich zainicjalizowaniu.


init_variable ; przykład inicjalizacji zmiennej
ld A,#0
ld count,A

Inkrementacja i dekrementacja zmiennych dozwolona jest jedynie poprzez rejestry
A, X i Y.


increment_variable ; przykład inkrementacji poprzez akumulator
ld A,count
inc A
ld count,A

Inicjalizacja
stałych

W pamięci ROM można definiować stałe, używając instrukcji

dc.b

, po której należy

podać wartość stałej lub zestaw stałych oddzielonych przecinkami. Etykieta będzie
wskazywać pierwszy z zainicjalizowanych bajtów.


segment ’rom’
correction dc.b 12 ; definicja stałej o warto

ś

ci 100

table dc.b $A0,$A1 ; definicja tablicy o dwóch bajtach A0 i A1
message1 dc.b ” START SYSTEMU ” ; definicja tablicy o 16 bajtach,
; wypełniona kodami ASCII kolejnych
; liter

background image

20 |

Strona

Mikrokontrolery rodziny ST7

J. Emilianowicz

Stałe umieszczone są w pamięci programu i można je jedynie czytać.


add A,correction ; dodanie do akumulatora warto

ś

ci korekcji

Przypisanie
wartości

Inicjalizowane stałe zajmują miejsce w pamięci programu. Jest to rozwiązanie
bardzo wygodne przy inicjalizowaniu dużych tablic. W przypadku wartości
jednobajtowych można skorzystać z dyrektywy

equ

, przypisującej wartość do

etykiety.


lab1 equ $12

...

ld A,#lab1 ; załadowanie akumulatora warto

ś

ci

ą

$12

Można przypisać także wartość dwubajtową i przy dostępie do niej wskazać, która
część nas interesuje, starsza czy młodsza.


lab2 equ $1234

...

ld A,#lab2.h ; załadowanie akumulatora warto

ś

ci

ą

$12

ld A,#lab2.l ; załadowanie akumulatora warto

ś

ci

ą

$34

background image

Strona

| 21

J. Emilianowicz

Mikrokontrolery rodziny ST7

S

TEROWANIE

PROGRAMEM

Skoki i wywołania
bezwarunkowe

Skoki bezwarunkowy

jp

i bezwarunkowy relacyjny

jra

realizują skok pod etykietę

wskazaną w rozkazie. Są to skoki bez zachowywania adresu powrotu.


...
jp dodawanie
...

...
dodawanie
...

Wywołania bezwarunkowe

call

i bezwarunkowe relacyjne

callr

realizują skok pod

etykietę wskazaną w rozkazie. Ponadto przed skokiem na stosie odkładany jest
adres następnego rozkazu pod wywołaniem, czyli adres powrotu. Powrót
realizowany jest po napotkaniu rozkazu

ret

.


...
call dodawanie
...

...
dodawanie
...
ret
...

Testowanie bitów
i skoki warunkowe

Rozkazy

btjt

i

btjf

realizują testowanie wskazanego bitu i w zależności od wyniku

testowania skok pod wskazaną etykietę, lub przejście do następnego rozkazu.

background image

22 |

Strona

Mikrokontrolery rodziny ST7

J. Emilianowicz

Rozkaz

btjt

(bit test and jump if true) realizuje skok dla „1”, natomiast

btjf

(bit

test and jump if false) realizuje skok dla „0”.


; klawisz znajduje si

ę

na pinie PB0

; klawisz wci

ś

ni

ę

ty zwiera pin do masy (0)

; klawisz puszczony podaje na pin zasilanie (1)
sprawdz_klawisz
btjf PBDR,#0,klawisz_wcisniety
...

...
klawisz_wcisniety
...

Korzystając ze skoków warunkowy należy bardzo ostrożnie dobierać warunki i
etykiety do skoków. Poniżej przedstawiony jest algorytm, realizujący prostą funkcję
zmiany stanu leda na przeciwny. Jeśli led był włączony wyłączenie go, jeśli
wyłączony włączenie. Lewy algorytm poniżej jest algorytmem poprawnym, skok dla
warunku spełnionego jest skokiem długim, omijającym fragment programu dla
warunku niespełnionego. Natomiast prawy algorytm jest błędny, ponieważ dla
warunku niespełnionego i spełnionego następuje wykonywanie rozkazów zaraz pod
rozkazem testowania.

Poniżej przedstawione są fragmenty programu dla prawidłowego i nieprawidłowego
algorytmu.


sprawdz_leda sprawdz_leda
btjt PBDR,#7,wylacz_leda btjt PBDR,#7,wlacz_leda
wlacz_leda wlacz_leda
... ...
wylacz_leda wylacz_leda
... ...

background image

Strona

| 23

J. Emilianowicz

Mikrokontrolery rodziny ST7


Wyszukiwarka

Podobne podstrony:
Biul Moni Przyr 1(4)03 Aves id Nieznany
PRZEKRA J TEOWY 2012 03 23 id 3 Nieznany
25 11 2011 expression ecrite id Nieznany
BIOCHEMIA 2011 termin 2 docx id Nieznany (2)
Prawo cywilne ćw.10 2011-03-14, Prawo Cywilne
Hurra I Lekcja 4 cw Str 14 id 2 Nieznany
7 10 2011 expression ecrit id 4 Nieznany (2)
Cennik INTERIA PL 2013 03 21 id Nieznany
matematyka 2011 sierpien odp id Nieznany
cwicz e3 Kapanowski 8 03 13 id Nieznany
Cw inz Pn 2015 part 03 cw 4 id Nieznany
Biul Moni Przyr 1(4)03 Aves id Nieznany
Ziemia nadal drży w Japonii Nasz Dziennik, 2011 03 14
Koniec Narodu Nasz Dziennik, 2011 03 14
FIDE Trainers Surveys 2011 03 14 Alexey Kuzmin Training of Calculation I
FIDE Trainers Surveys 2011 03 14 Alexey Kuzmin Training of Calculation II
2011 03 14 Sprawa małego Szymona 1
Pisać, kapitanie! Nasz Dziennik, 2011 03 14

więcej podobnych podstron