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, 

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