Podstawy projektowania systemów mikroprocesorowych, cz. 9.pdf
(
132 KB
)
Pobierz
Podstawy projektowania systemów mikroprocesorowych, część 9
K U R S
Podstawy projektowania systemów
mikroprocesorowych, część 9
Zgodnie z†zapowiedzi¹ sprzed miesi¹ca, w†tej czÍúci kursu
przedstawiamy sposÛb wymiany danych pomiÍdzy
mikrokontrolerem i†standardow¹ klawiatur¹ PC-AT.
Zastosowanie takiej klawiatury to obecnie jeden
z†najtaÒszych sposobÛw wyposaøenia systemu
mikroprocesorowego w†interfejs umoøliwiaj¹cy
wprowadzanie danych.
Na
rys. 30
przedstawiono wy-
prowadzenia standardowych z³¹cz
klawiatur PC. Najlepiej stosowaÊ
nieprzerobione w†øaden sposÛb
z³¹cza (dostosowaÊ w³asne urz¹dze-
nie do standardowego wtyku i†roz-
mieszczenia sygna³Ûw), choÊ w†razie
koniecznoúci moøna zastosowaÊ do-
wolne inne po³¹czenia - traci siÍ
jednak na kompatybilnoúci ze stan-
dardem, co moøe†utrudniÊ serwis
w†razie awarii. Na
rys. 31
przed-
stawiono przyk³adowy sposÛb do³¹-
czenia klawiatury do mikrokontrole-
ra. Zastosowano tu po³¹czenie bez-
poúrednie z†dodatkowymi rezystora-
mi podci¹gaj¹cymi, daj¹cymi lepsz¹
odpornoúÊ transmisji na zak³Ûcenia.
KlawiaturÍ naleøy zasilaÊ napiÍciem
+5 V, najlepiej tym samym, ktÛre
zasila wspÛ³pracuj¹cy z†ni¹ mikro-
kontroler. Podczas projektowania
uk³adu zasilania naleøy uwzglÍdniÊ
dodatkowy pobÛr pr¹du, ktÛry -
w†zaleønoúci od modelu klawiatury
- moøe dochodziÊ do 300 mA.
Jeøeli chodzi o†sposÛb komunika-
cji klawiatury z†otoczeniem, to g³Ûw-
n¹ jej cech¹ jest to, øe w†zaleønoúci
od†kierunku transmisji (z
czy do klawiatury) przebiega
ona w†nieco inny sposÛb, choÊ
zawsze jest to transmisja synchro-
niczna w†takt sygna³u zegarowego
generowanego na linii
KBD Clock
przez klawiaturÍ. Prostszym przypad-
kiem jest transmisja danych z†kla-
wiatury do mikroprocesora (przebie-
gi na
rys. 32
): nastÍpuje tutaj prze-
s³anie s³owa sk³adaj¹cego siÍ z†11
bitÛw: bitu startu (zawsze ì0î), oú-
miu bitÛw danych (pocz¹wszy od
najmniej znacz¹cego), nastÍpnie bitu
parzystoúci (typu
Odd
- dope³nienie
do parzystej liczby jedynek w†trans-
mitowanym bajcie danych) oraz bit
stopu, zawsze rÛwny ì1î. Zboczem
taktuj¹cym jest opadaj¹ce zbocze
sygna³u zegarowego. PrÍdkoúÊ trans-
misji nie jest zbyt duøa i†nie pod-
lega øadnej dok³adnej standaryzacji -
czÍstotliwoúÊ przebiegu zegarowego
zazwyczaj zawiera siÍ w†przedziale
20 do 30†kHz. WspÛ³pracuj¹cy mik-
rokontroler moøe sterowaÊ transmis-
j¹ z†klawiatury przez wymuszanie
stanu niskiego na linii
KBD Clock
-
stan niski oznacza blokadÍ transmi-
sji i†klawiatura rozpocznie transmi-
towanie ewentualnej danej dopiero
po pojawieniu siÍ na tej linii stanu
wysokiego (podczas braku aktywnoú-
ci obydwie linie:
KBD Clock
i†
KBD
Data
znajduj¹ si͆w†stanie wysokim).
Nieco bardziej skomplikowana
jest transmisja danych do klawiatu-
ry. Na
rys. 33
przedstawiono prze-
biegi czasowe sygna³Ûw†podczas ta-
kiej transmisji. Inicjacja transmisji
do klawiatury nastÍpuje przez wy-
zerowanie linii
KBD Clock
przez
mikrokontroler (dok³adnie chodzi
o†zbocze opadaj¹ce na tej linii).
W†czasie trwania stanu niskiego ge-
nerowanego na linii
Clock
(powin-
no to trwaÊ nie krÛcej niø 60 ms,
co gwarantuje potraktowanie tego
sygna³u jako blokadÍ transmisji -
klawiatura nie zacznie transmitowaÊ
do mikrokontrolera w†tym samym
czasie) mikrokontroler zeruje liniÍ
KBD Data
, a†nastÍpnie ustawia stan
wysoki na
KBD Clock
, co jest syg-
na³em rozpoczÍcia transmisji do
klawiatury. Wtedy kontrolÍ nad li-
ni¹
KBD Clock
przejmuje klawiatu-
ra (w czasie do 10 ms) i†rozpoczy-
na generacjÍ sygna³u zegarowego.
Transmisja danych przebiega podob-
nie jak wczeúniej, z†tym øe liniÍ
KBD Data
kontroluje mikrokontroler
i†to on wystawia kolejno bity prze-
znaczone do transmisji oraz bit pa-
rzystoúci. Po przes³aniu bitu parzys-
toúci mikrokontroler zwalnia liniÍ
KBD Data
(stan wysoki), co jest in-
terpretowane jako bit stopu - jeúli
tego nie zrobi, to sygna³ na linii
KBD Clock
bÍdzie generowany tak
d³ugo, jak d³ugo
KBD Data
bÍdzie
pozostawaÊ w†stanie niskim. Po
przes³aniu bitu stopu klawiatura ge-
neruje dodatkowy takt sygna³u ze-
garowego po³¹czony z†wyzerowaniem
linii
KBD Data
, potwierdzaj¹c w†ten
sposÛb zakoÒczenie transmisji.
Dok³adny opis rozkazÛw steruj¹-
cych klawiatur¹ oraz sposoby wyko-
rzystania wszystkich jej funkcji Czy-
telnik znajdzie w†literaturze poúwiÍco-
nej komputerom PC (np. w†ksi¹øce
Piotra Metzgera ìAnatomia PCî).
Rys. 30
Rys. 31
Elektronika Praktyczna 11/2003
97
K U R S
Rys. 32
stÍpny w†zmiennej
KOD
, a†kontrolny
bit parzystoúci jest zwracany
w†zmiennej
PAR
- najczÍúciej nie is-
tnieje potrzeba sprawdzania popra-
wnoúci (przek³amania zdarzaj¹ siÍ
bardzo rzadko), jeúli zasz³aby jednak
taka potrzeba, to naleøy pamiÍtaÊ,
øe†bit parzystoúci transmitowany
przez klawiaturÍ jest negacj¹ bitu
parzystoúci dostÍpnego w†rejestrze
PSW mikrokontrolera (po wpisaniu
otrzymanej danej do akumulatora).
Przystosowanie programu do
transmisji w†stronÍ klawiatury jest
stosunkowo proste: naleøy zadbaÊ
o†wygenerowanie sygna³Ûw inicju-
j¹cych na liniach zegara i†danych,
a†nastÍpnie zamiast odczytywaÊ stan
linii
KBD Data
, naleøy po kaødym
zboczu opadaj¹cym sygna³u zegaro-
Z†punktu widzenia konstruktora
systemÛw mikroprocesorowych warto
natomiast wspomnieÊ o†podstawo-
wych cechach uøytkowych klawiatu-
ry PC. Jeøeli chodzi o†transmisjÍ
z†klawiatury do mikrokontrolera z†ni¹
wspÛ³pracuj¹cego (najczÍúciej wyko-
rzystywany przypadek), to nastÍpuje
ona po kaødym zdarzeniu zwi¹zanym
ze zmian¹ stanu klawiszy.
Klawiatura przesy³a 8-bitowy kod
naciúniÍtego klawisza w†momencie je-
go wciúniÍcia oraz ten sam kod po-
wiÍkszony o†liczbÍ 128 (80H) w†mo-
mencie puszczenia tego klawisza. Is-
tniej¹ takøe grupy klawiszy, ktÛrych
naciskanie czy zwalnianie powoduje
przes³anie wiÍkszej liczby bajtÛw in-
formacji (np. klawisze funkcyjne
F1...F12 i†inne) - dok³adny ich opis
Czytelnik znajdzie we wspomnianej
literaturze. Jeøeli chodzi o†transmisjÍ
danych do klawiatury (nie zawsze is-
tnieje potrzeba jej wykorzystywania),
to mikrokontroler steruj¹cy przesy³a
klawiaturze rozkazy steruj¹ce jej pra-
c¹. Jest moøliwe m.in. sterowanie
diodami úwiec¹cymi na klawiaturze,
w³¹czanie i†wy³¹czanie klawiatury,
zmiana prÍdkoúci autorepetycji oraz
rÛøne funkcje kontrolne.
NajczÍúciej chodzi nam o†moøli-
woúÊ odczytywania stanu klawiatury
(naciskanie klawiszy) - umoøliwia
nam to poniøszy program (odpowia-
daj¹cy po³¹czeniu klawiatury i†mikro-
kontrolera wed³ug rys. 31) -
list. 12
.
Przedstawiony program w†bardzo
prosty sposÛb odczytuje kolejne bity
pojawiaj¹ce siÍ na linii P3.3 w†takt
sygna³u zegarowego doprowadzonego
do linii P3.2. Zosta³ on tak napisa-
ny, aby ³atwo moøna by³o zauwa-
øyÊ, ktÛre czÍúci procedury odbiera-
j¹cej dane s¹ wykonywane zgodnie
z†kolejnoúci¹ odbieranych bitÛw.
Opadaj¹ce zbocze sygna³u zegaro-
wego wywo³uje procedurÍ obs³ugi
przerwania odczytuj¹c¹ kolejno
wszystkie bity transmitowane przez
klawiaturÍ. Do zabezpieczenia progra-
mu przed ìutkniÍciemî na odbiorze
ktÛregoú z†bitÛw (wskutek zak³ÛceÒ
lub od³¹czenia klawiatury) wykorzys-
tano licznik T1 zliczaj¹cy czas, w†ktÛ-
rym musi zmieúciÊ siÍ ca³a†transmis-
ja. Jeøeli czas ten zostanie przekro-
czony, to zostaje wyzerowany licznik
odbieranych bitÛw i†program oczekuje
na rozpoczÍcie kolejnej transmisji.
Procedura obs³ugi przerwania
INT0 po zakoÒczeniu transmisji
ustawia bit
NOWY
oznajmiaj¹cy ode-
branie nowego kodu, ktÛry jest do-
List. 12
;KOD - zmienna bajtowa przechowująca odebrany kod klawisza
;PAR - zmienna bitowa przechowująca odebrany bit parzystości
;NR_BIT - zmienna bajtowa przechowująca numer odebranego bitu
;NOWY - zmienna bitowa przechowująca informację o odebraniu nowego kodu
INCJALIZACJA:
CLR NOWY
;zerowanie zmiennych
CLR PAR
MOV NR_BIT,#0
SETB P3.2
SETB P3.3
SETB EA
;zaprogramowanie układu przerwań
SETB ET1
SETB EX0
SETB IT0
;przerwanie od opadającego zbocza na INT0
MOV TMOD,#010H ;licznik 1 w trybie 1 (licznik 16-bitowy)
...
...
;(program główny)
...
PRZERWANIE_INT0: ;procedura obsługi przerwania zewnętrznego z linii
;INT0 (P3.2)
PUSH ACC
;zapamiętanie
PUSH PSW
;rejestrów na stosie
MOV A,NR_BIT
JZ BIT_STARTU ;jeżeli bit startu (nr 0), to zignoruj go
CJNE A,#1,NIE_1 ;odbiór pierwszego bitu
CLR A
;zerowanie
MOV C,P3.3
;odczytanie bitu
MOV ACC.0,C
;i wpisanie na najmłodszą pozycję akumulatora
SJMP ZAPAMIETAJ
NIE_1:
CJNE A,#2,NIE_2 ;odbiór drugiego bitu
MOV A,KOD
;odczytanie zapamiętanych już informacji
MOV C,P3.3
;odczytanie bitu
MOV ACC.1,C
;i wpisanie na odpowiednią pozycję akumulatora
SJMP ZAPAMIETAJ
NIE_2:
CJNE A,#3,NIE_3 ;odbiór trzeciego bitu
MOV A,KOD
MOV C,P3.3
MOV ACC.2,C
SJMP ZAPAMIETAJ
NIE_3:
CJNE A,#4,NIE_4 ;odbiór czwartego bitu
MOV A,KOD
MOV C,P3.3
MOV ACC.3,C
SJMP ZAPAMIETAJ
NIE_4:
CJNE A,#5,NIE_5 :odbiór piątego bitu
MOV A,KOD
MOV C,P3.3
MOV ACC.4,C
SJMP ZAPAMIETAJ
98
Elektronika Praktyczna 11/2003
K U R S
Rys. 33
wego ustawiaÊ na niej stan na-
stÍpnego bitu przeznaczonego do
transmisji. Naleøy rÛwnieø zwiÍkszyÊ
o†1†liczbÍ moøliwych stanÛw liczni-
ka bitÛw w†zwi¹zku z†koniecznoúci¹
odebrania bitu potwierdzenia (nawet
jeúli bit potwierdzenia bÍdzie igno-
rowany przez program).
Pawe³ Hadam, AVT
pawel.hadam@ep.com.pl
List. 12 − cd.
NIE_5:
CJNE A,#6,NIE_6 ;odbiór szóstego bitu
MOV A,KOD
MOV C,P3.3
MOV ACC.5,C
SJMP ZAPAMIETAJ
NIE_6:
CJNE A,#7,NIE_7 ;odbiór siódmego bitu
MOV A,KOD
MOV C,P3.3
MOV ACC.6,C
SJMP ZAPAMIETAJ
NIE_7:
CJNE A,#8,NIE_8 ;odbiór ósmego bitu
MOV A,KOD
MOV C,P3.3
MOV ACC.7,C
SJMP ZAPAMIETAJ
NIE_8:
CJNE A,#9,NIE_9 ;odbiór bitu parzystości
MOV C,P3.3
;odczytanie bitu
MOV PAR,C
;i zapamiętanie
SJMP KONIEC
NIE_9:
SETB NOWY ;odebranie bitu stopu - ustawienie
;informacji o nowym kodzie
MOV NR_BIT,#0 ;wyzerowanie licznika bitów
CLR TR1
;zatrzymanie licznika
SJMP KONIEC
ZAPAMIETAJ:
MOV KOD,A
;zapamiętanie kodu
INC NR_BIT
;zwiększenie licznika bitów
SJMP KONIEC
BIT_STARTU:
INC NR_BIT
;zwiększ nr bitu
CLR NOWY
;zeruj bit (bo nadchodzi nowy kod i informacja
;o starym zostanie zamazana)
MOV TH1,#0
;włączenie licznika zabezpieczającego (timeout)
MOV TL1,#0
;dla kwarcu 12MHz daje to czas opóźnienia
SETB TR1
;około 65ms
KONIEC:
POP PSW
;pobranie rejestrów
POP ACC
;ze stosu
RETI
PRZERWANIE_T1: ;obsługa przerwania od licznika T1
CLR TR1 ;zatrzymanie licznika
MOV NR_BIT,#0 ;wyzerowanie licznika bitów
RETI
Elektronika Praktyczna 11/2003
99
Plik z chomika:
militare
Inne pliki z tego folderu:
Podstawy projektowania systemów mikroprocesorowych, cz. 1.pdf
(113 KB)
Podstawy projektowania systemów mikroprocesorowych, cz. 10.pdf
(113 KB)
Podstawy projektowania systemów mikroprocesorowych, cz. 11.pdf
(152 KB)
Podstawy projektowania systemów mikroprocesorowych, cz. 12.pdf
(59 KB)
Podstawy projektowania systemów mikroprocesorowych, cz. 2.pdf
(119 KB)
Inne foldery tego chomika:
• Prostowniki i zasilacze
[CD14] - Dlaczego Hitler Kazał Zabić Ernsta Rohma
▣ Bardzo Ściśle Tajne
▣ Bitwa o Anglię
▣ Bohaterowie II Wojny Światowej lektor chomikuj
Zgłoś jeśli
naruszono regulamin