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.
od kierunku transmisji (z sygnaÅ‚u jako blokadÍ transmisji -
czy do klawiatury) przebiega klawiatura nie zacznie transmitowaĘ
ona w nieco inny sposÛb, choĘ do mikrokontrolera w tym samym
zawsze jest to transmisja synchro- czasie) mikrokontroler zeruje liniÍ
niczna w takt sygnaÅ‚u zegarowego KBD Data, a nastÍpnie ustawia stan
generowanego na linii KBD Clock wysoki na KBD Clock, co jest syg-
Na rys. 30 przedstawiono wy- przez klawiaturÍ. Prostszym przypad- naÅ‚em rozpoczÍcia transmisji do
prowadzenia standardowych zÅ‚Ä…cz kiem jest transmisja danych z kla- klawiatury. Wtedy kontrolÍ nad li-
klawiatur PC. Najlepiej stosowaĘ wiatury do mikroprocesora (przebie- nią KBD Clock przejmuje klawiatu-
nieprzerobione w Å‚aden sposÛb gi na rys. 32): nastÍpuje tutaj prze- ra (w czasie do 10 ms) i rozpoczy-
zÅ‚Ä…cza (dostosowaĘ wÅ‚asne urzÄ…dze- sÅ‚anie sÅ‚owa skÅ‚adajÄ…cego siÍ z 11 na generacjÍ sygnaÅ‚u zegarowego.
nie do standardowego wtyku i roz- bitÛw: bitu startu (zawsze ì0î), oÅ›- Transmisja danych przebiega podob-
mieszczenia sygnaÅ‚Ûw), choĘ w razie miu bitÛw danych (poczÄ…wszy od nie jak wczeÅ›niej, z tym Å‚e liniÍ
koniecznoÅ›ci moÅ‚na zastosowaĘ do- najmniej znaczÄ…cego), nastÍpnie bitu KBD Data kontroluje mikrokontroler
wolne inne poÅ‚Ä…czenia - traci siÍ parzystoÅ›ci (typu Odd - dopeÅ‚nienie i to on wystawia kolejno bity prze-
jednak na kompatybilności ze stan- do parzystej liczby jedynek w trans- znaczone do transmisji oraz bit pa-
dardem, co mołe utrudniĘ serwis mitowanym bajcie danych) oraz bit rzystości. Po przesłaniu bitu parzys-
w razie awarii. Na rys. 31 przed- stopu, zawsze rÛwny ì1î. Zboczem toÅ›ci mikrokontroler zwalnia liniÍ
stawiono przykÅ‚adowy sposÛb doÅ‚Ä…- taktujÄ…cym jest opadajÄ…ce zbocze KBD Data (stan wysoki), co jest in-
czenia klawiatury do mikrokontrole- sygnaÅ‚u zegarowego. PrÍdkośĘ trans- terpretowane jako bit stopu - jeÅ›li
ra. Zastosowano tu połączenie bez- misji nie jest zbyt duła i nie pod- tego nie zrobi, to sygnał na linii
poÅ›rednie z dodatkowymi rezystora- lega Å‚adnej dokÅ‚adnej standaryzacji - KBD Clock bÍdzie generowany tak
mi podciÄ…gajÄ…cymi, dajÄ…cymi lepszÄ… czÍstotliwośĘ przebiegu zegarowego dÅ‚ugo, jak dÅ‚ugo KBD Data bÍdzie
odpornośĘ transmisji na zakÅ‚Ûcenia. zazwyczaj zawiera siÍ w przedziale pozostawaĘ w stanie niskim. Po
KlawiaturÍ naleÅ‚y zasilaĘ napiÍciem 20 do 30 kHz. WspÛÅ‚pracujÄ…cy mik- przesÅ‚aniu bitu stopu klawiatura ge-
+5 V, najlepiej tym samym, ktÛre rokontroler moÅ‚e sterowaĘ transmis- neruje dodatkowy takt sygnaÅ‚u ze-
zasila wspÛÅ‚pracujÄ…cy z niÄ… mikro- jÄ… z klawiatury przez wymuszanie garowego poÅ‚Ä…czony z wyzerowaniem
kontroler. Podczas projektowania stanu niskiego na linii KBD Clock - linii KBD Data, potwierdzajÄ…c w ten
ukÅ‚adu zasilania naleÅ‚y uwzglÍdniĘ stan niski oznacza blokadÍ transmi- sposÛb zakoÒczenie transmisji.
dodatkowy pobÛr prÄ…du, ktÛry - sji i klawiatura rozpocznie transmi- DokÅ‚adny opis rozkazÛw sterujÄ…-
w zalełności od modelu klawiatury towanie ewentualnej danej dopiero cych klawiaturą oraz sposoby wyko-
- moÅ‚e dochodziĘ do 300 mA. po pojawieniu siÍ na tej linii stanu rzystania wszystkich jej funkcji Czy-
JeÅ‚eli chodzi o sposÛb komunika- wysokiego (podczas braku aktywnoÅ›- telnik znajdzie w literaturze poÅ›wiÍco-
cji klawiatury z otoczeniem, to gÅ‚Ûw- ci obydwie linie: KBD Clock i KBD nej komputerom PC (np. w ksiÄ…Å‚ce
nÄ… jej cechÄ… jest to, Å‚e w zaleÅ‚noÅ›ci Data znajdujÄ… siÍ w stanie wysokim). Piotra Metzgera ìAnatomia PCî).
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
Rys. 30 Rys. 31
Elektronika Praktyczna 11/2003
97
K U R S
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
Rys. 32
PSW mikrokontrolera (po wpisaniu
Z punktu widzenia konstruktora rym musi zmieÅ›ciĘ siÍ caÅ‚a transmis- otrzymanej danej do akumulatora).
systemÛw mikroprocesorowych warto ja. JeÅ‚eli czas ten zostanie przekro- Przystosowanie programu do
natomiast wspomnieĘ o podstawo- czony, to zostaje wyzerowany licznik transmisji w stronÍ klawiatury jest
wych cechach uÅ‚ytkowych klawiatu- odbieranych bitÛw i program oczekuje stosunkowo proste: naleÅ‚y zadbaĘ
ry PC. JeÅ‚eli chodzi o transmisjÍ na rozpoczÍcie kolejnej transmisji. o wygenerowanie sygnaÅ‚Ûw inicju-
z klawiatury do mikrokontrolera z nią Procedura obsługi przerwania jących na liniach zegara i danych,
wspÛÅ‚pracujÄ…cego (najczÍÅ›ciej wyko- INT0 po zakoÒczeniu transmisji a nastÍpnie zamiast odczytywaĘ stan
rzystywany przypadek), to nastÍpuje ustawia bit NOWY oznajmiajÄ…cy ode- linii KBD Data, naleÅ‚y po kaÅ‚dym
ona po kaÅ‚dym zdarzeniu zwiÄ…zanym branie nowego kodu, ktÛry jest do- zboczu opadajÄ…cym sygnaÅ‚u zegaro-
ze zmianÄ… stanu klawiszy.
Klawiatura przesyła 8-bitowy kod
List. 12
naciÅ›niÍtego klawisza w momencie je-
;KOD - zmienna bajtowa przechowujÄ…ca odebrany kod klawisza
go wciÅ›niÍcia oraz ten sam kod po- ;PAR - zmienna bitowa przechowujÄ…ca odebrany bit parzystoÅ›ci
;NR_BIT - zmienna bajtowa przechowujÄ…ca numer odebranego bitu
wiÍkszony o liczbÍ 128 (80H) w mo-
;NOWY - zmienna bitowa przechowujÄ…ca informacjÄ™ o odebraniu nowego kodu
mencie puszczenia tego klawisza. Is-
INCJALIZACJA:
tniejÄ… takÅ‚e grupy klawiszy, ktÛrych
CLR NOWY ;zerowanie zmiennych
naciskanie czy zwalnianie powoduje CLR PAR
MOV NR_BIT,#0
przesÅ‚anie wiÍkszej liczby bajtÛw in-
SETB P3.2
formacji (np. klawisze funkcyjne SETB P3.3
F1...F12 i inne) - dokładny ich opis
SETB EA ;zaprogramowanie układu przerwań
Czytelnik znajdzie we wspomnianej SETB ET1
SETB EX0
literaturze. JeÅ‚eli chodzi o transmisjÍ
SETB IT0 ;przerwanie od opadajÄ…cego zbocza na INT0
danych do klawiatury (nie zawsze is-
MOV TMOD,#010H ;licznik 1 w trybie 1 (licznik 16-bitowy)
tnieje potrzeba jej wykorzystywania),
...
to mikrokontroler sterujący przesyła
... ;(program główny)
klawiaturze rozkazy sterujÄ…ce jej pra-
...
cą. Jest mołliwe m.in. sterowanie
diodami świecącymi na klawiaturze,
PRZERWANIE_INT0: ;procedura obsługi przerwania zewnętrznego z linii
;INT0 (P3.2)
włączanie i wyłączanie klawiatury,
zmiana prÍdkoÅ›ci autorepetycji oraz
PUSH ACC ;zapamiętanie
PUSH PSW ;rejestrów na stosie
rÛÅ‚ne funkcje kontrolne.
NajczÍÅ›ciej chodzi nam o moÅ‚li-
MOV A,NR_BIT
JZ BIT_STARTU ;jeżeli bit startu (nr 0), to zignoruj go
wośĘ odczytywania stanu klawiatury
(naciskanie klawiszy) - umołliwia
CJNE A,#1,NIE_1 ;odbiór pierwszego bitu
CLR A ;zerowanie
nam to poniłszy program (odpowia-
MOV C,P3.3 ;odczytanie bitu
dający połączeniu klawiatury i mikro-
MOV ACC.0,C ;i wpisanie na najmłodszą pozycję akumulatora
SJMP ZAPAMIETAJ
kontrolera według rys. 31) - list. 12.
Przedstawiony program w bardzo
NIE_1:
CJNE A,#2,NIE_2 ;odbiór drugiego bitu
prosty sposÛb odczytuje kolejne bity
MOV A,KOD ;odczytanie zapamiętanych już informacji
pojawiajÄ…ce siÍ na linii P3.3 w takt
MOV C,P3.3 ;odczytanie bitu
MOV ACC.1,C ;i wpisanie na odpowiedniÄ… pozycjÄ™ akumulatora
sygnału zegarowego doprowadzonego
SJMP ZAPAMIETAJ
do linii P3.2. Został on tak napisa-
NIE_2:
ny, aby łatwo mołna było zauwa-
CJNE A,#3,NIE_3 ;odbiór trzeciego bitu
Å‚yĘ, ktÛre czÍÅ›ci procedury odbiera- MOV A,KOD
MOV C,P3.3
jÄ…cej dane sÄ… wykonywane zgodnie
MOV ACC.2,C
z kolejnoÅ›ciÄ… odbieranych bitÛw.
SJMP ZAPAMIETAJ
Opadające zbocze sygnału zegaro-
NIE_3:
wego wywoÅ‚uje procedurÍ obsÅ‚ugi CJNE A,#4,NIE_4 ;odbiór czwartego bitu
MOV A,KOD
przerwania odczytujÄ…cÄ… kolejno
MOV C,P3.3
wszystkie bity transmitowane przez MOV ACC.3,C
SJMP ZAPAMIETAJ
klawiaturÍ. Do zabezpieczenia progra-
mu przed ìutkniÍciemî na odbiorze NIE_4:
CJNE A,#5,NIE_5 :odbiór piątego bitu
ktÛregoÅ› z bitÛw (wskutek zakÅ‚ÛceÒ
MOV A,KOD
lub odłączenia klawiatury) wykorzys- MOV C,P3.3
MOV ACC.4,C
tano licznik T1 zliczajÄ…cy czas, w ktÛ-
SJMP ZAPAMIETAJ
Elektronika Praktyczna 11/2003
98
K U R S
Rys. 33
wego ustawiaĘ na niej stan na- odebrania bitu potwierdzenia (nawet
stÍpnego bitu przeznaczonego do jeÅ›li bit potwierdzenia bÍdzie igno-
transmisji. NaleÅ‚y rÛwnieÅ‚ zwiÍkszyĘ rowany przez program).
o 1 liczbÍ moÅ‚liwych stanÛw liczni- PaweÅ‚ Hadam, AVT
ka bitÛw w zwiÄ…zku z koniecznoÅ›ciÄ… 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óznienia
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


Wyszukiwarka

Podobne podstrony:
Podstawy projektowania systemów mikroprocesorowych, cz 3
Podstawy projektowania systemów mikroprocesorowych, cz 8
Podstawy projektowania systemów mikroprocesorowych, cz 2
Podstawy projektowania systemów mikroprocesorowych, cz 7
Podstawy projektowania systemów mikroprocesorowych, cz 5
projektowanie systemow informatycznych
Podstawy projektowania i implementacji?z?nych
Podstawy projektowania linii kolejowych
zarzadzanie projektami systemowymi,6

więcej podobnych podstron