Mic PIC1

Transkript

Mic PIC1
Kurs monolitických
mikropoèítaèù
Ing. Radomír Matulík
Úvod do problematiky
Jako mikropoËÌtaËe jsou nÏkdy oznaËov·ny i malÈ poËÌtaËe,
kde Ë·st slova mikro- vyjad¯uje relativnÏ malÈ rozmÏry. Je nutnÈ si uvÏdomit, ûe mikroprocesor ani mikropoËÌtaË v naznaËeTechnick˝ v˝voj v oblasti elektroniky je velmi dynamick˝. ÿada
nÈm pojetÌ nenÌ ide·lem mikropoËÌtaËovÈ techniky. TÌm je moklasick˝ch souË·stek jako jsou rezistory, kondenz·tory, diody
nolitick˝ mikropoËÌtaË. OznaËujeme tak integrovan˝ obvod LSI,
a tranzistory jsou sice zdokonalov·ny, ale vÏtöinou pouze z techkter˝ na jednom Ëipu sdruûuje p¯inejmenöÌm mikroprocesor, genologickÈho hlediska, coû vede ke zlepöenÌ jejich parametr˘,
ner·tor hodinovÈho sign·lu a takÈ pamÏù i V/V br·ny v rozsahu
zejmÈna p¯esnosti a stability. Princip a praktickÈ vyuûitÌ tÏchto
umoûÚujÌcÌm alespoÚ v malÈ m̯e samostatnou Ëinnost. JedsouË·stek vöak z˘st·v· v podstatÏ stejn˝ a elektronik, kter˝
nÌm z prvnÌch monolitick˝ch mikropoËÌtaˢ byl jiû v roce 1977
jednou pochopÌ jejich podstatu a nauËÌ se s tÏmito souË·stkaosmibitov˝ typ 8048. Jeho koncepce byla natolik zda¯il·, ûe se
mi pracovat, vystaËÌ se sv˝mi znalostmi po dlouhou dobu. Nastal jak˝msi standardem, ze kterÈho
proti tomu oblast v˝voje integrovan˝ch obvod˘ p¯in·öÌ kaûdobyla odvozena ¯ada typ˘ osmibitov˝ch monolitick˝ch mikdennÌ zmÏny, kdy mezi dnes jiû nesËetn· mnoûstvÌ typ˘ interopoËÌtaˢ. Jedn· se zejmÈna o ¯adu 8051, kter· i dnes pat¯Ì k
grovan˝ch obvod˘ p¯ib˝vajÌ dalöÌ s nov˝mi funkcemi, niûöÌ
nejrozö̯enÏjöÌm mikroprocesor˘m u n·s i ve svÏtÏ. Z tÈto ¯ady
spot¯ebou a vyööÌ spolehlivostÌ. Tento trend je patrn˝ i u intevych·zÌ i skupina mikropoËÌtaˢ zn·m˝ch jako ATMEL, kter˝m
grovan˝ch obvod˘ s velkou a velmi velkou integracÌ (LSI a VLSI).
se budeme podrobnÏji vÏnovat v dalöÌch pokraËov·nÌch naöeTyto obvody obsahujÌ od tisÌce aû asi do miliÛnu tranzistor˘
ho kursu. V literatu¯e se Ëasto objevuje oznaËenÌ mikro¯adiË,
integrovan˝ch na jedinÈm k¯emÌkovÈm Ëipu. Mezi tyto obvody
protoûe monolitickÈ mikropoËÌtaËe se Ëasto pouûÌvajÌ ve funkci
pat¯Ì vedle pamÏùov˝ch souË·stek zejmÈna monolitickÈ mikro¯adiËe v za¯ÌzenÌch, kter· ¯ÌdÌ. N·zev mikro¯adiË budeme spolu
poËÌtaËe.
s n·zvem monolitick˝ mikropoËÌtaË pouûÌvat pro oznaËenÌ tÈto
Obor mikropoËÌtaˢ je v nep¯etrûitÈm v˝voji podmÌnÏnÈm pouniverz·lnÌ souË·stky i my.
kroky v˝robnÌ technologie obvod˘ LSI, rozvojem teorie i techV˝robou monolitick˝ch mikropoËÌtaˢ se dnes zab˝v· cel·
niky programov·nÌ a rozöi¯ov·nÌm aplikaËnÌch oblastÌ.
¯ada svÏtov˝ch v˝robc˘. V souËasnosti jsou k dispozici jak klaV d˘sledku toho jeötÏ nenÌ zcela ust·lenÈ n·zvoslovÌ a definice
sickÈ 8-bitovÈ, tak i 16-ti a 32bitovÈ mikro¯adiËe. PoËet bit˘ zde
nÏkter˝ch pojm˘. Mezi nejzn·mÏjöÌ pojmy uûÌvanÈ v mikroprovyjad¯uje ö̯ku toku dat neboli ö̯ku sbÏrnice. Jedn· se tedy o
poËet bit˘, kterÈ se po datovÈ sbÏrnici p¯en·öejÌ souËasnÏ. Z·kladnÌ vlastnostÌ
mikro¯adiˢ je jejich programovatelnost. To umoûÚuje
realizaci za¯ÌzenÌ, kterÈ se
p¯i shodnÈm obvodovÈm
zapojenÌ mohou vyuûÌvat
pro r˘znÈ ˙Ëely podle programu, kter˝ jejich Ëinnost
¯ÌdÌ. Program je vûdy uloûen
v pamÏti, kter· m˘ûe b˝t
souË·stÌ Ëipu, ale velmi Ëasto je umÌstÏna mimo Ëip v
Obr. 1 ñ ZjednoduöenÈ schÈma procesoru podle J. von Neumanna
samostatnÈm pamÏùovÈm
cesorovÈ technice pat¯Ì beze sporu mikroprocesor, kter˝ je z·obvodu. V˝kon mikro¯adiËe ovlivÚujÌ v˝raznou mÏrou jeho intekladnÌ souË·stkou v poËÌtaËi. Jedn· se o velmi sloûit˝ integrogrovanÈ periferie. BÏûnÈ jsou ËasovacÌ systÈmy, kterÈ jsou vyvan˝ obvod, kter˝ m· pomÏrnÏ univerz·lnÌ strukturu a umoûÚuje
baveny nÏkolika ËÌtaËi/ËasovaËi a mohou nap¯. mϯit dobu trv·prov·dÏt p¯edevöÌm aritmetickÈ a logickÈ operace. Pro svou
nÌ vnÏjöÌch ud·lostÌ, poËÌtat impulsy, spouötÏt vnÏjöÌ i vnit¯nÌ
Ëinnost musÌ b˝t mikroprocesor doplnÏn dalöÌmi souË·stkami.
procesy, generovat ö̯kovÏ modulovanÈ sign·ly Ëi spouötÏcÌ
Kaûd˝ v˝robce mikroprocesor˘ nabÌzÌ i ucelenÈ soubory souimpulsy pro polovodiËov˝ mÏniË a to vöe bez ˙Ëasti centr·lË·stek, urËenÈ pro konstrukci za¯ÌzenÌ s urËit˝m mikroprocesonÌ procesorovÈ jednotky (CPU) mikro¯adiËe.
rem. Jsou to tzv. mikropoËÌtaËovÈ sady, kterÈ obsahujÌ p¯edePro mϯenÌ analogov˝ch sign·l˘ jsou mikropoËÌtaËe vybavöÌm pamÏùovÈ souË·stky, gener·tory hodinov˝ch sign·l˘, buvov·ny p¯evodnÌky A/D a D/A. Standardem je osmi aû dvan·cdiËe sbÏrnic, registry a dalöÌ obvody. Mezi dnes jiû klasickÈ
tibitov˝ A/D p¯evodnÌk s postupnou aproximacÌ a s osmi aû öestmikropoËÌtaËovÈ sady pat¯Ì nap¯. sada MCS-86 s mikroprocen·cti multiplexovan˝mi vstupy. Doba p¯evodu se pohybuje od
sorem 8086.
5 do 15 µs. Pro ¯ÌzenÌ v re·lnÈm Ëase je nezbytn˝ v˝konn˝ sysDalöÌm pojmem je mikropoËÌtaË. Je to sekvenËnÌ automat s
tÈm obsluhy p¯eruöenÌ. MikropoËÌtaËe dnes mohou p¯ijÌmat û·jednÌm nebo nÏkolika mikroprocesory, s pamÏtÌ a obvody pro
dosti o p¯eruöenÌ od desÌtek internÌch a externÌch zdroj˘ a progravstup a v˝stup. Tato definice ovöem nem· univerz·lnÌ platnost.
m·tor m˘ûe jednotliv˝m zdroj˘m û·dostÌ o p¯eruöenÌ p¯i¯azovat
mikropoËÌtaˢ
r˘znou prioritu.
a mÌt z·kladnÌ
Velmi d˘leûip¯ehled o tom,
tÈ je vybavenÌ
co tyto prvky
mikropoËÌtaˢ
umoûÚujÌ.
sÈriov˝m rozZvl·dnutÌ prohranÌm s moûblematiky miknostÌ
synropoËÌtaˢ vychronnÌ i asynûaduje nejen
chronnÌ plnÏ
d˘kladnou
duplexnÌ sÈrioznalost analovÈ komunikagovÈ a ËÌslicoce. SÈriov· kovÈ techniky, ale
munikace se
i dobrou ˙ropouûÌv· k proObr. 2 ñ ZjednoduöenÈ schÈma procesoru podle harwardskÈ koncepce
veÚ znalostÌ z
pojenÌ vÌce mioblasti programov·nÌ. Dnes jiû klasickÈ programov·nÌ monolikropoËÌtaËov˝ch systÈm˘ vz·jemnÏ, kdy vÏtöinou je jeden ze
tick˝ch mikropoËÌtaˢ na ˙rovni jazyka symbolick˝ch adres (nÏsystÈm˘ ¯ÌdicÌ (Master) a ostatnÌ jsou pod¯ÌzenÈ (Slave). Velmi
kdy naz˝van˝m tÈû assembler), ustupuje trendu vyuûÌv·nÌ inteËastÈ je takÈ p¯ipojenÌ mikropoËÌtaËovÈho systÈmu k bÏûnÈmu
grovan˝ch v˝vojov˝ch prost¯edÌ s p¯ekladaËi jazyk˘ Pascal a
poËÌtaËi p¯es sÈriovÈ rozhranÌ RS232 a nebo RS485 v p¯ÌpadÏ
C.
vyööÌch n·rok˘ na vzd·lenost a spolehlivost komunikace. MikMonolitickÈ mikropoËÌtaËe m˘ûeme dÏlit podle jejich konroprocesorov˝ systÈm pak m˘ûe b˝t ovl·d·n p¯Ìmo z poËÌtaËe
cepce na dvÏ skupiny. Koncepce podle von Neumana (obr.1)
a rovnÏû p¯en·öet namϯen· data do poËÌtaËe k dalöÌmu zprap¯edpokl·d· umÌstÏnÌ programu i dat v jednom spoleËnÈm pacov·nÌ.
mÏùovÈ prostoru. PouûÌv· se p¯edevöÌm u univerz·lnÌch v˝poV dneönÌ dobÏ jsou v pr˘myslu Ëasto zav·dÏny systÈmy pro
ËetnÌch systÈm˘, u kter˝ch nenÌ d·n pevn˝ pomÏr mezi rozsamonitorov·nÌ a ¯ÌzenÌ technologick˝ch proces˘. BÏûnÈ je pouhem programu a dat. Procesor m· k dispozici pouze jednu
ûitÌ samostatn˝ch (distribuovan˝ch) mikropoËÌtaËov˝ch systÈmnoûinu adres a program·tor m˘ûe vytvo¯it program, kter˝ se
m˘, kterÈ jsou umÌstÏny p¯Ìmo na poûadovan˝ch mÌstech v techs·m modifikuje v pr˘bÏhu v˝poËetnÌho procesu. Podle Von NenologickÈm procesu, kde probÌh· mϯenÌ teplot, tlak˘, odbÏru
umannovy koncepce se stavÏjÌ tÈmϯ vöechny vÏtöÌ poËÌtaËe a
energie a dalöÌch veliËin. DistribuovanÈ systÈmy mohou takÈ
takÈ univerz·lnÌ mikroprocesory a mikropoËÌtaËe. Nenechme se
¯Ìdit dÌlËÌ technologickÈ procesy. Vöechny mikroprocesorovÈ
zm·st tÌm, ûe v mnoha mikropoËÌtaËÌch jsou programy uloûeny
systÈmy jsou pak propojeny vhodnou pr˘myslovou sbÏrnicÌ
v pevnÈ pamÏti, do kterÈ procesor nem˘ûe zapisovat. V tÏchto
(RS485, CAN apod.) s centr·lnÌm poËÌtaËem, kterÈmu posÌlajÌ
p¯Ìpadech nenÌ dÏlenÌ pamÏti na Ë·st ROM a Ë·st RWM p¯edurnamϯen· data. Na poËÌtaËi pak probÌh· vizualizace celÈho techËeno procesorem, ale uûivatelem poËÌtaËe. Ten obvykle volÌ
nologickÈho procesu nejËastÏji pod operaËnÌm systÈmem WinpamÏù ROM pro program jen pro dosaûenÌ energetickÈ nez·dows.
vislosti, ale m· moûnost nahradit ROM na tÏchto adres·ch paDalöÌ vstupy a v˝stupy mikro¯adiËe p¯edstavujÌ paralelnÌ br·ny
mÏtÌ RWM a naopak.
se z·chytn˝mi a udrûovacÌmi registry. Obvykle je moûnÈ individuHarwardsk· koncepce (obr.2) naopak p¯edpokl·d· existenci
·lnÏ zapisovat a ËÌst jednotlivÈ bity tÏchto bran. NÏkterÈ typy
dvou oddÏlen˝ch pamÏtÌ ñ jednÈ jen pro uloûenÌ programu a
mikro¯adiˢ dovolujÌ zatÌûit jejich v˝stupy proudem aû 20 mA a
druhÈ jen pro promÏnn· data, p¯iËemû je strukturou procesoru
umoûÚujÌ tak i p¯ÌmÈ p¯ipojenÌ diod nebo zobrazovaˢ typu LED.
i charakterem jeho instrukËnÌho souboru vylouËeno vyuûÌvat obÏ
Mezi pouûÌvanÈ Ë·sti mikro¯adiˢ pat¯Ì takÈ vnit¯nÌ pamÏti dat
pamÏti jinak. OddÏlenÈ pamÏti umoûÚujÌ pouûÌt rozdÌlnou dÈlku
typu EEPROM, hlÌdacÌ obvody typu WDOG, obvody re·lnÈho Ëasu,
slova pro zpracov·van· data a pro program.
obvody pro generov·nÌ PWM sign·l˘ atd. MikropoËÌtaËe jsou dnes
Zvl·ötnÌ pozici mezi p¯edeöl˝mi koncepcemi zaujÌm· princip
aû na v˝jimky vyr·bÏny technologiÌ CMOS a mohou p¯ech·zet
tzv. z·sobnÌkovÏ orientovanÈho procesoru. V mikropoËÌtaËovÈ
do ˙sporn˝ch reûim˘. V klidovÈm stavu (Idle) je CPU odpojena
technice se takto koncipujÌ zejmÈna matematickÈ koprocesory
od sbÏrnice a spot¯eba kles· na jednotky mA. V z·loûnÌm reûimu
a monolitickÈ mikropoËÌtaËe navrhovanÈ speci·lnÏ pro stavbu
(Power down) se zastavÌ hodinov˝ kmitoËet a udrûuje se pouze
procesorov˝ch polÌ.
obsah pamÏti dat. Spot¯eba klesne na jednotky µA.
MonolitickÈ mikropoËÌtaËe p¯edstavujÌ perspektivnÌ odvÏtvÌ
MonolitickÈ mikropoËÌtaËe se dnes pouûÌvajÌ pro velkÈ mnoûËÌslicovÈ techniky, kterÈ v souvislosti z obrovsk˝m technicstvÌ v˝robk˘ spot¯ebnÌ i pr˘myslovÈ elektrotechniky. Najdeme
k˝m rozvojem nab˝v· na v˝znamu. I kdyû ¯ada sloûit˝ch aplije v televizoru, fotoapar·tu, poËÌtaËovÈ tisk·rnÏ, telefaxu, v mÏkacÌ vyûaduje nasazenÌ 32bitov˝ch rychl˝ch mikro¯adiˢ a n·¯ÌcÌch a regulaËnÌch p¯ÌstrojÌch, v automobilovÈm pr˘myslu a v
vrh mikropoËÌtaËov˝ch systÈm˘ s tÏmito mikro¯adiËi je z·leûi¯adÏ dalöÌch aplikacÌ. Mezi nejzn·mÏjöÌ v˝robce mikropoËÌtaˢ
tostÌ t˝mu profesion·l˘, tak lze najÌt celou ¯adu oblastÌ, kde
pat¯Ì Intel s ¯adou MCS-48, MCS-51 a MCS-96, d·le je to Motozcela postaËÌ i 8bitovÈ mikro¯adiËe. S nÌzk˝mi cenov˝mi n·rola s ¯adami 68HC05, 68HC11 a 68HC16. Velmi popul·rnÌ jsou
klady a na profesion·lnÌ ˙rovni tak mohou i jednotlivci navrhomikropoËÌtaËe ¯ady PIC od firmy Microchip a rovnÏû mikropoËÌvat inteligentnÌ elektronick· za¯ÌzenÌ.
taËe v˝robce Atmel, kter˝m budou vÏnov·ny dalöÌ Ë·sti tohoto
kursu. MikropoËÌtaËe Atmel vych·zÌ z ¯ady 8051 a jejich hlavnÌ
p¯ednostÌ je nov˝ druh programovÈ pamÏti typu Flash PEROM
(Programmable and Erasable Read Only Memory). Tato pamÏù
je umÌstÏna p¯Ìmo na Ëipu a programuje se elektricky bez pomoci ultrafialovÈho svÏtla na rozdÌl od p¯edchozÌch typ˘ obvoZ·kladnÌ strukturu monolitickÈho mikropoËÌtaËe lze rozdÏd˘ ¯ady 51 s pamÏtÌ EEPROM.
lit na t¯i Ë·sti ñpamÏù, procesorovou Ë·st a obvody vstupu/v˝Konstruktȯi elektronick˝ch za¯ÌzenÌ pro dom·cnosti i pro pr˘stupu. Tyto Ë·sti jsou spolu propojeny sbÏrnicemi, kterÈ dÏlÌme
mysl se v dneönÌ dobÏ jiû musÌ velmi dob¯e orientovat v oblasti
na adresovou, datovou a ¯ÌdicÌ. Adresov· a datov· sbÏrnice b˝-
Struktura monolitického
mikropoèítaèe
duch˝ch program·torech urËen˝ch pro dan˝ typ mikro¯adiËe. Vzhledem k vyööÌ cenÏ se mikropoËÌtaËe s tÏmito
pamÏtmi pouûÌvajÌ pro v˝voj nebo v˝robu mal˝ch sÈriÌ.
Pro st¯ednÌ sÈrie v˝roby jsou vhodnÈ pamÏti OTP (One
Time Programmable), kterÈ jsou zapouzd¯eny do plastovÈho pouzdra a nelze je po naprogramov·nÌ smazat. V˝vojovÏ nejmladöÌ je elektricky mazateln· pamÏù EEPROM
(Electrically Erasable Programmable Read Only Memory). Obsah tÈto pamÏti se maûe elektrick˝mi impulsy. Na
rozdÌl od pamÏti EPROM nenÌ nutnÈ p¯i maz·nÌ zruöit obsah celÈ pamÏti. U monolitick˝ch mikropoËÌtaˢ zatÌm
nedosahujÌ pamÏti EEPROM takov˝ch kapacit jako pamÏti EPROM (max. jednotky KB) a proto se vÏtöinou pouûÌvajÌ pro ukl·d·nÌ kalibraËnÌch konstant, bezpeËnostnÌch kÛd˘ apod. U mikro¯adiˢ ¯ady Atmel je pouûita pamÏù typu Flash PEROM (Programmable and Erasable
Read Only Memory).
Obvody vytv·¯ejÌcÌ rozhranÌ mezi mikropoËÌtaËov˝m
j·drem (tj. procesorem a pamÏtmi) a jeho okolÌm se naz˝vajÌ obvody vstupu a v˝stupu nebo perifernÌ obvody.
Obr. 3 ñ BlokovÈ schÈma procesorovÈ Ë·sti mikropoËÌtaËe
NejjednoduööÌ a nejËastÏji pouûÌvanÈ rozhranÌ pro vstup
a v˝stup informacÌ je u monolitick˝ch mikropoËÌtaˢ pavajÌ nÏkdy zË·sti Ëi ˙plnÏ multiplexnÌ. D·le je zde ¯ada menöÌch
ralelnÌ br·na (port). Br·na m· obvykle osm jednobitov˝ch v˝blok˘, kterÈ b˝vajÌ propojeny r˘zn˝m zp˘sobem v z·vislosti na
vod˘, ze kter˝ch lze souËasnÏ ËÌst nebo na nÏ zapsat informaci
typu mikropoËÌtaËe.
s logickou ˙rovnÌ 0 nebo 1. S br·nou je moûnÈ pracovat jako s
J·drem monolitickÈho mikropoËÌtaËe je procesorov· jedcelkem, tzn. ËÌst nebo zapisovat vöech osm bit˘ nebo pracovat
notka (obr. 3), kter· obsahuje ¯adiË, aritmeticko logickou jeds jednotliv˝mi bity samostatnÏ, pokud to struktura danÈho minotku (ALU), programov˝ ËÌtaË a dalöÌ Ë·sti.
kro¯adiËe umoûÚuje. U mnoha mikro¯adiˢ je moûnÈ nastavit
ÿadiË ¯ÌdÌ vykon·v·nÌ operacÌ a chod celÈho procesoru podle
samostatnÏ smÏr p¯enosu jednotliv˝ch bitov˝ch v˝vod˘ a tak
instrukcÌ programu. N·zvem ¯adiË se takÈ oznaËuje libovoln˝
m˘ûe br·na mÌt nap¯Ìklad 3 vstupnÌ a 5 v˝stupnÌch v˝vod˘. NÏautomat, kter˝ ¯ÌdÌ Ëinnost i nÏkter˝ch jin˝ch Ë·stÌ neû je procekterÈ v˝vody mÌvajÌ i vÌce funkcÌ a uûivatel pak p¯i psanÌ prograsor, pokud je ¯ÌdÌ dostateËnÏ samostatnÏ. P¯Ìkladem je automu urËÌ, jak˝m zp˘sobem se bude v˝vod pouûÌvat. NejËastÏji
nomnÌ ¯adiË diskovÈ pamÏti. ÿadiË pot¯ebuje pro svou Ëinnost
jsou pouûÌv·ny funkce pro vstup externÌch p¯eruöenÌ, funkce
nÏkolik dalöÌch Ë·stÌ. P¯edevöÌm je to registr instrukcÌ, kter˝
ËÌtaˢ nebo funkce sÈriovÈho rozhranÌ. Obvody vstupu a v˝stupu
uchov·v· operaËnÌ kÛd pr·vÏ vykon·vanÈ instrukce po dobu
mÌvajÌ r˘znÈ zapojenÌ a proto jej v˝robci Ëasto uve¯ejÚujÌ spolu
jejÌho prov·dÏnÌ. V˝stupy registru jsou p¯ipojeny do dekodÈru
s elektrick˝mi parametry, aby n·vrh·¯ mohl propojit mikro¯adiË
instrukce, kter˝ obsah registru dekÛduje a generuje ¯ÌdicÌ signejvhodnÏjöÌm zp˘sobem s dalöÌmi elektrick˝mi obvody.
n·ly pro ¯adiË a ALU. Blok ALU tvo¯Ì kombinaËnÌ logickÈ obvoDalöÌ popis jiû bude vych·zet ze struktury mikropoËÌtaˢ ¯ady
dy, kterÈ m˘ûe ¯adiË aktivovat pro nÏkterou z logick˝ch funkcÌ
51, do kterÈ pat¯Ì i mikropoËÌtaËe Atmel. Ty jsou s ¯adou 51
dostupn˝ch v danÈm instrukËnÌm souboru p¯ÌsluönÈho mikrov˝vodovÏ i programovÏ kompatibilnÌ a umoûÚujÌ tÌm p¯evzetÌ
¯adiËe. Tyto funkce jsou prov·dÏny s jednÌm nebo dvÏma (i vÌce)
vöech zkuöenostÌ zÌskan˝ch s ¯adou 51. Ani v˝voj·¯i, kte¯Ì se
operandy. P¯ivedenÌ spr·vn˝ch operand˘ na vstup ALU a ulodoposud zab˝vali pouze mikropoËÌtaËi ¯ady 48 nep¯ijdou zkr·tûenÌ v˝sledku zajiöùuje podle dekÛdovanÈ instrukce ¯adiË.
ka. ÿada 51 je totiû v˝vojov˝m pokraËov·nÌm ¯ady 48 a z·kladProgramov˝ ËÌtaË obsahuje adresu pr·vÏ prov·dÏnÈ instruknÌ struktury mikropoËÌtaˢ obou ¯ad i jejich instrukËnÌ soubory
ce, kter· je uloûen· v pamÏti programu. P¯i bÏûnÈ Ëinnosti
programu je obsah programovÈho ËÌtaËe vûdy o jednu adresu
vyööÌ neû p¯edch·zejÌcÌ adresa. V˝jimkou jsou skokovÈ
instrukce, pro kterÈ sign·ly z ¯adiËe neinkrementujÌ ËÌtaË,
ale dojde k p¯enesenÌ novÈ adresy do programovÈho ËÌtaËe.
Podle v˝sledku ukonËenÈ operace se mohou nastavit tzv.
p¯ÌznakovÈ bity, seskupenÈ do p¯ÌznakovÈho registru. Tyto
bity signalizujÌ nap¯. zda p¯i provedenÈ operaci doölo ve v˝sledku k p¯enosu p¯es rozsah registru nebo zda je v˝sledek
roven nule apod. NastavenÈ p¯ÌznakovÈ bity jsou pak nejËastÏji vyuûÌv·ny instrukcemi pro vÏtvenÌ programu.
PamÏùov˝ podsystÈm je dalöÌ d˘leûitou souË·stÌ monolitickÈho mikropoËÌtaËe. SlouûÌ jednak pro uloûenÌ programu
a rovnÏû pro uchov·nÌ zpracov·van˝ch dat. PamÏù mikroprocesor˘ ¯ady 51 m· harvardskou koncepci, protoûe pamÏù programu je oddÏlena od pamÏti dat. PamÏù programu
m· obvykle velikost v jednotk·ch aû desÌtk·ch KB (kilobyte)
a m˘ûe b˝t umÌstÏna jak p¯Ìmo na Ëipu, tak i mimo mikro¯adiË. Tato pamÏù je energeticky nez·visl· a po naprogramov·nÌ uchov·v· trvale sv˘j obsah.
Mezi nejpouûÌvanÏjöÌ typy pamÏtÌ programu pat¯Ì zejmÈna pamÏù oznaËovan· ROM (Read Only Memory), kter· je
naprogramovan· p¯Ìmo ve v˝robÏ pomocÌ masky. PozdÏjöÌ
zmÏna obsahu pamÏti nenÌ moûn· a proto se pouûÌv· zejmÈna p¯i sÈriovÈ produkci. PamÏù typu EPROM (Erasable
Programmable Read Only Memory) je mazateln· pomocÌ ultrafialovÈho svÏtla. JejÌ programov·nÌ se prov·dÌ na jednoObr. 4 ñ P¯ehlednÈ blokovÈ schÈma mikropoËÌtaˢ ¯ady 51
jsou velmi podobnÈ.
P¯ehlednÈ blokovÈ schÈma mikroPoËÌtaËov· pamÏù ñ z·kladnÌ jednotky:
poËÌtaˢ ¯ady 51 je zn·zornÏno na
obr. 4. Blok CPU (Central Procesor Unit)
Bit [b] ñ zkratka anglickÈho binary digit, neboli dvojkov· ËÌslice. Jedn· se o nejmenöÌ Ë·steËku
je procesorov· jednotka, se kterou jsme
poËÌtaËovÈ pamÏti, kter· m˘ûe obsahovat pr·vÏ jen jednu dvojkovou ËÌslici 0 nebo 1.
se blÌûe sezn·mili v p¯edchozÌch odByte nebo Bajt [B] ñ osm bit˘. JednÌm bajtem lze vyj·d¯it ËÌslo v rozsahu 0 ñ 255 nebo (obvykle)
jeden znak textu. Je to z·kladnÌ jednotka pro mϯenÌ velikosti pamÏti poËÌtaËe.
stavcÌch. Blok oscil·toru a Ëasov·nÌ
Kilobyte [KB] ñ pokud je pamÏti vÌce a bajt nestaËÌ, pouûÌv· se tato jednotka. Pozor! Jeden kilobajt
zajiöùuje p¯edevöÌm z·kladnÌ Ëasovou
nenÌ 1000, ale 1024 bajt˘. 1024 je totiû ËÌslo nejbliûöÌ tisÌcovce, kterÈ je celoËÌselnou mocninou dvou
z·kladnu pro synchronizovanÈ prov·(210=1024 ñ tento poËet kombinacÌ tedy vyj·d¯Ìme pr·vÏ deseti bity). Proto je takÈ ve znaËce velkÈ K,
dÏnÌ vöech operacÌ v mikropoËÌtaËi. Pro
ne malÈ.
zajiötÏnÌ minim·lnÌho poËtu vnÏjöÌch
Megabajt [MB] ñ jeötÏ vÏtöÌ jednotka: 1024 KB, tedy 1 048 576 B.
souË·stek p¯ipojovan˝ch k mikropoËÌtaËi je obvod ËasovacÌho gener·toru integrov·n p¯Ìmo na Ëip. Ke dvÏma v˝vod˘m mikropoËÌtaËe se
cÌho registru. P¯ijÌmacÌ a vysÌlacÌ registry sÈriovÈho portu jsou
pak p¯ipojuje krystal s dvojicÌ keramick˝ch kondenz·tor˘. RedostupnÈ jako registr speci·lnÌch funkcÌ SBUF. Z·pisem do
zonanËnÌ kmitoËet krystalu musÌ vyhovovat hodnot·m povoleSBUF se plnÌ vysÌlacÌ registr a ËtenÌm SBUF se Ëte fyzicky odn˝m v˝robcem mikropoËÌtaËe. U obvod˘ vyroben˝ch technolodÏlen˝ p¯ijÌmacÌ registr. SÈriov˝ port m˘ûe pracovat celkem ve
giÌ CMOS, mezi kterÈ pat¯Ì i mikropoËÌtaËe Atmel, je proudov·
Ëty¯ech r˘zn˝ch reûimech. NejpouûÌvanÏjöÌ je reûim 1, kdy se
spot¯eba z·visl· na taktovacÌm kmitoËtu a roste se vzr˘stajÌcÌm
vysÌl· deset bit˘ (p¯es öpiËku TxD) a p¯ijÌm· se deset bit˘ (p¯es
kmitoËtem.
öpiËku RxD). Form·t p¯en·öenÈho bytu je jeden start bit (logicPamÏù programu je oddÏlena od pamÏti dat a m˘ûe mÌt
k· hodnota 0), osm datov˝ch bit˘ (nejmÈnÏ v˝znamnÈ bity jako
rozsah aû 64 KB. NejniûöÌ 4KB (8 KB pro typ 8052) mohou b˝t
prvnÌ) a stop bit (logick· hodnota 1). P¯enosov· rychlost je z·umÌstÏny na Ëipu, zb˝vajÌcÌ pak musÌ b˝t umÌstÏny mimo mikrovisl· na frekvenci oscil·toru a na hodnotÏ konstanty gener·to¯adiË. PamÏù dat je typu RWM ñRAM a jejÌ rozsah vnÏ Ëipu m˘ûe
ru p¯enosovÈ rychlosti.
b˝t aû 64 KB. P¯Ìmo na Ëipu je 128 Byt˘ (256 Byt˘ pro 8052)
P¯eruöenÌ je velmi d˘leûitou souË·stÌ struktury monoliticvnit¯nÌ pamÏti dat a navÌc urËit˝ poËet registr˘ speci·lnÌch
k˝ch mikropoËÌtaˢ. Aplikace zpracov·vajÌcÌ ˙lohy v re·lnÈm
funkcÌ (SFR ñ Special Function Registers).
Ëase vyûadujÌ velmi rychlÈ odezvy na asynchronnÏ vznikajÌcÌ
Blok 16-ti bitov˝ch Ëasovaˢ/ËÌtaˢ obsahuje dva öestn·cud·losti. Toto zajiöùuje p¯eruöovacÌ podsystÈm, kter˝ detekuje
tibitovÈ registry s funkcÌ Ëasovaˢ/ËÌtaˢ (obvody 8052 majÌ t¯i
vznik poûadavku na obsluhu p¯eruöenÌ a provede p¯ed·nÌ protyto registry). Kaûd˝ z tÏchto registr˘ m˘ûe pracovat jako ËagramovÈho ¯ÌzenÌ na speci·lnÌ podprogram zajiöùujÌcÌ prograsovaË nebo jako ËÌtaË vnÏjöÌch ud·lostÌ. Ve funkci ËasovaËe se
movÈ obslouûenÌ vzniklÈ ud·losti. Po ukonËenÌ obsluûnÈho podobsah registru zvyöuje p¯i kaûdÈm strojovÈm cyklu, lze tedy o
programu se ¯ÌzenÌ vr·tÌ do p˘vodnÌho programu na mÌsto, kde
nÏm hovo¯it jako o ËÌtaËi strojov˝ch cykl˘. Protoûe jeden strobyl tento program p¯eruöen. Obvody 8051 majÌ pÏt zdroj˘ p¯ejov˝ cyklus obsahuje 12 period oscil·toru, je rychlost p¯iËÌt·nÌ
ruöenÌ, obvody 8052 pak o jeden vÌce. VnÏjöÌ p¯eruöenÌ INT0 a
rovna 1/12 frekvence oscil·toru. Ve funkci ËÌtaËe vnÏjöÌch ud·INT1 se mohou vyvolat buÔ logickou ˙rovnÌ nebo zmÏnou lolostÌ se obsah registru zvyöuje p¯i p¯echodu sign·lu z logickÈ
gickÈ ˙rovnÏ. P¯eruöenÌ od ËasovaËe 0 a ËasovaËe 1 se vyhodnoty 1 do logickÈ hodnoty 0 na odpovÌdajÌcÌ vnÏjöÌ öpiËce
vol·vajÌ sign·ly TF0 a TF1, kterÈ se nastavÌ do logickÈ ˙rovnÏ 1,
T0, T1 anebo u obvodu 8052 i na öpiËce T2.
kdyû p¯eteËou odpovÌdajÌcÌ registry Ëasovaˢ/ËÌtaˢ. P¯eruöeBlok ¯ÌzenÌ 64 KB sbÏrnice zajiöùuje styk s vnÏjöÌ pamÏtÌ a
nÌ od sÈriovÈho portu se nastavuje p¯i p¯Ìjmu uprost¯ed interto buÔ s vnÏjöÌ pamÏtÌ programu nebo vnÏjöÌ pamÏtÌ dat. K tovalu stop bitu nebo p¯i vysÌl·nÌ na zaË·tku stop bitu. Obvody
muto ˙Ëelu pak slouûÌ v˝vody PSEN, RD a WR. Pro bÏûnÈ apli8052 majÌ navÌc jeötÏ p¯eruöenÌ od ËasovaËe 2.
kace vöak vystaËÌ pamÏù programu a dat na Ëipu mikropoËÌtaKaûd˝ zdroj p¯eruöenÌ se m˘ûe samostatnÏ programovat do
Ëe.
jednÈ ze dvou ˙rovnÌ priority. P¯eruöenÌ s nÌzkou prioritou m˘ûe
Blok programovateln˝ch vstup˘/v˝stup˘ zahrnuje pro mib˝t samo p¯eruöeno p¯eruöenÌm s vysokou prioritou, ale ne p¯ekro¯adiËe 8051 a 8052 celkem Ëty¯i obousmÏrnÈ porty. Kaûd˝
ruöenÌm s nÌzkou prioritou. P¯eruöenÌ s vysokou prioritou neport tvo¯Ì z·chytnÈ klopnÈ registry, v˝stupnÌ budiËe a vstupnÌ
m˘ûe b˝t p¯eruöeno û·dn˝m jin˝m zdrojem p¯eruöenÌ. KaûdÈ z
vyrovn·vacÌ pamÏù. Porty 1, 2 a 3 majÌ vnit¯nÌ posilovacÌ obvop¯eruöenÌ se m˘ûe programovÏ povolit nebo zak·zat. NavÌc je
dy. Port 0 m· v˝stupy s otev¯en˝m kolektorem. Kaûd· linka V/V
moûno povolit nebo zak·zat vöechna povolen· p¯eruöenÌ soum˘ûe b˝t nez·visle pouûita jako vstup nebo v˝stup. P¯i vstupnÌ
ËasnÏ.
funkci portu musÌ b˝t tento port nastaven na logickou 1. Pokud
port pouûÌv·me pouze jako vstupnÌ, tak se o toto nastavenÌ nemusÌme starat, protoûe k nÏmu dojde automaticky p¯i resetu
(˙vodnÌ inicializaci po zapnutÌ nap·jenÌ) mikro¯adiËe. Pokud port
pouûÌv·me st¯ÌdavÏ jako vstupnÌ i v˝stupnÌ, musÌme na nÏj p¯ed
pouûitÌm pro vstup zapsat logickou 1.
MonolitickÈ mikropoËÌtaËe od americkÈho v˝robce Atmel
ProgramoCorp. vych·zÌ z rodiny mikro¯adiˢ 8051. Z·kladnÌ ¯ada AT89C
vateln˝ sÈrioobsahuje celkem Ëty¯i typy mikro¯adiˢ. AT89C1051 je umÌstÏn
v˝ port je plnÏ
ve 20-ti v˝vodovÈm pouzd¯e a obsahuje 1 kB reprogramovatelnÈ
duplexnÌ, takpamÏti (Flash PEROM), 64 byt˘ datovÈ pamÏti, 15
ûe m˘ûe vysÌprogramovateln˝ch I/O linek, jeden öestn·ctibitov˝ ËÌtaË a t¯i
lat a p¯ijÌmat
zdroje p¯eruöenÌ. Typ AT89C2051 m· na rozdÌl od p¯edchozÌho
souËasnÏ. M·
typu 2 kB Flash PEROM, 128 byt˘ datovÈ pamÏti, dva öestn·ctip¯Ìjem s vybitovÈ ËÌtaËe, pÏt zdroj˘ p¯eruöenÌ a programovateln˝ sÈriov˝
rovn·vacÌmi
kan·l. DalöÌm typem je AT89C51 se 40-ti v˝vody, 4 kB Flash
vlastnostmi,
PEROM a 32 programovateln˝mi I/O linkami. OstatnÌ parametry
to znamen·,
jsou v podstatÏ shodnÈ s p¯edchozÌm typem. PoslednÌm z ¯ady
ûe s p¯Ìjmem
AT89C je typ AT89C52 s 8 kB Flash PEROM, 256 byty datovÈ
druhÈho bytu
pamÏti, t¯emi 16bitov˝mi ËÌtaËi a osmi zdroji p¯eruöenÌ.
se m˘ûe zaÿada AT89C byla pozdÏji jeötÏ doplnÏna typem AT89S8252,
ËÌt d¯Ìve neû
kter˝ obsahuje navÌc 2 kB datovÈ pamÏti typu EEPROM,
byl odebr·n
Obr. 6 ñ ZapojenÌ v˝vod˘ mikro¯adiËe
programovateln˝ WatchDog ËasovaËi obvod a rozhranÌ typu SPI
pr·vÏ p¯ijat˝
AT89C2051
pro programov·nÌ mikro¯adiËe p¯Ìmo v systÈmu. Pro
byte z p¯ijÌma-
Technické vlastnocti øadièe
AT89C2051
programov·nÌ tohoto mikro¯adiËe nenÌ tedy nutnÈ pouûÌvat
samostatn˝ program·tor.
Pro ˙plnost se zmÌnÌm i o nejnovÏjöÌ ¯adÏ mikro¯adiˢ ATMEL
AT90S, kter· vyuûÌv· architekturu typu RISC. JejÌ typy jsou
zamÏnitelnÈ s typy ¯ady AT89C a vyznaËujÌ se zejmÈna vÏtöÌm
v˝konem. Hodinov˝ kmitoËet je odvozen˝ p¯Ìmo z kmitoËtu
oscil·toru, na Ëipu je navÌc umÌstÏna datov· pamÏù typu
EEPROM, programovateln˝ obvod watchdog a aû dva 10bitovÈ
kan·ly PWM. ÿada AT90S zahrnuje typy AT90S1300, AT90S2312
a AT90S8414.
V dalöÌ Ë·sti se budeme zab˝vat typem AT89C2051, kter˝
m· velmi p¯Ìzniv˝ pomÏr cena/v˝kon. Jedn· se o mikro¯adiË v
pouzd¯e DIP20 (SOIC20) s urËit˝mi ˙pravami ve vnit¯nÌm zapojenÌ
oproti klasickÈmu typu 8051. K dispozici jsou pouze v˝stupnÌ
br·na P1 a Ë·steËnÏ P3. VstupnÌ-v˝stupnÌ linka P3.6 nenÌ
zapojena, ale m· v mikro¯adiËi novou funkci. Na mÌstÏ tohoto
datovÈho bitu lze na adrese br·ny P3 p¯eËÌst stav v˝stupu
analogovÈho kompar·toru (viz obr. 5). Velikost pouzdra
p¯edurËuje AT89C2051 pro nasazenÌ v menöÌch a jednoduööÌch
aplikacÌch, kde vystaËÌme s pamÏtÌ programu do 2 kB. l p¯es
omezen˝ poËet v˝vod˘ z˘stal zachov·n sÈriov˝ kan·l a dva
16bitovÈ ËÌtaËe/ ËasovaËe.
ZapojenÌ v˝vod˘ mikro¯adiËe AT89C2051 je na obr. 6.
Nap·jecÌ v˝vody Vcc a GND umoûÚujÌ p¯ipojit nap·jecÌ napÏtÌ v
rozmezÌ od 2,7 V do 6,0 V pro mikro¯adiË s hodinovou frekvencÌ
12 MHz nebo v rozmezÌ 4,0 V aû 6,0 V pro mikro¯adiË s frekvencÌ
24 MHz. Port 1 s osmi v˝vody P1.0 aû P1.7 je obousmÏrn˝ a
umoûÚuje vstup i v˝stup. V˝vody P1.2 aû P1.7 majÌ vnit¯nÌ
kolektorovÈ rezistory s odporem nÏkolik desÌtek kW p¯ipojen˝m
na kladnÈ nap·jecÌ napÏtÌ. V˝vody P1.0 a P1.1 jsou s otev¯en˝m
kolektorem a lze je pouûÌt jako vstupy analogovÈho kompar·toru
(viz obr. 5). Port 1 se rovnÏû vyuûÌv· pro programov·nÌ a verifikaci
internÌ pamÏti programu.
Port 3 obsahuje sedm obousmÏrn˝ch v˝vod˘ s kolektorov˝mi
rezistory. ChybÏjÌcÌ osm˝ v˝vod P3.6 je p¯ipojen na v˝stup
analogovÈho kompar·toru, jak jiû bylo zmÌnÏno p¯i popisu obr.
5. PrvnÌch öest v˝vod˘ portu P3 m˘ûe mÌt takÈ dalöÌ funkce
uvedenÈ v tabulce 1. Port 3 se rovnÏû vyuûÌv· pro programov·nÌ
a verifikaci internÌ pamÏti programu. JednotlivÈ v˝vody obou
port˘ je moûno zatÌûit proudem aû 20 mA p¯i nÌzkÈ logickÈ ˙rovni.
Je tak moûnÈ p¯Ìmo budit diody LED nebo sedmisegmentovÈ
zobrazovaËe LED. Celkov˝ proud vöech v˝vod˘ nesmÌ ovöem
p¯ekroËit hodnotu 80 mA.
DalöÌm v˝vodem mikro¯adiËe AT89C2051 je RST. Jedn· se
o vstup sign·lu reset - nulov·nÌ, kter˝ slouûÌ k poË·teËnÌmu
nastavenÌ nÏkter˝ch vnit¯nÌch obvod˘ mikro¯adiËe. Nulov·nÌ se
prov·dÌ tak, ûe na v˝vodu RST musÌ b˝t p¯ipojena logick·
hodnota 1 nejmÈnÏ po dobu dvou strojov˝ch cykl˘ (tj. 24 period
oscil·toru). BÏhem nulov·nÌ jsou nastaveny vöechny I/O v˝vody na logickou hodnotu 1 a mohou se tedy ihned pouûÌvat
jako vstupy. Obsah vnit¯nÌ pamÏti RAM se funkcÌ nulov·nÌ
Obr. 5 ñ ZapojenÌ kompar·toru v AT89C2051
neovlivÚuje. P¯i zapnutÌ nap·jecÌho napÏtÌ ovöem nenÌ obsah
pamÏti RAM definov·n. Prakticky se funkce nulov·nÌ zajiöùuje
p¯ipojenÌm elektrolytickÈho kondenz·toru s kapacitou 10 µF mezi
v˝vod RST a kladnÈ nap·jecÌ napÏtÌ, a rezistoru s odporem 8,2
kW zapojenÈho mezi v˝vod RST a nulov˝ potenci·l (GND).
V˝vod XTAL1 je vstupem invertujÌcÌho zesilovaËe oscil·toru
a lze k nÏmu p¯Ìmo p¯ipojit externÌ hodinov˝ sign·l. »astÏjöÌ je
ovöem p¯ipojenÌ krystalu s rezonanËnÌm kmitoËtem max. 24
MHz mezi v˝vody XTAL1 a XTAL2, ke kter˝m se d·le p¯ipojÌ dva
keramickÈ kondenz·tory 33 pF spojenÈ s GND, jak je zn·zornÏno
na obr. 7. Oscil·tor budÌ vnit¯nÌ gener·tor hodin, kter˝ poskytuje
hodinovÈ sign·ly pro procesor.
»asov·nÌ vnit¯nÌch obvod˘ mikro¯adiËe vych·zÌ z
hodinovÈho kmitoËtu oscil·toru. Dvan·ct period oscil·toru
vytv·¯Ì strojov˝ cyklus, ve kterÈm je provedena jednocyklov·
instrukce. DvoucyklovÈ instrukce pot¯ebujÌ ke svÈmu provedenÌ
dva strojovÈ cykly. VÌce neû dva strojovÈ cykly pot¯ebujÌ pouze
dvÏ instrukce, a to instrukce MUL (Multiply - n·sobenÌ) a DIV
(Divide - dÏlenÌ). ObÏ vyûadujÌ Ëty¯i strojovÈ cykly. Na zaË·tku
kaûdÈho strojovÈho cyklu je operaËnÌ kÛd p¯enesen z pamÏti
programu, adresovanÈ ËÌtaËem programu PC do registru
instrukcÌ a je v nÏm uloûen po celou dobu trv·nÌ cyklu. V˝stupy
registru jsou pak zavedeny do dekodÈru instrukcÌ. Ten aktivuje
jednotlivÈ mikroinstrukce, kterÈ v ¯adiËi podmiÚujÌ generov·nÌ
¯ÌdicÌch sign·l˘ nebo se st·vajÌ souË·stÌ dat p¯en·öen˝ch vnit¯nÌ
sbÏrnicÌ. P¯i maxim·lnÌm hodinovÈm kmitoËtu 24 MHz trv· jeden
strojov˝ cyklus 0,5 µs. Znalost doby trv·nÌ cyklu a tÌm i doby
provedenÌ jednotliv˝ch instrukcÌ je d˘leûit· nap¯. p¯i generov·nÌ
Ëasov˝ch zpoûdÏnÌ programem.
D˘leûitou souË·stÌ vnit¯nÌ datovÈ pamÏti RAM je sada
speci·lnÌch funkËnÌch registr˘ (SFR}. K tÏmto registr˘m se
p¯istupuje prost¯ednictvÌm symbol˘, kterÈ jsou jednotliv˝m
registr˘m p¯i¯azeny. St¯adaË (ACC) je registr, kter˝ m· obvyklÈ
funkce st¯adaËe. V operandov˝ch Ë·stech instrukcÌ pro pr·ci
se st¯adaËem se oznaËuje pÌsmenem A. Registr B se uûÌv· p¯i
aritmetick˝ch operacÌch n·sobenÌ a dÏlenÌ. Pro ostatnÌ instrukce
se m˘ûe vyuûÌt jako jin˝ registr tzv. z·pisnÌkovÈ pamÏti. Ukazatel
z·sobnÌku (SP) m˘ûe ukazovat kamkoliv do vnit¯nÌ pamÏti RAM.
ProvedenÌm funkce RESET se nastavÌ obsah SP na hodnotu
07H. Ukazatel dat (DPTR) je tvo¯en dvÏma byty (DPH a DPL) a
uchov·v· 16-ti bitovou adresu. Porty (P1 a P3) jsou registry
obsahujÌcÌ z·chytnÈ klopnÈ obvody (latche) port˘ 1 a 3. StavovÈ
slovo programu (PSW) uchov·v· stavy nÏkter˝ch registr˘ a
klopn˝ch obvod˘, nastavovan˝ch vybran˝mi akcemi
mikro¯adiËe. Bit 7 stavovÈho slova m· symbol CY a jedn· se o
p¯Ìznak p¯enosu (Carry Flag). Bit 6 (AC - Auxiliary Carry Flag) je
p¯Ìznak pomocnÈho p¯enosu a uûÌv· se p¯i operacÌch s ËÌsly v
kÛdu BCD. Bit 5 (FO - Flag 0) je uûivatelsk˝ p¯Ìznak, jeho vyuûitÌ
je ponech·no na ˙vaze uûivatele. Bit 4 (RS1) a bit 3 (RSO) jsou
¯ÌdicÌ registry pro v˝bÏr sady registr˘. NastavujÌ a nulujÌ se
softwarovÏ a urËujÌ jednu ze Ëty¯ bank registr˘, kter· se bude
vyuûÌvat v danÈ Ë·sti programu. Bit 2 (OV Overfiow Flag) je p¯Ìznak p¯eteËenÌ, bit 1 nenÌ
vyuûit a bit O (P - Parity Flag) je p¯Ìznak parity
a indikuje lich˝ nebo sud˝ poËet bit˘ ve
st¯adaËi, kterÈ obsahujÌ jedniËku. Vyrovn·vacÌ
pamÏù sÈriov˝ch dat (SBUF) tvo¯Ì ve
skuteËnosti dva oddÏlenÈ registry a to
vyrovn·vacÌ registr pro vysÌl·nÌ a vyrovn·vacÌ
registr pro p¯Ìjem. RegistrovÈ p·ry (TH0, TLO)
a(TH1, TL1) jsou öestn·ctibitovÈ ËÌtacÌ registry pro ËasovaËe/ËÌtaËe O a 1. Registry
speci·lnÌch funkcÌ IP, IE, TMOD, TCON a PCON
obsahujÌ ¯ÌdicÌ a stavovÈ bity pro p¯eruöovacÌ
systÈm, ËasovaËe/ËÌtaËe a sÈriov˝ port. Budou
pops·ny v Ël·ncÌch vÏnovan˝ch konkrÈtnÌmu
popisu aplikacÌ.
MikropoËÌtaË AT89C2051 obsahuje dva
pamÏùovÈ uzamykacÌ bity, kterÈ umoûÚujÌ
chr·nit vnit¯nÌ pamÏù programu p¯ed
neû·doucÌm ËtenÌm. Tyto bity mohou, ale
nemusÌ b˝t nastaveny na z·vÏr programov·nÌ
obvodu. Bit LB1 chr·nÌ pamÏù p¯ed dalöÌm
programov·nÌm, bit LB2 chr·nÌ pamÏù i proti ËtenÌ. Oba bity
mohou b˝t odstranÏny pouze ˙pln˝m vymaz·nÌm pamÏti.
V aplikacÌch, kde je kritick· spot¯eba energie, je moûnÈ pouûÌt
reûim Ëek·nÌ nebo reûim se snÌûenou spot¯ebou. Reûim Ëek·nÌ
(l dle Mode) se nastavuje bitem PCON.O do logickÈ hodnoty 1.
Hodinov˝ sign·l je odpojen od CPU, avöak nad·le se p¯iv·dÌ k
blok˘m p¯eruöenÌ, sÈriovÈho portu a Ëasovaˢ. Je zachov·n
˙pln˝ stav CPU: ukazatel z·sobnÌku, programov˝ ËÌtaË, stavovÈ
slovo programu, St¯adaË i vöechny ostatnÌ registry uchov·vajÌ
v reûimu Ëek·nÌ sv˘j obsah. äpiËky port˘ drûÌ svÈ logickÈ stavy.
Spot¯eba mikro¯adiËe kles· na 5 mA pro nap·jecÌ napÏtÌ 6 V a
kmitoËet 12 MHz nebo aû na 1 mA pro nap·jecÌ napÏtÌ 3 V, p¯i
kmitoËtu 12 MHz. ExistujÌ dva zp˘soby jak reûim Ëek·nÌ ukonËit.
é·dost o jakÈkoliv p¯edem povolenÈ p¯eruöenÌ zp˘sobÌ, ûe se
hardwarovÏ vynuluje bit PCON.O a tÌm se ukonËÌ reûim Ëek·nÌ.
Jin˝ zp˘sob, jak ukonËit reûim Ëek·nÌ, je vyuûitÌ hardwarovÈ
funkce nulov·nÌ. Protoûe oscil·tor hodin st·le bÏûÌ, staËÌ ke
kompletnÌmu nulov·nÌ vnit¯nÌch obvod˘, aby RESET trval pouze
dva strojovÈ cykly.
Reûim se snÌûenou spot¯ebou (Power Down Mode) se
nastavuje bitem PCON.1 na logickou hodnotu 1. V tomto reûimu
se oscil·tor umÌstÏn˝ na Ëipu zastavÌ a s nÌm se zastavÌ vöechny
funkce, avöak obsah pamÏti RAM a registr˘ speci·lnÌch funkcÌ
z˘st·v· zachov·n. V˝stupy port˘ takÈ zachov·vajÌ svÈ hodnoty.
Jedin˝m v˝chodiskem z reûimu se snÌûen˝m nap·jenÌm je
provedenÌ hardwarovÈ funkce nulov·nÌ (RESET). Tato funkce
znovu definuje obsah vöech registr˘ speci·lnÌch funkcÌ, avöak
nemÏnÌ obsah pamÏti RAM. NapÏtÌ se m˘ûe v tomto reûimu
snÌûit aû na 2 V p¯i odbÏru proudu pod 20 µA.
Naprogramov·nÌ mikropoËÌtaˢ
¯ady AT89 je pomÏrnÏ sloûitou z·leûitostÌ a nejlepöÌm ¯eöenÌm
je pouûÌt nÏkter˝ z dostupn˝ch program·tor˘ na naöem trhu.
Cel· ¯ada firem nabÌzÌ mikropoËÌtaËovÈ moduly, simul·tory,
program·tory vËetnÏ r˘znÈho p¯ÌsluöenstvÌ a softwarovÈho
vybavenÌ. Ceny se pohybujÌ ¯·dovÏ v nÏkolikatisÌcov˝ch sum·ch
a v nÏkter˝ch p¯Ìpadech (je-li program·tor schopen programovat
vÌce druh˘ obvod˘) se cena vyöplh· i p¯es deset tisÌc korun.
Programov·nÌ se pak skl·d· z nÏkolika krok˘. Nejprve je nutnÈ
napsat vlastnÌ program v jazyku symbolick˝ch adres
(assembleru) na poËÌtaËi PC. K psanÌ programu m˘ûeme vyuûÌt
nÏkter˝ z dostupn˝ch editor˘ pracujÌcÌch pod operaËnÌm
systÈmem DOS. M˘ûe to b˝t nap¯Ìklad editor z integrovanÈho
prost¯edÌ Borland Pascalu, kter˝ je pomÏrnÏ rozö̯en˝. DalöÌm
krokem je p¯eklad programu do Intel Hexa kÛdu nap¯. pomocÌ
p¯ekladaËe assembleru A51. Pokud je p¯eklad bez chyb, tak
spustÌme ovl·dacÌ program program·toru a naprogramujeme
vlastnÌ mikro¯adiË. Velkou v˝hodou je moûnost elektrickÈho
maz·nÌ pamÏti programu, coû v˝raznÏ urychluje pr·ci, oproti
maz·nÌ pamÏtÌ EPROM ultrafialov˝m svÏtlem.
Programování monolitických
mikropoèítaèù
Z·kladem vöech digit·lnÌch za¯ÌzenÌ je tzv. bin·rnÌ logika,
kter· pracuje se dvÏma stabilnÌmi stavy. Znalost bin·rnÌ logiky
a z·kladnÌch operacÌ s bin·rnÌmi ËÌsly je velmi d˘leûit· pro ˙spÏönÈ zvl·dnutÌ programov·nÌ mikro¯adiˢ. Matematickou definicÌ,
popisem a ¯eöenÌm bin·rnÌ logiky se zab˝v· Booleova algebra.
Pro naöi dalöÌ pr·ci je nezbytnÈ zvl·dnout z·kladnÌ funkce Booleovy algebry, kter˝mi jsou logick˝ souËet (OR), logick˝ souËin
(AND) a negace (NOT). DalöÌ logickou funkcÌ, kter· se Ëasto
pouûÌv·, je tzv.
souËet modulo
2 (XOR). PravdivostnÌ tabulky
tÏchto Ëty¯ funkcÌ jsou uvedeny v tabulce 2,
kde A a B jsou
vstupnÌ hodnoty
Tab. 1 ñ AlternativnÌ funkce v˝vod˘ portu P3
Obr. 7 ñ ZapojenÌ obvodu
oscil·toru
a Y je v˝sledn· hodnota.
S bin·rnÌmi (dvojkov˝mi) ËÌsly lze prov·dÏt i bÏûnÈ aritmetickÈ operace jako jsou sËÌt·nÌ, odËÌt·nÌ, n·sobenÌ a dÏlenÌ.
Pro tyto ˙Ëely jsou dvojkovÈ ËÌslice (bity) sdruûeny do slabiky
(byte), coû je skupina obvykle osmi bit˘. DalöÌm pojmem je slovo (word), kterÈ je vytvo¯eno skupinou byt˘. Byte (osmibitov·
slabika) m˘ûe reprezentovat dekadickÈ ËÌslo v rozmezÌ od 0 do
255. KaûdÈmu bitu p¯ÌsluöÌ urËit· v·ha podle jeho pozice. Koeficient kaûdÈ pozice m˘ûe b˝t vzhledem k z·kladu soustavy pouze 0 nebo 1. V·ha nejniûöÌho bitu je pak rovna 20. Na obr. 8 je
zn·zornÏno bin·rnÌ ËÌslo, kterÈ m· v dekadickÈm vyj·d¯enÌ hodnotu 189.
Manipulace s dvojkov˝mi ËÌsly je pro ËlovÏka obtÌûn·, a proto se dvojkovÈ ËÌslo form·lnÏ rozdÏluje na skupiny po Ëty¯ech
bitech, ËÌmû se dost·v·me k öestn·ctkovÈmu (hexadecim·lnÌmu) vyj·d¯enÌ ËÌsla. »Ìslo 189 z obr. 8 bychom v hexadecim·lnÌm
vyj·d¯en· napsali jako BDH, kde pÌsmeno H oznaËuje hexadecim·lnÌ ËÌselnou soustavu. Z·kladem hexadecim·lnÌ soustavy
je ËÌslo öestn·ct a pro vyj·d¯enÌ chybÏjÌcÌch ËÌslic jsou pouûita
pÌsmena A aû F. V tabulce 3 jsou uvedeny z·kladnÌ hexadecim·lnÌ ËÌslice a jejich dvojkovÈ ekvivalenty.
V mikropoËÌtaËovÈ technice se Ëasto pouûÌv· i kÛd BCD, kter˝
je v rozmezÌ ËÌsel 0 aû 9 shodn˝ s kÛdem hexa. KaûdÈ ËÌslo je
tedy vyj·d¯eno Ëtve¯icÌ bit˘. Mikroprocesory ovöem v kÛdu BCD
pracovat nedok·ûÌ a pro zpracov·nÌ tohoto kÛdu proto obsahujÌ podp˘rnÈ prost¯edky, kterÈ prov·dÏjÌ pot¯ebnÈ korekce v˝sledk˘.
P¯i komunikaci mikropoËÌtaËe s vnÏjöÌm prost¯edÌm (periferiemi) zpravidla nelze pouûÌvat p¯Ìmo bin·rnÌ nebo hexadecim·lnÌ
kÛd. ÿada periferiÌ, jako jsou kl·vesnice, displej a tisk·rna, je
orientov·na znakovÏ. »Ìslice nenÌ ËÌseln· hodnota, ale je to znak,
kter˝ tÈto hodnotÏ nÏjak˝m zp˘sobem odpovÌd·. Stejn˝ v˝znam
m· v danÈ situaci i pÌsmeno nebo funkËnÌ oper·tor. Aby se urËit˝m zp˘sobem standardizovaly funkce za¯ÌzenÌ r˘zn˝ch v˝robc˘, vyuûÌv· se pro tyto komunikace n·rodnÌch nebo firemnÌch
modifikacÌ kÛdu ASCII (American Standard Code for Information Interchange). Obsah kÛdu m˘ûeme rozdÏlit do dvou skupin.
PrvnÌ tvo¯Ì sluûebnÌ a ¯ÌdicÌ znaky, vyhrazenÈ pro ¯ÌzenÌ komunikacÌ s r˘zn˝mi typy periferiÌ. Druh· skupina je tvo¯ena grafick˝mi znaky, tj. pÌsmeny, ËÌslicemi, symboly a funkËnÌmi oper·tory.
»Ìslovky i pÌsmena jsou uspo¯·d·ny tak, ûe tvo¯Ì vûdy souvislou mnoûinu ñ posloupnost kÛd˘. »Ìslovk·m odpovÌdajÌ pro 0
aû 9 kÛdy 30 aû 39H, pÌsmen˘m A aû Z kÛdy 41 aû 5AH a mal˝m
pÌsmen˘m a aû z kÛdy 61 aû 7AH. Toho se vyuûÌv· p¯i vz·jemn˝ch konverzÌch z bin·rnÌho do ASCII kÛdu a naopak. VlastnÌ
kÛd ASCII je pouze 7bitov˝. Osm˝ bit se proto vyuûÌv· pro paritnÌ zabezpeËenÌ nebo pro specifickÈ rozö̯enÌ kÛdu, nap¯Ìklad
n·rodnÌ abecedou apod.
Obr. 8 – Znázornìní binárního èísla
Program, kter˝ ¯ÌdÌ Ëinnost monolitickÈho mikropoËÌtaËe, je uloho programov·nÌ jsou zaloûeny na omezenÌ neefektivnÌch inûen v pamÏti programu. Tato pamÏù je oddÏlena od pamÏti dat.
tui-tivnÌch p¯Ìstup˘ k tvorbÏ programu na vöech ˙rovnÌch.
Adresov·nÌ kaûdÈ z tÏchto pamÏtÌ tedy zaËÌn· od nuly a konËÌ
N·vrh programu vûdy zaËÌn· anal˝zou ¯eöenÈho problÈmu. Efekmaxim·lnÌ dostupnou adresou pro danou pamÏù. PamÏù protivnÌ metodu n·vrhu ¯eöenÌ programu p¯edstavuje hierarchicgramu m· u mikro¯adiËe AT89C2051 kapacitu 2 kB. NÏkolik adk˝ rozklad ˙lohy tzv. metodou shora dol˘ (top-down), kter˝
res pamÏti programu je vyhrazeno pro obsluhu p¯eruöenÌ podle
m· za n·sledek rozloûenÌ ˙lohy do p¯esnÏ vymezen˝ch progratab. 4. V p¯ÌpadÏ v˝skytu p¯eruöenÌ je uloûen obsah programomov˝ch modul˘ s podrobnÏ definovan˝m systÈmem vz·jemvÈho ËÌtaËe do z·sobnÌku a tento ËÌtaË je naplnÏn adresou vekn˝ch vazeb. Je d˘leûitÈ si uvÏdomit, ûe na rozdÌl od zn·mÏjöÌch
toru p¯eruöenÌ. Na tÈto adrese je vhodnÈ napsat kÛd, kter˝ zajistÌ
v˝vojov˝ch diagram˘ hierarchick˝ diagram nepostihuje pr˘bÏh
skok do obsluûnÈho podprogramu. Po ukonËenÌ obsluhy p¯eprov·dÏnÈho programu, ale funkce a vz·jemnÈ vazby vöech
ruöenÌ je obsah programovÈho ËÌtaËe obnoven ze z·sobnÌku a
programov˝ch modul˘ v r·mci programu, jehoû celkov· strukprogram pokraËuje v mÌstÏ kde byl p¯eruöen.
tura se tak st·v· p¯ehlednou. Prost¯edky, umoûÚujÌcÌ modul·rPamÏù dat m· celkovou kapacitu 128 byt˘
nÌ v˝stavbu programu, p¯edstavujÌ ve
a skl·d· se ze t¯Ì oblastÌ. Datov· pamÏù od advyööÌch jazycÌch procedury a funkce jako
resy 0 do adresy 31 (1FH) je tvo¯ena Ëty¯mi sazvl·ötnÌ typy podprogram˘. Modul·rnÌ kondami registr˘. V kaûdÈ sadÏ je obsaûeno sedm
cepce p¯in·öÌ i dalöÌ v˝hody, nap¯. v podobÏ
registr˘ oznaËen˝ch R0 aû R7. Aktu·lnÌ sada restandardnÌch a uûivatelsk˝ch rutin, kte-rÈ mohou
gistr˘, kter· se zrovna pouûÌv·, se volÌ pomocÌ
vytv·¯et celÈ knihovny a v programech se vyuûÌbit˘ RS0 a RS1. Pokud jsou oba bity nastaveny
vajÌ buÔ p¯Ìmo nebo po p¯Ìsluön˝ch ˙prav·ch.
na 0, je vybr·na sada 0. P¯i nastavenÌ bit˘ na
Realizace libovolnÈho za¯ÌzenÌ s monolitick˝m
jedniËky je vybr·na sada 3. Volbou jinÈ sady remikropoËÌtaËem
se skl·d· ze dvou Ë·stÌ. V prvnÌ
gistr˘ nap¯. pro podprogramy obsluhujÌcÌ p¯eruË·sti je nutnÈ navrhnout obvodovÈ zapojenÌ, jeöenÌ, dos·hneme zv˝öenÈ bezpeËnosti
hoû j·drem je mikro¯adiË a kterÈ d·le obsahuje
programu. Od adresy 32 (20H) do adresy 47
podp˘rnÈ a perifernÌ obvody. M˘ûe se jednat nap¯.
(2FH) je umÌstÏna bitovÏ nastaviteln· Ë·st dao hlÌdacÌ obvod typu WatchDog, externÌ pamÏù dat
tovÈ pamÏti. V˝hodou tÈto Ë·sti pamÏti je moûtypu EEPROM, AD p¯evodnÌk a dalöÌ. ObvodovÈ
nost nastavovat samostatnÏ jednotlivÈ bity a
zapojenÌ je pot¯eba p¯evÈst do re·lnÈ podoby osavyuûÌt je jako programovÏ nastavitelnÈ p¯ÌznazenÈ a oûivenÈ desky ploönÈho spoje. Pak m˘ûeky. PoslednÌ Ë·st datovÈ pamÏti je umÌstÏna od
me p¯ikroËit ke druhÈ Ë·sti, ve kterÈ navrhneme
adresy 48 (30H) do adresy 128 (7FH) a jedn· se
programovÈ vybavenÌ. V˝voj a odladÏnÌ prograo klasickou pamÏù RAM, kterou lze vyuûÌt pro
mu b˝v· vÏtöinou n·roËnÏjöÌ neû n·vrh obvodoukl·d·nÌ promÏnn˝ch dat, parametr˘ apod. Je
vÈho zapojenÌ. Na trhu jsou dostupnÈ r˘znÈ ponutno upozornit na to, ûe po resetu mikro¯adiËe
m˘cky pro efektivnÏjöÌ v˝voj programu.
je nastaven ukazatel z·sobnÌku na adresu 07H,
takûe data budou do z·sobnÌku ukl·d·na od
V etapÏ ladÏnÌ programu je velmi uûiteËnou
adresy 08H. To je ovöem zaË·tek prvnÌ banky
Tab. 3 – Základní hexade- pom˘ckou simul·tor monolitickÈho mikropoËÌtaregistr˘. Proto pokud chceme tyto banky vyucimální èíslice a jejich
Ëe na osobnÌm poËÌtaËi. Jde o samostatn˝ proûÌvat, musÌme ukazatel z·sobnÌku p¯esmÏrovat
dvojkové ekvivalenty
gram, kter˝ umoûÚuje po zad·nÌ vstupnÌch
na jinou adresu datovÈ pamÏti. Registry specipodmÌnek sledovat na obrazovce poËÌtaËe simulovanou Ëin·lnÌch funkcÌ jsou umÌstÏny v samostatnÈm prostoru pamÏti
nost mikro¯adiËe a jeho vnit¯nÌ stavy, buÔ v kaûdÈm kroku nebo
mimo bÏûnou pamÏù dat.
ve zvolen˝ch bodech. Simul·tor dovoluje mÏnit stav registr˘,
obsah datovÈ pamÏti, stav vstup˘ apod.
Programov·nÌ mikropoËÌtaˢ m· za ˙kol vytvo¯it p¯edpis pro
jednoznaËnÈ a koneËnÈ ¯eöenÌ konkrÈtnÌ ˙lohy, probÌhajÌcÌ nad
NejdokonalejöÌm prost¯edkem pro rychl˝ v˝voj programovÈvstupnÌmi a vytv·¯en˝mi daty s vyuûitÌm konkrÈtnÌho programoho vybavenÌ je obvodov˝ emul·tor. Jedn· se o samostatnÈ
vacÌho jazyka. Tento jazyk tedy pro program·tora p¯edstavuje
technickÈ za¯ÌzenÌ, dnes vÏtöinou v podobÏ externÌ karty
prost¯edek vz·jemnÈ vazby mezi algoritmick˝m ¯eöenÌm ˙lohy
k osobnÌmu poËÌtaËi, kterÈ umoûÚuje emulovat Ëinnost monolia jejÌm skuteËn˝m ¯eöenÌm na ˙rovni strojovÈho kÛdu mikropotickÈho mikropoËÌtaËe v zapojenÌ, a to v re·lnÈm Ëase. Emul·ËÌtaËe. Kaûd˝ rozs·hlejöÌ program vûdy p¯edstavuje ¯eöenÌ slotorem v podstatÏ nahradÌme mikro¯adiË v n·mi vyvÌjenÈ aplikaci,
ûitÈho problÈmu, Ëemuû odpovÌd· i jeho omezen· p¯ehlednost.
a tÌm zÌsk·me Ë·steËnou nebo ˙plnou kontrolu nad probÌhajÌV pr˘bÏhu v˝voje programovacÌch technik se velmi brzo uk·zacÌm programem, podle typu a poËtu funkcÌ pouûitÈho emul·tola pot¯eba zavÈst do program·torskÈ Ëinnosti urËit˝ systÈm a
ru. Program m˘ûeme zastavit v libovolnÈm bodÏ a prohlÈdnout
to hned od poË·tku n·vrhu hrubÈ koncepce a struktury prograsi stavy registr˘, pamÏti a vstup˘, p¯ÌpadnÏ m˘ûeme nechat
mu. JedinÏ tak je moûnÈ v pr˘bÏhu pracÌ udrûet p¯ehled o vöech
program krokovat po jednotliv˝ch instrukcÌch. Ceny emul·tor˘
vz·jemn˝ch vazb·ch uvnit¯ programu a zajistit jeho efektivnÌ
jsou ovöem dost vysokÈ, ¯·dovÏ se pohybujÌ v rozmezÌ od 15 000
n·vrh, ladÏnÌ, dokumentaci a ˙drûbu. PostupnÏ byly stanoveny
do 30 000 KË. NaötÏstÌ existujÌ prost¯edky a metody, kterÈ umoûurËitÈ z·sady, podporujÌcÌ systematickÈ programov·nÌ a promÌÚujÌ v omezenÈ m̯e kontrolovat stav probÌhajÌcÌho programu
tajÌcÌ se i ve filozofii programovacÌch jazyk˘. Doch·zÌ tak
p¯Ìmo v odlaÔovanÈ aplikaci a tÌm do urËitÈ mÌry nahradit emuk urËitÈmu sjednocov·nÌ program·torskÈho myölenÌ a tedy i ke
l·tor. NÏkterÈ zp˘soby si uk·ûeme v dÌlech kursu vÏnovanÈm
snadnÏjöÌmu dorozumÌv·nÌ, protoûe principy strukturovanÈv˝voji konkrÈtnÌch aplikacÌ.
Tab. 2 – Pravdivostní tabulky základních logických funkcí
Pro efektivnÌ v˝voj software se dnes Ëasto pouûÌvajÌ p¯ekladaËe nÏkter˝ch
vyööÌch jazyk˘ do strojovÈho kÛdu p¯ÌsluönÈho mikro¯adiËe. Jako p¯Ìklad m˘ûe
slouûit p¯ekladaË C51 od firmy Keil. Tento p¯ekladaË je
vybaven integrovan˝m v˝vojov˝m prost¯edÌm, kterÈ
umoûÚuje komfortnÌ pro-
gramov·nÌ v jazyku C.
P¯ekladaË lze provozovat
buÔ pod MS Windows
nebo pod DOSem. Cena
p¯ekladaËe se ovöem pohybuje v relaci nÏkolika
desÌtek tisÌc KË.
Tab. 4 – Adresy poèátku obsluhy
pøerušení
Jazyk symbolických adres
(asembler)
Algoritmus, podle kterÈho m· monolitick˝ mikropoËÌtaË pracovat, je uloûen v jeho programovÈ pamÏti ve formÏ jednotliv˝ch strojov˝ch instrukcÌ. Strojov· instrukce je bin·rnÏ kÛdovan˝ p¯Ìkaz pro vykon·nÌ urËitÈ operace v mikro¯adiËi. Mnoûina
vöech strojov˝ch instrukcÌ vytv·¯Ì nejniûöÌ programovacÌ ˙roveÚ, na nÌû m˘ûe program·tor pracovat. PsanÌ programu p¯Ìmo
ve strojovÈm kÛdu by bylo velmi obtÌûnÈ vzhledem ke znaËnÈ
nep¯ehlednosti tohoto kÛdu. Proto se k programov·nÌ monolitick˝ch mikropoËÌtaˢ nejËastÏji pouûÌv· jazyk symbolick˝ch
adres. V tomto jazyku jsou kÛdy strojov˝ch instrukcÌ nahrazeny mnemotechnick˝mi zkratkami a n·zvy operand˘ a adres jsou
nahrazeny symbolick˝mi jmÈny
V˝hodou jazyku symbolick˝ch adres (JSA) je moûnost programov·nÌ na tÈ nejniûöÌ ˙rovni, coû je uûiteËnÈ zejmÈna p¯i
realizaci program˘ pracujÌcÌch s perifÈriemi, vyûadujÌcÌch rychlou odezvu nebo optim·lnÌ vyuûitÌ kapacity datovÈ pamÏti. Programov·nÌ v JSA je n·roËnÈ, ale umoûÚuje realizovat programovÈ vybavenÌ p¯esnÏ na mÌru konkrÈtnÌ aplikace. Programov·nÌ v JSA se pouûÌv· i p¯i psanÌ program˘ s vyööÌmi jazyky.
Nap¯Ìklad Turbo Pascal (a rovnÏû Delphi) umoûÚuje pomocÌ p¯Ìkazu asm za¯adit do programu instrukce mikroprocesoru I80286
napsanÈ v JSA.
Program napsan˝ v jazyku symbolick˝ch adres je p¯eloûen
pomocÌ p¯ekladaËe, kter˝ se naz˝v· asembler. V praxi se nÏkdy pouûÌv· n·zev asembler i pro samotn˝ jazyk symbolick˝ch
adres. Mimo symbolickÈ n·zvy instrukcÌ pouûÌv· p¯ekladaË i tzv.
pseudoinstrukce (direktivy), kterÈ nejsou v·z·ny na strojov˝
kÛd mikro¯adiËe, ale na Ëinnost p¯ekladaËe. Pseudoinstrukce
se pouûÌvajÌ pro deklaraci adres, konstant, pro ¯ÌzenÌ v˝stupnÌho protokolu o p¯ekladu apod. HlavnÌ rozdÌl mezi pseudoinstrukcemi a instrukcemi je v tom, ûe pseudoinstrukce se nep¯ekl·dajÌ do v˝slednÈho kÛdu, pouze p¯eklad ¯ÌdÌ.
NÏkterÈ typy p¯ekladaˢ umoûÚujÌ definice makroinstrukcÌ.
Makroinstrukce nabÌzÌ program·torovi moûnost uzav¯Ìt nejËastÏji se opakujÌcÌ sekvenci stejn˝ch instrukcÌ do jednoho bloku
oznaËenÈho symbolick˝m jmÈnem. P¯i psanÌ programu m˘ûe
program·tor na poûadovanÈm mÌstÏ vol·nÌm makroinstrukce
vloûit danou sekvenci instrukcÌ do programu. Makroinstrukce
nezkracuje v˝sledn˝ programov˝ kÛd, pouze öet¯Ì pr·ci program·tora a zlepöuje p¯ehlednost zdrojovÈho textu programu.
Jazyk symbolick˝ch adres m· urËit· pravidla, kter· je nutno
dodrûovat. JednotlivÈ p¯ekladaËe se sice mohou v nÏkter˝ch
jednotlivostech odliöovat, ale obecn· pravidla z˘st·vajÌ u vöech
p¯ekladaˢ stejn·. Jedna z odchylek, se kterou se setk·me v
p¯ÌpadÏ pouûitÌ volnÏ öi¯itelnÈho p¯ekladaËe A51, je zp˘sob z·pisu hexadecim·lnÌch ËÌsel. BÏûnÈ p¯ekladaËe pouûÌvajÌ vyj·d¯enÌ ve tvaru 25H, ale p¯ekladaË A51 pouûÌv· vyj·d¯enÌ Hí25. Ve
zdrojov˝ch ¯·dcÌch jsou p¯ÌpustnÈ vöechny ASCII znaky platnÈ
pro americkou kl·vesnici. Nelze tedy pouûÌvat znaky s diakritikou. Jsou p¯Ìpustn· mal· i velk· pÌsmena, vnit¯nÏ vöak p¯ekladaË povaûuje vöechna pÌsmena za velk·. Ve v˝pisu programu
se vöak objevÌ ta pÌsmena, kter· byla pouûita ve zdrojovÈm textu. NÏkterÈ znaky majÌ speci·lnÌ v˝znam. Jedn· se o znak #
(k¯Ìû), kter˝ uv·dÌ p¯Ìm˝ operand, d·le znak @ (komerËnÌ a), kter˝ uv·dÌ nep¯Ìm˝ adresov˝ operand, a znak % pro oznaËenÌ
parametru makroinstrukce. P¯Ìklad Ë·sti programu je uveden
na obr. 9.
Program je vhodnÈ ps·t p¯ehlednÏ s uspo¯·d·nÌm do jednotliv˝ch sloupc˘. Pokud ¯·dek zaËÌn· st¯ednÌkem, vöe za tÌmto st¯ednÌkem se naz˝v· koment·¯. Pole koment·¯e nenÌ p¯ekl·d·no a nezasahuje do programu, objevuje se pouze ve v˝pisu programu. Koment·¯ m˘ûe b˝t uveden i na konci ¯·dku s
instrukcemi. PrvnÌ sloupec zleva obsahuje n·vÏötÌ, kterÈ reprezentuje jmÈno urËitÈho adresovÈho mÌsta. N·vÏötÌ tedy p¯edstavuje symbolick˝ prost¯edek, kter˝ slouûÌ k odkazu na urËitÈ
mÌsto v programu. N·vÏötÌ se m˘ûe vztahovat pouze k jednomu mÌstu v programu, nenÌ tudÌû moûnÈ uvÈst stejnÈ n·vÏötÌ
vÌcekr·t. Druh˝ sloupec obsahuje pole typu operace. Je v nÏm
uveden mnemotechnick˝ n·zev z·kladnÌ instrukce nebo direktivy. V dalöÌm sloupci jsou uvedena pole operand˘. Jsou v nich
identifikov·na data, se kter˝mi se m· prov·dÏt dan· operace.
NÏkterÈ instrukce nevyûadujÌ û·dnÈ operandy, jinÈ jeden, dva
aû t¯i operandy.
Ve v˝pisu programu na obr.9 jsou rovnÏû uvedeny dvÏ direktivy. Direktiva ORG nastavuje programov˝ ËÌtaË (poËÌtadlo adres) na novou hodnotu pro p¯Ìkazy, kterÈ po nÌ n·sledujÌ. Direktiva EQU p¯i¯azuje jmÈnu symbolu ËÌselnou hodnotu. V dalöÌ
Ë·sti programu pak m˘ûeme tento symbol pouûÌvat namÌsto
ËÌselnÈ hodnoty. Mezi dalöÌ direktivy pro definici jmen symbol˘
d·le pat¯Ì SEGMENT, SET, DATA, IDATA, XDATA, BIT a CODE.
DalöÌ skupinou jsou direktivy pro definici konstant a rezervaci
mÌsta v pamÏti. Jsou to direktivy DB, DW, DS a DBIT. Aby byl
v˝Ëet ˙pln˝, existujÌ jeötÏ direktivy pro spojov·nÌ modul˘ a direktivy pro volbu relativnÌch a absolutnÌch segment˘. BliûöÌ informace lze nalÈzt v literatu¯e uvedenÈ na konci tohoto Ël·nku
InstrukËnÌ soubor mikro¯adiˢ ¯ady 8051 m· celkem 111
instrukcÌ. Kaûd· instrukce m· pole operaËnÌho kÛdu (zkratka
anglickÈho vyj·d¯enÌ Ëinnosti instrukce), za kter˝m n·sleduje
pole operand˘, zpravidla ve tvaru ÑcÌlov˝ operand, zdrojov˝ operandì. Pole operand˘ urËuje pouûit˝ typ dat a zp˘sob adresov·nÌ. Soubor instrukcÌ lze rozdÏlit do Ëty¯ skupin:
P¯esuny dat ñ pat¯Ì mezi nejËastÏji prov·dÏnÈ operace. Prov·dÏjÌ se p¯esuny dat jak uvnit¯ mikro¯adiËe mezi jeho registry a
pamÏtÌ, tak mezi mikro¯adiËem a externÌmi periferiemi. é·dn· z
operacÌ p¯enosu neovlivÚuje p¯Ìznaky ve stavovÈm slovÏ programu (PSW) s v˝jimkou instrukce POP a instrukce MOV, v p¯ÌpadÏ p¯enosu p¯Ìmo do PSW. Operace p¯esunu dat se dÏlÌ do
t¯Ì kategoriÌ. ObecnÈ p¯esuny prov·dÌ instrukce MOV, POP
a PUSH. Instrukce MOV p¯esunuje bity nebo slabiky ze zdrojovÈho operandu do cÌlovÈho operandu. Instrukce PUSH inkrementuje obsah registru SP (ukazatel z·sobnÌku) a potom p¯esouv· slabiku do z·sobnÌku. Instrukce POP p¯esunuje slabiku z
mÌsta v z·sobnÌku do cÌlovÈho operandu a potom dekrementuje obsah SP. P¯esuny t˝kajÌcÌ se st¯adaËe jsou celkem Ëty¯i. Instrukce XCH vymÏÚuje obsah zdrojovÈho operandu s obsahem
registru A, instrukce XCHD vymÏÚuje obsah niûöÌch ¯·d˘ (bity 0
aû 3) slabiky zdrojovÈho operandu s obsahem niûöÌch ¯·d˘ st¯adaËe, instrukce MOVX prov·dÌ p¯esun slabiky mezi vnÏjöÌ pamÏtÌ dat a st¯adaËem a instrukce MOVC p¯esouv· obsah slabiky z pamÏti programu do st¯adaËe. P¯esun adresy do cÌlovÈho
operandu umoûÚuje instrukce MOV DPTR,#data, kter· naplÚuje öestn·ctibitov˝mi p¯Ìm˝mi daty cÌlovou dvojici registr˘ DPH
a DPL.
AritmetickÈ operace ñ jsou celkem Ëty¯i: seËÌt·nÌ, odeËÌt·nÌ, n·sobenÌ a dÏlenÌ. P¯Ìmo se prov·dÏjÌ pouze osmibitovÈ operace v aritmetice ËÌsel bez znamÈnka. P¯Ìznak OV (Overflow ñ
p¯eteËenÌ) umoûÚuje operace seËÌt·nÌ a odeËÌt·nÌ dvou cel˝ch
ËÌsel bez znamÈnka nebo se znamÈnkem. Lze rovnÏû prov·dÏt
aritmetickÈ operace s ËÌsly ve zhuötÏnÈm desÌtkovÈm zobrazenÌ (BCD). Pro seËÌt·nÌ je urËena instrukce INC, kter· p¯iËÌt· jedniËku ke zdrojovÈmu operandu, d·le instrukce ADD, kter· seËÌt· obsah st¯adaËe se zdrojov˝m operandem. Instrukce ADDC
navÌc jeötÏ p¯iËÌt· jedniËku, je-li p¯Ìznak p¯enosu C=1. Instrukce
DA slouûÌ pro desÌtkovou ˙pravu p¯i seËÌt·nÌ ËÌsel BCD. OdeËÌt·nÌ umoûÚuje instrukce SUBB, kter· odeËÌt· druh˝ zdrojov˝
operand od prvnÌho operandu (st¯adaË) a jeötÏ odeËte jedniËku, je-li p¯Ìznak p¯enosu C=1. Instrukce DEC odeËÌt· jedniËku
od zdrojovÈho operandu. N·sobenÌ prov·dÌ instrukce MUL, kter·
n·sobÌ obsahy registr˘ A a B jako ËÌsla bez znamÈnka. V˝sledek je dvouslabikov˝ a je umÌstÏn ve st¯adaËi (niûöÌ ¯·dy) a v
;Definice konstant
.EQU Cas1,128
;Definice konstanty zadané dekadicky
.EQU Konst,H’20 ;Definice konstanty zadané hexadecimálnì
;
.ORG H’100
;Adresa zaèátku uvedené èásti programu
;
Uvod:
MOV R7,#H’5F
;Pøesun èísla do registru 7
MOV R0,#Konst
;Pøesun èísla do registru 0
CLR A
;Nulování støadaèe
Nuluj:
MOV @R0,A
;Pøesun obsahu støadaèe na adresu uvedenou v registru 0
INC
R0
;Inkrementace obsahu registru 0
DJNZ R7,Nuluj
;Test obsahu registru 7 na nulu a pøípadný skok na návìští Nuluj
RET
;Ukonèení èásti programu od návìští Uvod
Obr. 9 - Ukázka programu v jazyce symbolických adres
registru B (vyööÌ ¯·dy). DÏlenÌ lze provÈst instrukcÌ DIV, kter·
dÏlÌ obsah st¯adaËe obsahem registru B. CeloËÌseln˝ podÌl ukl·d· do st¯adaËe a zbytek do registru B.
LogickÈ operace ñ je moûno prov·dÏt jak s bitov˝mi, tak i
se slabikov˝mi operandy. Instrukce CLR nastavuje obsah st¯adaËe nebo hodnotu kterÈhokoliv p¯Ìmo adresovatelnÈho bitu
do nuly. Instrukce SETB nastavuje hodnotu kterÈhokoliv p¯Ìmo
adresovatelnÈho bitu do jedniËky. Instrukce CPL vytv·¯Ì doplnÏk obsahu st¯adaËe nebo hodnoty kterÈhokoliv adresovatelnÈho bitu. Instrukce RL, RLC, RR, RRC a SWAP p¯edstavujÌ pÏt
rotaËnÌch posuv˘ obsahu st¯adaËe. RL rotuje vlevo, RR rotuje
vpravo, RLC rotuje vlevo p¯es p¯Ìznak p¯enosu, RRC rotuje vpravo p¯es p¯Ìznak p¯enosu a SWAP rotuje Ëty¯ikr·t vlevo. Instrukce ANL prov·dÌ bit po bitu logick˝ souËin se dvÏma zdrojov˝mi
operandy. Instrukce ORL prov·dÌ bit po bitu logick˝ souËet se
dvÏma zdrojov˝mi operandy. Instrukce XRL prov·dÌ bit po bitu
souËet modulo 2 se dvÏma zdrojov˝mi operandy.
Operace pro p¯ed·nÌ ¯ÌzenÌ ñ zp˘sobujÌ, ûe program pokraËuje prov·dÏnÌm jinÈ neû sekvenËnÏ n·sledujÌcÌ instrukce v
pamÏti programu. NepodmÌnÏn· vol·nÌ podprogramu, n·vraty
z podprogramu a nepodmÌnÏnÈ skoky p¯ed·vajÌ ¯ÌzenÌ ze souËasnÈ hodnoty programovÈho ËÌtaËe na cÌlovou adresu. Instrukce ACALL a LCALL ukl·dajÌ adresu n·sledujÌcÌ instrukce (tj. n·vratovou adresu) do z·sobnÌku a pak p¯ed·vajÌ ¯ÌzenÌ na urËenou adresu. ACALL se pouûÌv· pro skoky v r·mci 2 kB str·nky
programu, LCALL adresuje cel˝ 64 kB prostor pamÏti programu. Instrukce RET p¯ed·v· ¯ÌzenÌ na n·vratovou adresu uloûenou v z·sobnÌku p¯edch·zejÌcÌ instrukcÌ CALL. Instrukce AJMP,
LJMP a SJMP p¯ed·vajÌ ¯ÌzenÌ na urËenou cÌlovou adresu bez
uloûenÌ n·vratovÈ adresy do z·sobnÌku. AJMP a LJMP jsou analogickÈ operacÌm ACALL a LCALL, instrukce SJMP (kr·tk˝ skok)
je urËena pro p¯ed·nÌ ¯ÌzenÌ uvnit¯ pole o rozsahu 256 slabik.
Instrukce JMP@A+DPTR prov·dÌ skok na adresu vztaûenou k
obsahu registru DPTR. Obsah st¯adaËe se zde pouûÌv· jako
posun od adresy umÌstÏnÈ v ukazateli dat DPTR. Tak m˘ûe b˝t
efektivnÏ urËena cÌlov· adresa pro skok kdekoliv v prostoru pamÏti programu. PodmÌnÏnÈ skoky jsou prov·dÏnÈ pouze p¯i splnÏnÌ urËit˝ch podmÌnek. CÌlov· adresa skoku se musÌ nach·zet
uvnit¯ pole o rozsahu 256 slabik, kterÈ m· st¯ed na adrese instrukce n·sledujÌcÌ za podmÌnÏn˝m skokem (ñ128 aû +127). Instrukce JZ prov·dÌ skok, je-li obsah st¯adaËe nulov˝. Instrukce
JNZ prov·dÌ skok, je-li obsah st¯adaËe nenulov˝. Instrukce JC
prov·dÌ skok, m·-li p¯Ìznak p¯enosu logickou hodnotu 1. Instrukce JNC prov·dÌ skok, m·-li p¯Ìznak p¯enosu logickou hodnotu 0. Instrukce JB prov·dÌ skok, m·-li p¯Ìmo adresovateln˝
bit logickou hodnotu 1. Instrukce JNB prov·dÌ skok, m·-li p¯Ìmo adresovateln˝ bit logickou hodnotu 0. Instrukce JBC prov·dÌ skok, m·-li p¯Ìmo adresovateln˝ bit logickou hodnotu 0 a
souËasnÏ tento bit vynuluje. Instrukce CJNE porovn·v· prvnÌ
operand s druh˝m operandem a prov·dÌ skok p¯i nerovnosti
operand˘. Instrukce DJNZ dekrementuje zdrojov˝ operand
a v˝sledek ukl·d· do tohoto operandu. Skok se provede p¯i
nenulovÈm v˝sledku. N·vrat z podprogramu pro obsluhu p¯eruöenÌ se prov·dÌ instrukcÌ RETI, kter· p¯ed·v· ¯ÌzenÌ podobnÏ
jako instrukce RET, avöak navÌc povoluje p¯eruöenÌ se stejnou
nebo niûöÌ ˙rovnÌ priority, jakou mÏlo pr·vÏ obslouûenÈ p¯eruöenÌ.
Pro urËenÌ konkrÈtnÌ buÚky v pamÏti je rozhodujÌcÌ jejÌ adresa. Proto se techniky p¯Ìstupu k pamÏùov˝m buÚk·m nebo k
registr˘m v registrovÈ sadÏ naz˝vajÌ zp˘soby adresov·nÌ. Kaûdou adresu v r·mci prov·dÏnÈ operace je moûnÈ oznaËit buÔ
jako zdrojovou nebo cÌlovou. Zdrojov· adresa oznaËuje mÌsto,
odkud budou data p¯ebÌr·na ke zpracov·nÌ. CÌlov· adresa urËuje mÌsto, na kterÈ bude v˝sledek operace uloûen.
ImplicitnÌ adresov·nÌ nevyûaduje samostatnÈ vyj·d¯enÌ operandu, protoûe ten je urËen implicitnÏ v instrukci. Operand je
d·n operaËnÌm kÛdem instrukce a nepouûÌv· se dalöÌ adresa
na jeho urËenÌ. P¯Ìkladem je instrukce pro nulov·nÌ st¯adaËe
ÑCLR Aì.
Bezprost¯ednÌ adresov·nÌ (adresa 0. ¯·du), nÏkdy tÈû naz˝vanÈ adresov·nÌ s p¯Ìm˝m operandem, neobsahuje v kÛdu
instrukce adresu operandu, ale obsahuje p¯Ìmo vlastnÌ operand.
P¯Ìkladem je instrukce ÑMOV A,#Hí25ì, kter· naplnÌ st¯adaË zadanou hodnotou, v tomto p¯ÌpadÏ hexadecim·lnÌm ËÌslem 25.
P¯ÌmÈ adresov·nÌ (adresa 1. ¯·du) adresuje operand p¯Ìmo hodnotou adresy, kter· je obsaûena v instrukci. Adresa operandu m˘ûe b˝t ˙pln· nebo zkr·cen·. P¯i zkr·cenÈ adrese jsou
vyööÌ bity adresy d·ny implicitnÏ operaËnÌm kÛdem instrukce.
P¯ÌmÈ adresov·nÌ je jedin˝ zp˘sob, kter˝ dovoluje pr·ci s registry speci·lnÌch funkcÌ a s niûöÌmi 128 byty vnit¯nÌ pamÏti dat.
P¯Ìkladem m˘ûe b˝t instrukce ÑMOV SBUF,Aì, kter· p¯en·öÌ hodnotu ze st¯adaËe do v˝stupnÌho registru sÈriovÈho portu. Do
p¯ÌmÈho adresov·nÌ m˘ûeme za¯adit takÈ adresov·nÌ s registrem, kterÈ se t˝k· osmi pracovnÌch registr˘ (R0 aû R7) vybranÈ
sady registr˘.
Nep¯ÌmÈ adresov·nÌ (adresa 2. ¯·du) nem· v instrukci
uloûenu adresu operandu, ale adresu buÚky, ve kterÈ se nach·zÌ adresa tohoto operandu. Nep¯ÌmÈ adresov·nÌ s registrem uûÌv· obsahy registr˘ R0 nebo R1 (ve zvolenÈ sadÏ registr˘) jako ukazatel na pamÏùovÈ mÌsto ve 128 bytovÈm bloku.
P¯Ìkladem je instrukce ÑMOV A,@R0ì, kter· p¯en·öÌ hodnotu
pamÏùovÈ buÚky, jejÌû adresa je obsaûena v registru R0, do
st¯adaËe. Nep¯ÌmÈ adresov·nÌ s b·zov˝m registrem a s indexov˝m registrem zjednoduöuje prohlÌûenÌ tabulek pevnÏ umÌstÏn˝ch v pamÏti programu. TÌmto zp˘sobem lze pracovat v
tabulce s bytem, jehoû adresa je d·na souËtem obsahu b·zovÈho registru (DPTR nebo PC) a obsahu indexovÈho registru
(A).
Pro podrobnÏjöÌ studium programov·nÌ monolitick˝ch mikropoËÌtaˢ je pot¯eba pouûÌt odbornou literaturu. Nej˙plnÏjöÌ
Ëesky psanou p¯ÌruËkou je staröÌ publikace vydan· Teslou Eltos v roce 1987 s n·zvem ÑProgramovacÌ jazyk asembler 8051ì.
DoporuËuji ke studiu i dalöÌ publikaci od stejnÈho vydavatele
s n·zvem ÑArchitektura a technickÈ vlastnosti jednoËipov˝ch
mikro¯adiˢ 8051ì.
TÌmto dÌlem byl ukonËen teoretick˝ v˝klad technick˝ch
vlastnostÌ a programov·nÌ monolitick˝ch mikropoËÌtaˢ ¯ady
8051.
Zobrazovací jednotka s mikroøadièem AT89C2051
Po nÏkolika dÌlech kursu monolitick˝ch mikropoËÌtaˢ zamϯen˝ch teoreticky se koneËnÏ dost·v·me k†praktickÈ Ë·sti, kde bychom si mÏli uk·zat na n·vrhu re·lnÈho za¯ÌzenÌ jak na to. Pro tento
˙Ëel jsem p¯ipravil stavebnici, kter· se skl·d· ze t¯Ì samostatn˝ch
modul˘. PrvnÌm z†nich je modul zobrazovacÌ jednotky, kter˝ je vybaven sv˝m vlastnÌm mikro¯adiËem a ovl·d·nÌ jednotliv˝ch zobrazovaˢ probÌh· v†multiplexnÌm reûimu. Modul zobrazovacÌ jednotky
obsahuje Ëty¯i sedmisegmentovÈ zobrazovaËe typu LED s†v˝ökou
znak˘ 14mm, dvÏ indikaËnÌ diody LED a Ëty¯i tlaËÌtka, kter· jsou p¯ipojena prost¯ednictvÌm kodÈru ke druhÈmu modulu.
TÌm je mϯicÌ modul, opÏt vybaven˝ samostatn˝m mikro¯adiËem. DalöÌmi souË·stmi jsou 10bitov˝ AD p¯evodnÌk, zdroj konstantnÌho proudu pro nap·jenÌ snÌmaËe mϯenÈ veliËiny, mϯicÌ
zesilovaË, hlÌdacÌ obvod typu WatchDog, obvod rozhranÌ pro linku RS232, z·lohovacÌ akumul·tor a v˝stupnÌ v˝konovÈ relÈ. MϯicÌ modul lze vyuûÌt pro bÏûnÈ mϯenÌ elektrickÈho napÏtÌ, d·le
pro m˘stkov· mϯenÌ s†odporov˝mi snÌmaËi teploty nebo i
s†tenzometrick˝mi snÌmaËi. V˝konovÈ v˝stupnÌ relÈ pak umoûÚuje vyuûitÌ modulu ve funkci dvoupolohovÈho regul·toru.
T¯etÌm modulem je modul nap·jecÌho zdroje, kter˝ p¯ev·dÌ
vstupnÌ st¯ÌdavÈ napÏtÌ v†rozmezÌ 7 aû 30 V na stejnosmÏrnÈ napÏtÌ +5 V a -5 V. Modul zdroje je osazen spÌnan˝m stabiliz·torem
napÏtÌ, jehoû hlavnÌ v˝hodou je vysok· ˙Ëinnost a lepöÌ filtrace
zbytk˘ st¯ÌdavÈ sloûky neû u line·rnÌho stabiliz·toru. To m· v˝znam zejmÈna v†p¯Ìpadech, kdy chceme pouûÌt za¯ÌzenÌ
s†mikro¯adiËem v†pr˘myslovÈm prost¯edÌ, kde se nach·zÌ motory, stykaËe a dalöÌ spot¯ebiËe s†indukËnÌm charakterem, kterÈ
b˝vajÌ zdrojem ruöiv˝ch impuls˘. Toto ruöenÌ n·m m˘ûe zp˘sobit
neû·doucÌ reset mikro¯adiËe anebo dalöÌ n·hodnÈ chyby v†bÏhu programu mikro¯adiËe. PouûitÌ spÌnanÈho zdroje v˝raznÏ omezuje pravdÏpodobnost v˝skytu tÏchto poruch.
V†dneönÌ Ë·sti se budeme podrobnÏ zab˝vat modulem zobrazovacÌ jednotky. Nejprve se na problÈm zobrazenÌ podÌv·me z†obecnÈho
hlediska. Elektronick· za¯ÌzenÌ jsou v†p¯ev·ûnÈ vÏtöinÏ p¯Ìpad˘ vybavena zobrazovacÌmi nebo alespoÚ indikaËnÌmi prvky, pomocÌ kter˝ch komunikujÌ se sv˝m okolÌm. JednoduööÌ za¯ÌzenÌ vystaËÌ
s†indikaËnÌmi diodami LED, kterÈ signalizujÌ urËitÈ stavy danÈho za¯ÌzenÌ. U sloûitÏjöÌch elektronick˝ch p¯Ìstroj˘, zejmÈna z†oblasti mϯicÌ
a regulaËnÌ techniky je nezbytnostÌ ËÌslicov˝ displej, kter˝ informuje
obsluhu o ËÌselnÈ hodnotÏ mϯenÈ veliËiny. NejËastÏji se pouûÌvajÌ
sedmisegmentovÈ zobrazovaËe typu LED nebo LCD. MoûnÈ je takÈ
pouûitÌ grafick˝ch zobrazovaˢ typu LCD, kterÈ umoûÚujÌ zobrazenÌ
libovoln˝ch znak˘ nebo i graf˘. ZobrazovacÌ jednotka m˘ûe b˝t rovnÏû reprezentov·na monitorem osobnÌho poËÌtaËe. NejbÏûnÏjöÌ je
Obr. 10 - Schéma zobrazovací jednotky
propojenÌ poËÌtaËe s†mϯicÌm za¯ÌzenÌm prost¯ednictvÌm sÈriovÈ linky
RS232. KomunikaËnÌ protokol pak vÏtöinou vyuûÌv· znak˘ ASCII, a
tak mohou b˝t zobrazov·ny nejen ËÌselnÈ znaky, ale i textovÈ informace.
ZobrazovacÌ jednotku vyuûijeme i v†p¯Ì-padÏ, kdy navrhujeme za¯ÌzenÌ s†mikro¯adi-Ëem, kterÈ nepot¯ebuje displej. Pokud nem·me
k†dispozici obvodov˝ emul·tor, m˘ûe n·m zobrazovacÌ jednotka v˝raznÏ pomoci p¯i v˝voji programu. Ve velkÈ vÏtöinÏ p¯Ìpad˘ se n·m
nepoda¯Ì napsat hned napoprvÈ bezchybn˝ program a pro hled·nÌ
chyb m˘ûeme do kritick˝ch mÌst vyvÌjenÈho programu za¯adit vol·nÌ
podprogramu, kter˝ zobrazÌ na displeji urËit· data. M˘ûeme si nechat zobrazit nap¯. obsah st¯adaËe nebo nÏkter˝ch registr˘, p¯ÌpadnÏ i obsah vybranÈ Ë·sti pamÏti dat.
Naöe zobrazovacÌ jednotka je osazena Ëty¯mi sedmisegmentov˝mi zobrazovaËi typu LED. Tyto zobrazovaËe jsou v†provedenÌ
se spoleËnou anodou. To znamen·, ûe anody vöech sedmi segment˘ jsou spojeny a p¯ipojujÌ se na kladn˝ pÛl nap·jecÌho zdroje. Abychom dos·hli zobrazenÌ nÏkterÈho znaku, musÌme p¯ipojit
p¯ÌsluönÈ v˝vody jednotliv˝ch segment˘ (katody) na nulov˝ potenci·l. V†bÏûn˝ch p¯Ìpadech se vyuûÌvajÌ dekodÈry BCD kÛdu na
kÛd sedmisegmentovÈho displeje. S†tÌmto kÛdem jsme se blÌûe sezn·mili ve ËtvrtÈ Ë·sti kursu, proto jiû vÌme, ûe v†BCD kÛdu lze zobrazit celkem öestn·ct r˘zn˝ch znak˘, kterÈ jsou reprezentov·ny r˘zn˝mi
kombinacemi Ëty¯ bit˘. V˝hodou tÏchto dekodÈr˘ je jednoduchost
obsluhy displeje, staËÌ abychom na vstup dekodÈru p¯ivedli hexadecim·lnÌ reprezentaci znaku, kter˝ chceme zobrazit. ProblÈm nastane
v†p¯ÌpadÏ, kdy pot¯ebujeme zobrazit nÏkter˝ atypick˝ znak, vÏtöina
dekodÈr˘ totiû umÌ dekÛdovat pouze ËÌslice. Nev˝hodou je rovnÏû
velkÈ mnoûstvÌ souË·stek a tÌm i propojovacÌch bod˘.
Z†tÏchto d˘vod˘ jsem dal p¯ednost zobrazovacÌ jednotce, kter·
pracuje v dynamickÈm (multiplexnÌm) reûimu. ObvodovÈ schÈma zapojenÌ je zn·zornÏno na obr.10. PouûitÌ samostatnÈho mikro¯adiËe
se na prvnÌ pohled m˘ûe zd·t neefektivnÌ, varianta s†dekodÈry by
byla cenovÏ v˝hodnÏjöÌ. Ovöem parametry zobrazovacÌ jednotky
s†mikro¯adiËem v˝raznÏ zvyöujÌ jejÌ uûitnou hodnotu. K†propojenÌ jednotky s†dalöÌm mikropoËÌtaËov˝m systÈmem staËÌ jen jeden vodiË komunikace probÌh· po jednosmÏrnÈ sÈriovÈ lince. Na displejÌch lze
zobrazit libovolnÈ znaky a navÌc lze d·lkovÏ ¯Ìdit i jas zobrazovacÌ
jednotky. Minim·lnÌ mnoûstvÌ souË·stek n·m umoûnÌ pouûÌt menöÌ,
a tÌm i levnÏjöÌ desku ploönÈho spoje.
Na obvodovÈm zapojenÌ zobrazovacÌ jednotky vidÌme, ûe katody displej˘ DIS1 aû DIS4 jsou paralelnÏ propojeny a jsou p¯ipojeny
p¯Ìmo k†v˝vod˘m mikro¯adiËe D3. VyuûÌv·me zde jednÈ z†v˝hod obvodu AT89C2051, a to moûnosti zatÌûit jednotlivÈ v˝stupy proudem
aû 20 mA. MusÌme ovöem vzÌt v†˙vahu maxim·lnÌ
souËasnÈ proudovÈ zatÌûenÌ vöech v˝stup˘ mikro¯adiËe, kterÈ nesmÌ p¯ekroËit hodnotu 80 mA. OmezenÌ celkovÈho maxim·lnÌho proudu dos·hneme
nastavenÌm meznÌ hodnoty jasu displej˘. Princip dynamickÈho reûimu je zaloûen na tom, ûe postupnÏ
p¯ipojujeme na katody displej˘ poûadovanou kombinaci sign·l˘, kter· odpovÌd· zobrazenÈmu znaku
a pak sepneme tranzistor p¯ÌsluönÈho displeje. Aby
byly zobrazeny vöechny Ëty¯i znaky bez viditelnÈho
zablik·v·nÌ, musÌ b˝t rychlost p¯epÌn·nÌ displej˘ dostateËnÏ vysok·.
K†mikro¯adiËi jsou d·le p¯ipojeny dvÏ diody LED,
kterÈ slouûÌ k†indikaci libovoln˝ch stav˘ za¯ÌzenÌ. Diody jsou p¯ipojeny k†mikro¯adiËi p¯es rezistory R1 a
R2 s†hodnotou 1k5. Jsou pouûity nÌzkop¯ÌkonovÈ
diody LED s†proudem 2 mA. Krystal XT1 m· hodnotu 11,059 MHz a z†jeho kmitoËtu je odvozena p¯enosov· rychlost dat na sÈriovÈ lince 9600 Bd (Baud˘).
Rezistor R9 spolu s†kondenz·torem C3 zajiöùujÌ poË·teËnÌ inicializaci (reset) mikro¯adiËe. ZapojenÌ zobrazovacÌ jednotky je d·le doplnÏno o Ëtve¯ici tlaËÌtek
a kodÈr U1 (CMOS obvod 4532), kter˝ kÛduje stisknutÈ tlaËÌtko do dvou bit˘ - v˝vody Q0 a Q1. V˝vod
E0 je v†p¯ÌpadÏ uvolnÏn˝ch tlaËÌtek na logickÈ ˙rovni
H (logick· jedniËka - vysok· ˙roveÚ), pokud stiskne-
me libovolnÈ tlaËÌtko je v˝stup E0 nastaven na
logickou ˙roveÚ L (logick· nula-nÌzk· ˙roveÚ).
V˝vod E0 n·m tedy m˘ûe s†v˝hodou poslouûit
k†vyvol·nÌ p¯eruöenÌ INT0 nebo INT1, kdyû jej
p¯Ìmo spojÌme se stejnojmenn˝m v˝vodem mikro¯adiËe mϯicÌho modulu. Kondenz·tory C4
aû C7 jsou urËeny k†filtraci nap·jecÌho napÏtÌ.
Dynamick˝ provoz zobrazovacÌ jednotky je do
urËitÈ mÌry zdrojem impuls˘, kterÈ vznikajÌ
v†okamûicÌch sepnutÌ ¯ÌdicÌch tranzistor˘. FiltraËnÌ kondenz·tory zajiöùujÌ, aby byly impulsy potlaËeny na minim·lnÌ ˙roveÚ, a tak se nestaly
zdrojem ruöenÌ pro jinÈ obvody.
Na obr·zku Ë.11 jsou zn·zornÏny obÏ strany ploönÈho spoje zobrazovacÌ jednotky. Ploön˝ spoj m· prokovenÈ otvory a je opat¯en
nep·jivou maskou. OsazovacÌ v˝kres zobrazovacÌ jednotky je na obr·zku Ë.12. TlaËÌtka SW1
aû SW4 jsou typu P-B170 a lze je doplnit o barevnÈ hmatnÌky a krytky. Celou zobrazovacÌ jednotku pak m˘ûeme umÌstit na ËelnÌ panel
za¯ÌzenÌ, kter˝ m˘ûe b˝t opat¯en filtrem
z†ËervenÈho plexiskla a ötÌtkem s†popisem. Pro
p¯ipojenÌ nap·jecÌho napÏtÌ a p¯ipojenÌ v˝vod˘
z†kodÈru tlaËÌtek je ploön˝ spoj osazen dvou¯ad˝mi konektorov˝mi kolÌky, na kterÈ lze p¯ÌvodnÌ vodiËe buÔ p¯Ìmo p¯ip·jet nebo pouûÌt
samo¯eznou z·suvku konektoru pro poËÌtaËe
typu PFL.
NynÌ se jiû koneËnÏ dostaneme
k†programov·nÌ. Z†d˘vodu znaËnÈ dÈlky programu, jehoû podrobn˝ v˝pis spolu
Obr. 11 - Plošný spoj zobrazovací jednotky; A - strana spojù,
s†odpovÌdajÌcÌm koment·¯em by znaËnÏ p¯es·hl
B - strana souèástek
r·mec vymezen˝ tomuto dÌlu kursu, uvedu jen
ty nejd˘leûitÏjöÌ Ë·sti v˝pisu programu tak, aby Ëten·¯ s†v·ûn˝m z·a kaûd˝ datov˝ ˙daj bude obsahovat 1 start bit, 8 datov˝ch bit˘ a 1
jmem o programov·nÌ mikro¯adiˢ mÏl vodÌtko pro snazöÌ vniknutÌ
stop bit. Pro stanovenÌ form·tu dat vytvo¯Ìme sv˘j vlastnÌ p¯edpis,
kter˝ bude nejlÈpe splÚovat stanovenÈ poûadavky.
do problematiky a nemusel ztr·cet Ëas zbyteËn˝m experimentov·Abychom mohli zobrazit r˘znÈ znaky, musÌme si nejprve definÌm. Pro ty, kte¯Ì se nechtÏjÌ zdrûovat s†psanÌm vlastnÌ verze progranovat vlastnÌ znakovou sadu. Po sÈriovÈ lince budeme posÌlat
mu, nabÌzÌm naprogramovan˝ mikro¯adiË AT89C2051.
po¯adovÈ ËÌslo p¯ÌsluönÈho znaku a v†zobrazovacÌ jednotce toto
N·vrh programu vûdy zaËÌn· anal˝zou ¯eöenÈho problÈmu.
ËÌslo dekÛdujeme a p¯evedeme na odpovÌdajÌcÌ znak. V†˙vahu
V†naöem p¯ÌpadÏ poûadujeme p¯ijÌmat data po sÈriovÈ lince, dekÛp¯ipadajÌ n·sledujÌcÌ znaky (prvnÌ je po¯adovÈ ËÌslo znaku a za
dovat je a zobrazit na odpovÌdajÌcÌm displeji. Aby zobrazovacÌ jeddvojteËkou je odpovÌdajÌcÌ znak): 0:0, 1:1, 2:2, 3:3, 4:4, 5:5, 6:6,
notka nereagovala na nÏjak˝ n·hodn˝ shluk impuls˘ na sÈriovÈ lince,
7:7, 8:8, 9:9, 10:A, 11:b, 12:C, 13:d, 14:E, 15:F, 16:G, 17:H, 18:I,
je vybavena svou vlastnÌ adresou. Teprve v†p¯ÌpadÏ, ûe adresa p¯ijÌ19:J, 20:L, 21:n, 22:o, 23:P, 24:r, 25:t, 26:U, 27:Y, 28:-, 29:=,
man· po lince souhlasÌ s†adresou jednotky, jsou p¯ijat· data dekÛdo30:= --- (t¯i vodorovnÈ segmenty), 31: ^ (hornÌ vodorovn˝ segv·na a dojde k†zobrazenÌ poûadovan˝ch znak˘. Teoreticky je moûnÈ
ment), 32:_, 33:] (prav· lomen· z·vorka), 34:[ (lev· lomen· z·vormÌt na stejnÈ sÈriovÈ lince umÌstÏn vÏtöÌ poËet zobrazovacÌch jednoka), 35:hornÌ o (o - stupeÚ C), 36:hornÌ obr·cenÈ u, 37:u, 38:ll, 39:
tek, kter˝m p¯idÏlÌme r˘znÈ adresy. Prakticky moûnost adresov·nÌ
hornÌ a spodnÌ vodorovn˝ segment, 40:pr·zdn˝ (zhasnut˝ dismodul˘ vyuûijeme nejËastÏji pro moduly r˘zn˝ch typ˘, kterÈ by byly
plej). Celkem m·me definov·no 41 r˘zn˝ch znak˘, p¯iËemû ËÌsliovl·d·ny p¯es tuto spoleËnou sÈriovou linku. D·le bychom chtÏli
ce 0 aû 9 majÌ shodnÈ po¯adovÈ ËÌslo.
¯Ìdit jas displeje a ovl·dat dvÏ diody LED spolu s†jednou desetinnou
ZobrazovacÌ jednotce d·le musÌme po sÈriovÈ lince sdÏlit jejÌ
teËkou. Nejprve si tedy musÌme definovat p¯enosov˝ protokol - tzn.
adresu a kÛdovÈ oznaËenÌ posÌlanÈho znaku (jeho po¯adovÈho
p¯edpis v†jakÈm form·tu budou data posÌl·na po sÈriovÈ lince. PoËÌsla), tj. zda znak p¯ÌsluöÌ displeji 1, 2, 3 nebo 4, p¯ÌpadnÏ zda se
kud se t˝k· komunikaËnÌch parametr˘ sÈriovÈ linky, tak d·me p¯edjedn· o ˙daj jasu nebo ˙daj pro diody LED. Vöechny tyto infornost standardnÌmu form·tu, kdy rychlost p¯enosu dat bude 9600 Bd
mace nelze vmÏstnat do jednoho bytu a proto je kaûd˝ p¯Ìkaz pro zobrazovacÌ jednotku
p¯en·öen ve dvou bytech. PrvnÌ byte obsahuje ve Ëty¯ech niûöÌch bitech (0 aû 3) kÛdovÈ
oznaËenÌ, kter˝ch je celkem öest. KÛdov·
oznaËenÌ jsou p¯idÏlena takto: kÛd 0 - jas, kÛd
1 - displej 1, kÛd 2 - displej 2, kÛd 3 - displej
3, kÛd 4 - displej 4 a kÛd 5 - desetinn· teËka,
LED2 a LED1. ⁄daj jasu je ËÌslo v†rozmezÌ 1
aû 32, kde hodnotÏ 1 odpovÌd· nejvyööÌ jas a
hodnotÏ 32 pak jas nejniûöÌ. V†bitech 4 aû 6
prvnÌho bytu je uloûena adresa zobrazovacÌ
jednotky. V†principu je tedy moûnÈ ovl·dat po
jednÈ lince aû osm jednotek. V†nejvyööÌm bitu
prvnÌho bytu je pak vûdy 1, kter· odliöuje adresov˝ byte od datovÈho. Druh˝ - datov˝ byte obsahuje v†nejvyööÌm bitu 0 a v†bitech 0
Obr. 12 - Osazovací výkres zobrazovací jednotky
aû 4 pak po¯adovÈ ËÌslo p¯en·öenÈho znaku. Bity 5 a 6 jsou
v†naöem p¯ÌpadÏ nevyuûity. Kaûd˝ program·tor je m˘ûe vyuûÌt
libovolnÏ, nap¯. pro rozö̯enÌ znakovÈ sady nebo pro jin˝ ˙Ëel.
Z†p¯edchozÌho popisu vidÌme, ûe anal˝za Ëinnosti zobrazovacÌ jednotky je pomÏrnÏ sloûit· a pro prvnÌ pokusy s†mikro¯adiËi
nenÌ tato jednotka p¯Ìliö vhodn·. Moûnost zobrazenÌ m· ovöem
pro n·s klÌËov˝ v˝znam, zejmÈna ve f·zi ladÏnÌ programu mikro¯adiËe. Proto dokonËÌm cel˝ postup n·vrhu zobrazovacÌ jednotky tak, aby bylo z¯etelnÈ, co v˝voj za¯ÌzenÌ
s†mikro¯adiËi obn·öÌ. JednoduööÌ a tÌm i p¯e- hlednÏjöÌ n·vrh program˘ pro AT89C2051 si pak uk·ûeme v†dalöÌm dÌlu kursu s†mϯicÌ
jednotkou, ke kterÈ jiû budeme mÌt p¯ipojenu zobrazovacÌ jednotku.
N·vrh programu bude nynÌ pokraËovat hierarchick˝m rozkladem ˙lohy. Je to urËit· obdoba v˝vojovÈho diagramu, ten
ovöem zach·zÌ do vÏtöÌch podrobnostÌ a zp˘sobuje niûöÌ p¯ehlednost n·vrhu. Hierarchick˝ rozklad si rozËlenÌme na dva
stupnÏ. V†prvnÌm stupni navrhneme hlavnÌ programovÈ moduly, kterÈ budeme pro zobrazovacÌ jednotku pot¯ebovat a ve
druhÈm stupni si pak tyto hlavnÌ moduly up¯esnÌme.
;
;Bitov· RWM
;
@22H
8-/7-/6-/5-/Dis4/Dis3/Dis2/Dis1
;
@23H
8-/7-/6-/DT2/5-/4-/3-/LED2/
; @24H
8-/7-/6-/5-/4-/3-/2-PZhas/1-
LED1
PMD
;
PMD: p¯Ìznak modulu displeje
;
PZhas:p¯Ìznak zhasnuti displeje
;Konstanty
Hierarchick˝ rozbor ˙lohy - 1.stupeÚ:
1. PostupnÈ zobrazenÌ znak˘ na displejÌch 1 aû 4
2. ZobrazenÌ stavu LED1, LED2 a desetinnÈ teËky
3. P¯i vzniku p¯eruöenÌ od sÈriovÈ linky dekÛdovat p¯ijatÈ znaky
Hierarchick˝ rozbor ˙lohy - 2.stupeÚ:
ad 1) PostupnÈ zobrazenÌ znak˘ na displejÌch 1 aû 4
a) P¯enos po¯adovÈho ËÌsla znaku 1 z†pamÏti dat (RWM) do st¯adaËe
b) KÛdov·nÌ tohoto ËÌsla na kÛd sedmisegmentovÈho displeje
c) ZobrazenÌ znaku 1 na displeji 1
d) Opakov·nÌ bod˘ a) aû c) pro displeje 2 aû 4
ad 2) ZobrazenÌ stavu LED1, LED2 a desetinnÈ teËky
a) ZjiötÏnÌ stavu LED1 v†pamÏti dat
b) NastavenÌ LED1 podle tohoto stavu
c) Opakovat p¯edchozÌ body pro LED2 a pro desetinnou teËku
ad 3) P¯i vzniku p¯eruöenÌ od sÈriovÈ linky dekÛdovat p¯ijatÈ znaky
a) Je-li p¯ijat˝ byte adresov˝, pak:
n test shody adresy zobrazovacÌ jednotky s†p¯ijatou adresou
n pokud nesouhlasÌ adresy, pak ukonËit p¯Ìjem dat
n pokud souhlasÌ adresy, pak uloûit p¯ijat˝ byte do datovÈ pamÏti a nastavit p¯Ìznak p¯Ìjmu prvnÌho bytu
b) Je-li p¯ijat˝ byte datov˝, pak:
n test, zda je nastaven p¯Ìznak p¯Ìjmu prvnÌho bytu
n pokud ne, ukonËit p¯Ìjem, jinak uloûit p¯ijat˝ byte do datovÈ pamÏti na
mÌsto danÈ obsahem bit˘ 0 aû 3 prvnÌho bytu (kÛdovÈ oznaËenÌ).
NynÌ jiû m˘ûeme p¯ikroËit k†psanÌ vlastnÌho programu
v†jazyce symbolick˝ch adres. Pokud pot¯ebujeme bliûöÌ rozbor
nÏkterÈ Ë·sti programu, m˘ûeme si nakreslit klasick˝ v˝vojov˝
diagram. Jinak m˘ûeme p¯Ìmo ps·t program. Nejprve
navrhneme obsazenÌ datovÈ pamÏti a definujeme pot¯ebnÈ konstanty:
.EQU
Zobr1,P3.2
;Ovl·d·nÌ displeje 1
.EQU
Zobr2,P3.3
;Ovl·d·nÌ displeje 2
.EQU
Zobr3,P3.4
;Ovl·d·nÌ displeje 3
.EQU
Zobr4,P3.5
;Ovl·d·nÌ displeje 4
.EQU
ZobDT,P1.7 ;Ovl·d·nÌ desetinnÈ
teËky
.EQU
ZobL1,P3.7 ;Ovl·d·nÌ LED1
.EQU
ZobL2,P3.1 ;Ovl·d·nÌ LED2
.EQU
Dis1,16
;P¯Ìznak displeje 1
.EQU
Dis2,17
;P¯Ìznak displeje 2
.EQU
Dis3,18
;P¯Ìznak displej 3
.EQU
Dis4,19
;P¯Ìznak displeje 4
.EQU
LED1,24
;LED dioda 1
.EQU
LED2,25
;LED dioda 2
.EQU
DT2,29
.EQU
PMD,32
;P¯Ìznak modulu
.EQU
PZhas,33
;P¯Ìznak displeje
.EQU
Displej1,Hí78 ;Adresa RWM -
;Desetinn· teËka 2
displeje
Displej1
;Obsazeni RWM:
;
@7BH
Displej4 - po¯adovÈ ËÌslo znaku 4
;
@7AH
Displej3 - po¯adovÈ ËÌslo znaku 3
;
@79H
Displej2 - po¯adovÈ ËÌslo znaku 2
;
@78H
Displej1 - po¯adovÈ ËÌslo znaku 1
;
@77H
PoËet Ëasov˝ch cykl˘ (CasCykl)
;
@76H
Intenzita jasu displeje 1 aû 32
.EQU
CasCykl,Hí77 ;Adresa RWM -
»asCyklu
.EQU
Citac,Hí74
;Adresa citace
.EQU
Jas,Hí76
.EQU
TestZnak,Hí7 ;»Ìslo testovanÈho
.EQU
CitCyklu,Hí71 ;»ÌtaË cyklu Low
.EQU
CitacDT,Hí60 ;»ÌtaË pro
;Jas displeje 1 aû
255
znaku
(Jas)
;
@75H
P¯Ìznak leg·lnÌho resetu (AAH)
;
@74H
»ÌtaË
;
@72H
»ÌtaË cyklu High
;
@71H
»ÌtaË cyklu Low
;
@70H
»Ìslo testovanÈho znaku
;
@60H
»ÌtaË pro desetinnÈ teËky
des.teËky
.EQU
Adresa,hí10
;Adresa modulu
KonstCasu,1
;Konstanta pro
displeje
.EQU
Ëasovou smyËku
⁄vod1:
ÿ·dky programu, kterÈ zaËÌnajÌ st¯ednÌkem slouûÌ jako
koment·¯ a p¯ekladaË je p¯eskoËÌ. Koment·¯ m˘ûeme umÌstit
i za p¯Ìkaz na stejnou ¯·dku. Z†d˘vodu maxim·lnÌ p¯ehlednosti programu je velmi vhodnÈ pouûÌvat co nejvÌce koment·¯˘
tak, abychom se v†programu snadno orientovali i v†p¯ÌpadÏ,
kdyû se k nÏmu vr·tÌme po nÏkolika t˝dnech nebo mÏsÌcÌch a
pot¯ebujeme provÈst nÏkterÈ ˙pravy.
ObsazenÌ pamÏti dat RWM urËuje, na kter˝ch
hexadecim·lnÌch adres·ch budou uloûena p¯Ìsluön· data.
Po¯adovÈ ËÌslo znaku pro displej 1 tedy bude uloûeno na adrese
H78 a v†seznamu konstant vidÌme , ûe jsme tÈto adrese p¯idÏlili symbolickÈ jmÈno Displej1. Pokud pak d·le v†programu
pot¯ebujeme pouûÌt hodnotu tÈto pamÏùovÈ buÚky ,
odvol·v·me se na ni jejÌm symbolick˝m jmÈnem a nemusÌme
ps·t jejÌ hexadecim·lnÌ adresu. P¯Ìkaz MOV A,#Hí78 je totoûn˝
s†v˝razem MOV A,#Displej1 a v†obou p¯Ìpadech dojde
k†naplnÏnÌ st¯adaËe hodnotou H78.
BitovÏ orientovan· Ë·st pamÏti RWM je velmi uûiteËn· pro
p¯Ìpady, kdy n·m staËÌ pro urËenÌ urËitÈho stavu jen jeden bit.
M˘ûe se jednat o p¯Ìpad, kdy pot¯ebujeme zn·t, zda jiû probÏhla
urËit· Ë·st programu. Do tÈto Ë·sti tedy umÌstÌme instrukci
SETB Dis1 a tÌm dojde k†nastavenÌ bitu s†adresou 16 na logickou jedniËku. Stav tohoto bitu pak m˘ûeme testovat v†jinÈ
Ë·sti programu instrukcemi JB, JNB nebo JBC. Instrukce JBC
n·m navÌc obsah tohoto bitu nastavÌ zpÏt na logickou nulu
stejnÏ jako instrukce CLR Dis1. ProË je symbolic kÈmu jmÈnu
Dis1 p¯i¯azena zrovna bitov· adresa 16? BitovÏ orientovan·
Ë·st pamÏti zaËÌn· na adrese H20. Kdybychom chtÏli umÌstit
bit na prvnÌ moûnou pozici, p¯i¯adÌme mu adresu 1, coû je prvnÌ
bit u bytu s†adresou H20. My jsme ovöem umÌstili bit Dis1 na
pozici 16 a to je prvnÌ pozice u bytu s†adresou H22.
D·le uvedu ˙vodnÌ Ë·st v˝pisu programu, kter· zajiöùuje
nulov·nÌ datovÈ pamÏti RWM, nastavenÌ z·sobnÌku a nÏ-kterÈ
dalöÌ Ëinnosti:
.ORG
0
⁄vod
;Skok na ˙vodnÌ Ë·st
programu
.ORG
Hí0B
;Definice adresy progra-
mu, od kterÈ bude uloûen
AJMP
INTE
n·sledujÌcÌ kÛd
;Adresa 23 - skok
oöet¯enÌ p¯eruöenÌ
n a
sÈriovÈho portu
;
;INICIALIZACE
;
⁄vod:
MOV
R0,#Hí75
;Na adrese Hí75
uloûen p¯Ìznak leg·l
MOV
XRL
j
nÌho resetu
A,@R0
A,#HíAA
;Je-li p¯Ìznak
nastaven, tak neprov·dÏj
JZ
@R0,A
INC
R0
DJNZ
R7,Uvod1
MOV
SP,#Hí2F
;ZaË·tek z·sob-
nÌku umÌstÌme na adresu
MOV
MOV
30H
R0,#Hí75
@R0,#HíAA ;NastavÌme
p¯Ìznak leg·lnÌho resetu
MOV
R0,#Jas
MOV
@R0,#32
;NastavÌme
minim·lnÌ jas displeje
SETB
EA
;PovolÌme
vöechna p¯eruöenÌ
ACALL SetCasov
;Vol·nÌ podprogra
mu pro nastavenÌ
ËasovaËe sÈriovÈho portu
CLR
PMD
MOV
R0,#Hí22
MOV
@R0,#HíFF
;NastavenÌ
p¯Ìznak˘ displej˘
.
.
;⁄vod programu
AJMP
MOV
˙vodnÌ inicializaci
HlProgram
MOV
R7,#Hí5F
MOV
R0,#Hí20
CLR
A
e
U†tÈto Ë·sti programu jsou hned na poË·tku provedeny
instrukce nepodmÌnÏn˝ch skok˘. NÏkterÈ ˙vodnÌ adresy
programovÈ pamÏti jsou totiû pevnÏ vyhrazeny pro obsluhu
p¯eruöenÌ. Kdyû je nap¯Ìklad vyvol·no p¯eruöenÌ od sÈriovÈho
portu, tak je proveden skok na adresu Hí0B. Na tÈto adrese tedy
zaËÌn· obsluha p¯eruöenÌ a my ji p¯esmÏrujeme instrukcÌ skoku
na adresu INTE, coû je symbolick· adresa, kterou zaËÌn· podprogram obsluhy sÈriovÈho p¯eruöenÌ. KonkrÈtnÌ ËÌseln· adresa, od
kterÈ bude tato Ë·st programu umÌstÏna v†programovÈ pamÏti,
bude p¯idÏlena automaticky p¯ekladaËem p¯i p¯ekladu programu
a my ji tedy nemusÌme definovat v†seznamu konstant.
P¯Ìznak leg·lnÌho resetu nenÌ nutnou souË·stÌ programu, ale
jeho pouûitÌ zvyöuje spolehlivost programu zejmÈna v†p¯ÌpadÏ,
kdy nepouûÌv·me hlÌdacÌ obvod programu typu WatchDog.
V†p¯ÌpadÏ, ûe program p¯i svÈ Ëinnosti ìzabloudÌî a omylem skoËÌ
na nÏkterou ˙vodnÌ adresu, tak p¯Ìznak leg·lnÌho resetu nepustÌ
program p¯es inicializaËnÌ Ë·st, ve kterÈ se nuluje a nastavuje
obsah datovÈ pamÏti. Program tedy pokraËuje ve svÈ Ëinnosti
jako by se nic nestalo. P¯Ìpad, kdy by se program dostal aû za
konec aktivnÌ Ë·sti programu, kde nejsou jiû uloûeny û·dnÈ
instrukce, vy¯eöÌme tak, ûe tÏsnÏ p¯ed samotn˝ konec programu
(v p¯ÌpadÏ mikro¯adiËe AT89C2051) tedy na adresu H7FE umÌstÌme
instrukci skoku na ˙vod programu. Program, kter˝ vykon·v·
ìpr·zdnÈî instrukce se vlivem automatickÈ inkrementace ËÌtaËe
adres programu dostane na jeho konec, kde ho oËek·v· skok
zpÏt do aktivnÌ Ë·sti programu. P¯Ìpad, kdy se program dostane
do tzv. nekoneËnÈ smyËky, lze vy¯eöit pouze hlÌdacÌm obvodem,
kter˝ provede externÌ reset mikro¯adiËe. P¯edch·zet tomuto p¯Ìpadu m˘ûeme peËliv˝m n·vrhem programu. D·le uvedu v˝pis
podprogramu pro nastavenÌ ËasovaËe sÈriovÈho portu.
;Nulov·nÌ RWM
SetCasov:
MOV
A,#Hí27
reûimu 3 pro ËasovaË 0
;NastavenÌ
a reûimu 2 pro ËasovaË 1
MOV
TMOD,A
MOV
A,#HíFD
RETI
;NastavenÌ
rychlosti p¯enosovÈ linky
9600Bd
MOV
TH1,A
MOV
SCON,#Hí50 ;Reûim 1 pro
sÈriov˝ port
SETB
ES
;PovolenÌ
p¯eruöenÌ sÈriovÈho portu
SETB
TR1
;SpuötÏnÌ
gener·toru rychlosti
sÈriovÈ linky
RET
SÈriov˝ port mikro¯adiˢ ¯ady 8051 je plnÏ duplexnÌ, coû
znamen· ûe m˘ûe vysÌlat a p¯ijÌmat data souËasnÏ. P¯ijÌmacÌ a
vysÌlacÌ registry sÈriovÈho portu jsou dostupnÈ jako registr
speci·lnÌch funkcÌ SBUF. Z·pisem do SBUF se plnÌ vysÌlacÌ
registr a ËtenÌm SBUF se Ëte fyzicky oddÏlen˝ p¯ijÌmacÌ registr.
SÈriov˝ port m˘ûe pracovat ve Ëty¯ech r˘zn˝ch reûimech. Pro
n·ö ˙Ëel pouûijeme reûim 1, kdy se vysÌl· nebo p¯ijÌm· deset
bit˘: start bit (logick· hodnota 0), osm datov˝ch bit˘ (nejmÈnÏ
v˝znamnÈ bity nej-d¯Ìve) a stop bit (logick· hodnota 1). P¯enosov· rychlost se m˘ûe odvodit od ËasovaËe 1, kter˝ nastavÌme
do reûimu 2, jako osmibitov˝ ËÌtaË TL1 , kter˝ je p¯i p¯eplnÏnÌ
nastaven obsahem registru TH1. Ten softwarovÏ p¯ednastavÌme na hodnotu HFD, a tÌm dos·hneme p¯enosovÈ rychlosti 9600 Bd p¯i frekvenci krystalu 11,059 MHz.
Obsluha p¯eruöenÌ od sÈriovÈho portu zajiöùuje Ëinnosti,
kterÈ vypl˝vajÌ z†hierarchickÈho rozboru ˙lohy. Uvedu zde jen
Ë·st v˝pisu obsluhy p¯eruöenÌ, kter˝ zn·zornÌ problematiku tÈto
oblasti programov·nÌ.
;Oöet¯enÌ p¯eruöenÌ sÈriovÈho portu
;
INTE:
PUSH PSW
;UloûenÌ obsahu stavovÈho
slova do z·sobnÌku
PUSH ACC ;UloûenÌ obsahu st¯adaËe
z·sobnÌku
PUSH B
;UloûenÌ obsahu registru do
z·sobnÌku
CLR
RS0 ;NastavenÌ banky registr˘ 2
SETB RS1
CLR
RI
;Nulov·nÌ p¯Ìznaku p¯eruöenÌ
p¯i p¯Ìjmu
MOV A,SBUF ;P¯esun p¯ijat˝ch dat do
st¯adaËe
;Programov· Ë·st pro zpracov·nÌ p¯ijat˝ch dat
;...................................
EndES:
POP
B
;ObnovenÌ obsahu registr˘
uloûen˝ch v z·sobnÌku
registr˘
POP
ACC
POP
PSW
;V˝bÏr p˘vodnÌ sady
P¯i vyvol·nÌ p¯eruöenÌ je proveden skok na pevnou adresu
programu, kde umÌstÌme zaË·tek obsluhy p¯eruöenÌ. Po
ukonËenÌ obsluhy p¯eruöenÌ se program vracÌ zpÏt na adresu,
kde byl p¯ed p¯eruöenÌm. Abychom p¯edeöli pro- blÈm˘m se
zmÏnou obsahu registr˘, kterÈ pouûijeme v†podprogramu pro
obsluhu p¯eruöenÌ, tak uloûÌme na zaË·tku obsluhy p¯eruöenÌ
obsahy klÌËov˝ch registr˘ do z·sobnÌku a nastavÌme jinou banku
registr˘. Na konci obsluhy p¯eruöenÌ pak obnovÌme obsahy registr˘ a vr·tÌme banku registr˘ na p˘vodnÌ. TÌm zajistÌme, ûe
program bude po n·vratu z†p¯eruöenÌ pracovat s†tÏmi daty
v†registrech, se kter˝mi pracoval p¯ed p¯eruöenÌm.
Z†uvedenÈho v˝pisu je obsluha p¯eruöenÌ dostateËnÏ jasn·,
k†v˝bÏru p˘vodnÌ sady registr˘ staËÌ obnovit stavovÈ slovo PSW,
kterÈ obsahuje nastavenÌ sady registr˘ p¯ed p¯eruöenÌm.
VÏtöinou jde o sadu 0, kter· je automaticky nastavena po
zapnutÌ mikro¯adiËe na nap·jecÌ napÏtÌ.
ÿÌzenÌ jasu displeje dos·hneme tÌm, ûe do mÌst programu,
kde vypÌn·me a†zapÌn·me jednotlivÈ displeje, za¯a- dÌme
podprogram s†ËekacÌ Ëasovou smyËkou. Doba Ëek·nÌ je z·visl·
na konstantÏ jasu, kter· je v†rozmezÌ 1 aû 32. Pro hodnotu 32
je tedy jas minim·lnÌ. Prodluûov·nÌ doby Ëek·nÌ nad tuto hodnotu nem· v˝znam, protoûe p¯i delöÌch dob·ch Ëek·nÌ zaËnou
displeje problik·vat. V˝pis s†p¯Ìkladem podprogramu ËasovÈ
smyËky je pomÏrnÏ kr·tk˝:
;»asov· smyËka, Vstup je Jas = konstanta pro nastavenÌ jasu 1 aû 32
;
Cas2:
MOV
R0,#Jas
MOV
A,@R0
MOV
B,A
Cas2B:
MOV
R7,B
Cas2A:
DJNZ
R7,»as2A
DEC
A
JNZ
»as2B
RET
d o
V˝pis tÈto Ë·sti programu ani nepot¯ebuje bliûöÌ koment·¯,
protoûe je velmi jednoduch˝. Jedn· se v†podstatÏ o dvoustupÚov˝ ËÌtaË. Dobu trv·nÌ tÈto ËasovÈ smyËky m˘ûeme urËit zjiötÏnÌm poËtu cykl˘ vöech instrukcÌ a vyn·sobenÌm tohoto poËtu
dobou prov·dÏnÌ jednoho cyklu instrukce.
Program obsahuje jeötÏ velkou Ë·st kÛdu, ten je vöak jiû
specializov·n na dekÛdov·nÌ znak˘ pro zobrazenÌ a†vlastnÌ
obsluhu jednotliv˝ch displej˘. Proto jiû dalöÌ v˝pisy nebudu
uv·dÏt. Kdo m· Ëas a chuù m˘ûe si program dokonËit s·m,
ostatnÌm mohu nabÌdnout stavebnici zobrazovacÌ jednotky
buÔ jako sadu souË·stek nebo jako hotov˝ a odzkouöen˝
modul. Stavebnice obsahuje oboustrannou desku ploönÈho
spoje s†nep·jivou maskou, kompletnÌ sadu souË·stek (vËetnÏ kryt˘ a†hmatnÌk˘ tlaËÌtek) a rovnÏû naprogramovan˝ mikro¯adiË AT89C2051. Cena stavebnice je 680,- KË, cena
kompletnÌho modulu je 890,- KË. Ceny jsou uvedeny i s†DPH.
K†cen·m bude d·le uËtov·no poötovnÈ podle platn˝ch sazeb. Pro z·jemce je p¯ipravena rovnÏû disketa s†volnÏ öi¯itelnou verzÌ p¯ekladaËe A51 za cenu 40,- KË. Objedn·vat
m˘ûete na adrese ERM-Ing.RadomÌr MatulÌk, Bartoöova
206, 765 02 Otrokovice. (Telefon: 0603 217 899, tel./
fax/z·zn.: 067 / 922 759).
8.Ë·st - MϯicÌ modul s†mikro¯adiËem AT89C2051
MϯicÌ modul je univerz·lnÌ aplikace s†mikro¯adiËem
AT89C2051. VyuûitÌ nalezne p¯edevöÌm p¯i mϯenÌ elektrickÈho napÏtÌ, mϯenÌ s†odporov˝mi snÌmaËi teploty nebo s†tenzometrick˝mi
polovodiËov˝mi snÌmaËi pro mϯenÌ sÌly. Modul je vybaven v˝konov˝m relÈ, kterÈ umoûnÌ realizovat i dvoustavovÈ regul·tory. Z·lohovacÌ akumul·tor umoûÚuje zachovat obsah vnit¯nÌ pamÏti
mikro¯adiËe i p¯i vypnutÈm nap·jenÌ, coû je v˝hodnÈ nap¯. pro
uchov·nÌ poûadovanÈ hodnoty pro regul·tor. Obvod typu WatchDog zvyöuje spolehlivost modulu a usnadÚuje takÈ v˝voj a ladÏnÌ
programu mikro¯adiËe. Obvod pro sÈriovÈ rozhranÌ pak umoûnÌ
p¯ÌmÈ propojenÌ mϯicÌho modulu s†rozhranÌm RS232 osobnÌho
poËÌtaËe (PC).
SchÈma zapojenÌ mϯicÌho modulu je na obr.13. J·drem
modulu je n·m jiû dob¯e zn·m˝ mikro¯adiË AT89C2051 ve standardnÌm zapojenÌ. Krystal XT1 m· jmenovitou frekvenci
11,059†MHz pro snadnÈ odvozenÌ komunikaËnÌ rychlosti sÈriovÈho portu. Mikro¯adiË je doplnÏn hlÌdacÌm obvodem typu
WatchDog (D1 MAX706). Tento obvod od firmy Maxim hlÌd·
Ëinnost programu mikro¯adiËe, kter˝ musÌ minim·lnÏ v†intervalu
1,6 sekundy vyslat impulz na v˝vod 6 (WDI) obvodu D1. Program tedy musÌ na vhodn˝ch mÌstech obsahovat vol·nÌ procedury, kter· vysÌl· tento impulz. V†p¯ÌpadÏ zacyklenÌ programu
vlivem n·hodnÈ chyby nebo vlivem chybnÏ napsanÈho programu zejmÈna p¯i jeho v˝voji, nenÌ impulz vysl·n a obvod D1 vyöle resetovacÌ impulz na v˝vod 7 (Reset). Tento impulz zp˘sobÌ
resetov·nÌ mikro¯adiËe, kter˝ se tak vymanÌ z†nekoneËnÈ smyËky
a program zaËÌn· svou Ëinnost od zaË·tku. V˝skyt resetovacÌho impulzu je signalizov·n svÌtivou diodou D3, zapojenou do
obvodu tranzistoru T2. Obvod D1 je umÌstÏn v†patici a jeho p¯Ìtomnost nenÌ pro funkci modulu nezbytn·. NicmÈnÏ p¯i odlaÔov·nÌ programu n·m m˘ûe jeho pouûitÌ uöet¯it mnoho Ëasu.
DalöÌ d˘leûitou souË·stÌ modulu je AD p¯evodnÌk typu
C520D. Tento 10-bitov˝ p¯evodnÌk je dnes jiû klasikou a nebyl
by û·dn˝ problÈm pouûÌt nÏkter˝ z†moder- nÌch typ˘ AD p¯evodnÌk˘, kterÈ jsou v†nabÌdk·ch firem Maxim nebo Analog Devices. Jejich po¯izovacÌ ceny by ovöem v˝raznÏ ovlivnily
v˝slednou cenu mϯicÌho modulu a tak obvod C520D je se svou
dneönÌ cenou (50,- aû 70,-KË) velmi dobrou volbou. TechnickÈ
parametry p¯evodnÌku C520D byly v†odborn˝ch Ël·ncÌch jiû
mnohokr·t pops·ny, proto jen p¯ipomenu ty nejd˘leûitÏjöÌ. Jedn· se o integraËnÌ p¯evodnÌk s†jednoduch˝m nap·jecÌm napÏtÌm +5†V, umÌstÏn˝ v†pouzd¯e DIL s 16-ti v˝vody. VstupnÌ odpor
p¯evodnÌku je typicky 1MW , chyba linearity je max. 0,1†%, rychlost mϯenÌ je voliteln· - pomal˝ p¯evod v†rozmezÌ od 2 do
7 mϯenÌ/s, nebo rychl˝ p¯evod v†rozmezÌ od 48 do 186 mϯenÌ/s
v†z·vislosti na kmitoËtu vnit¯nÌho oscil·toru. VstupnÌ rozsah p¯e-
vodnÌku je od -99 do +999†mV. Nap·jecÌ proud p¯evodnÌku je
max. 20†mA. V˝stupy p¯evodnÌku jsou ¯Ìzeny multiplexorem a
umoûÚujÌ p¯ipojit t¯i 7-segmentovÈ zobrazovaËe. V†naöem zapojenÌ jsou v˝stupy p¯ipojeny p¯Ìmo k†mikro¯adiËi. V˝vody p¯evodnÌku oznaËenÈ LSD, NSD a MSD signalizujÌ svou nÌzkou
napÏùovou ˙rovnÌ ¯·d ËÌslice, kter· je pr·vÏ dostupn· v†BCD
kÛdu na v˝vodech Qa aû Qd. V˝pis programu pro obsluhu p¯evodnÌku C520D, kter˝ d·le uv·dÌm, ukl·d· v˝slednÈ hodnoty
v†BCD kÛdu do RWM pamÏti mikro¯adiËe na adresy ADVysl,
ADVysl+1 a ADVysl+2. Tyto hodnoty je pak moûnÈ p¯Ìmo poslat
na zobrazovacÌ jednotku.
;OBSLUHA AD PÿEVODNÕKU C520D
;Vystup: @ADVysl=LSD,@(ADVysl +1)=NSD,@(ADVysl+2)=MSD
ADPrevod:
MOV
R0,#(ADVysl+2)
ADP1: MOV
R7,#4
JB
MSD,*
ADP2: JB
MSD,ADP1
DJNZ
R7,ADP2
MOV
A,P1
ANL
A,#Hí0F
MOV
@R0,A
MOV
R0,#ADVysl
ADP3: MOV
R7,#4
JB
LSD,*
ADP4: JB
LSD,ADP3
DJNZ
R7,ADP4
MOV
A,P1
ANL
A,#Hí0F
MOV
@R0,A
MOV
R0,#(ADVysl+1)
ADP5: MOV
R7,#4
JB
NSD,*
ADP6: JB
NSD,ADP5
DJNZ
R7,ADP6
MOV
A,P1
ANL
A,#Hí0F
MOV
@R0,A
RET
Kalibraci AD p¯evodnÌku lze prov·dÏt vÌceot·Ëkov˝mi trimry R20 a R21. Trimrem R20 nastavujeme nulovou hodnotu, trimrem
R21
nastavujeme jmenovitou hodnotu.
AD
p¯evodnÌk
C520D neumÌ zobrazovat z·pornÈ
znamÈnko. Program
mikro¯adiËe proto
filtruje znak vysÌlan˝
p¯evodnÌkem p¯i z·pornÈ hodnotÏ mϯenÈho napÏtÌ a na
displej posÌl· spr·vnÏ z·pornÈ znamÈnko. RovnÏû p¯i
p¯ekroËenÌ mϯenÈho rozsahu v†obou
polarit·ch jsou znaky vysÌlanÈ p¯evodnÌkem nahrazeny
devÌtkami a dalöÌ obsluûn· procedura
zajiöùuje blik·nÌ v˝-
Obr. 13 - Schéma zapojení mìøícího modulu
slednÈho ˙daje na zobrazovacÌ jednotce.
ZobrazovacÌ jednotka je k†mikro¯adiËi p¯ipojena jednÌm v˝vodem (v˝vod 9 obvodu D2) a komunikace probÌh· ve form·tu
popsanÈm v†p¯edchozÌm dÌle tohoto kursu. Pro vysÌl·nÌ dat na
tento v˝vod mikro¯adiËe je urËen podprogram, kter˝ simuluje
bÏûnou sÈriovou linku mikro¯adiËe s†rychlostÌ p¯enosu 9600†Bd.
Mohli bychom pro tento ˙Ëel vyuûÌt v˝vod 3 mikro¯adiËe (TxD)
a tÌm i plnÈ podpory mikro¯adiËe pro sÈriovou komunikaci. StandardnÌ sÈriov˝ kan·l ovöem pot¯ebujeme pro p¯enos namϯen˝ch dat do poËÌtaËe linkou RS232.
Pro propojenÌ mϯicÌho modulu s†poËÌtaËem je urËen obvod
U4 (ICL232), kter˝ obsahuje Ëty¯i vysÌlaËe a Ëty¯i p¯ijÌmaËe pro
p¯ipojenÌ logiky TTL s†linkou RS232. Pro n·ö ˙Ëel vyuûijeme
pouze dva p¯ijÌmacÌ a dva vysÌlacÌ v˝vody. Obvod U4 je umÌstÏn v†patici a pokud nevyûadujeme sÈriovou komunikaci s†poËÌtaËem, nemusÌme jej osazovat.
DalöÌ Ë·stÌ mϯicÌho modulu jsou analogovÈ obvody pro p¯ipojenÌ snÌmaËe. Jedn· se o obvod Z2 (723), kter˝ je zapojen
jako zdroj konstantnÌho proudu. ReferenËnÌ napÏtÌ je p¯ivedeno
z†v˝vodu 4 p¯es dÏliË R1 a R2 na v˝vod 3. Proud, kter˝ protÈk· z†v˝vodu 6 p¯es m˘stek sloûen˝ z†rezistor˘ R13 aû R16,
protÈk· rovnÏû p¯es referenËnÌ rezistor R3, na kterÈm vytv·¯Ì
˙bytek napÏtÌ. Toto napÏtÌ je p¯ivedeno na v˝vod 2 obvodu Z2.
Protoûe v˝vody 2 a 3 jsou v†podstatÏ vstupy operaËnÌho zesilovaËe a v˝vod 6 je v˝stup, a celÈ zapojenÌ obsahuje z·pornou
zpÏtnou vazbu, tak je napÏtÌ na v˝vodu 2 rovno napÏtÌ na v˝vodu 3. Z†Ohmova z·kona pak vypoËÌt·me velikost konstantnÌho proudu pro m˘stek: Ik=U/R3 = 3,6 V / 3900†W =†0,92†mA.
Tato velikost proudu je vhodn· nap¯. pro odporovÈ teplotnÌ
Ëidlo typu KTY10-6, kterÈ je pouûito i v†naöem zapojenÌ mϯicÌho modulu. Toto Ëidlo je umÌstÏno v†pouzdru TO92 a je vhodnÈ
pro mϯenÌ teplot v†rozmezÌ od -50 ∞C do +125 ∞C. Vzhledem
k†tomu, ûe rozsah mϯenÈho napÏtÌ je v†rozmezÌ od -99 do
+999†mV, tak pouûijeme snÌmaË pro mϯenÌ teploty v†rozmezÌ od -9,9 do +99,9 ∞C.
Bez vÏtöÌch problÈm˘ lze rovnÏû pouûÌt
odporov˝ snÌmaË teploty typu Pt100. Je
pouze nutnÈ zmÏnit hodnoty ostatnÌch rezistor˘ v†m˘stku a takÈ zmÏnit zesÌlenÌ zesilovaËe U2. MÌsto rezistor˘ R13 aû R16
m˘ûeme takÈ pouûÌt m˘stek sloûen˝ ze
Ëty¯ polovodiËo- v˝ch tenzometr˘ a zÌskat tak mϯiË sÌly. Pro tento ˙Ëel je nutnÈ
zvÏtöit hodnotu konstantnÌho proudu a
rovnÏû nastavit vÏtöÌ zesÌlenÌ zesilovaËe
U2.
V˝stupnÌ napÏtÌ m˘stku je p¯ivedeno na
vstupy operaËnÌho zesilovaËe U2, kter˝ je
zapojen jako rozdÌlov˝ zesilovaË. Jeho
v˝stup je pak p¯ipojen p¯es rezistor R17
na mϯicÌ vstup AD p¯evodnÌku U1. NastavenÌ teplotnÌho Ëidla m˘ûeme provÈst bÏûnÏ pouûÌvanou metodou, kdy nulovou
teplotu nastavÌme trimrem R20 pro snÌmaË
umÌstÏn˝ v†n·dobÏ s†tajÌcÌm ledem a jmenovitou hodnotu 99,9∞C nastavÌme trimrem R21 pro snÌmaË umÌstÏn˝ v†n·dobÏ
s†vodou o teplotÏ varu.
Obvod mikro¯adiËe je doplnÏn z·lohovacÌm akumul·torem B1, kter˝ umoûÚuje
zachovat obsah vnit¯nÌ pamÏti RWM mikro¯adiËe i p¯i vypnutÈm nap·jenÌ. Tak m˘ûeme nap¯. uchovat v†pamÏti hodnotu
poûadovanÈ teploty p¯i pouûitÌ modulu ve
funkci regul·toru teploty. Po zapnutÌ hlavnÌho nap·jenÌ je proveden reset mikro¯adiËe, p¯i kterÈm nenÌ zmÏnÏn obsah
pamÏti RWM a†poûadovan· teplota z˘st·v· v†tÈto pamÏti uchov·na. Akumul·tor
m· jmenovitÈ napÏtÌ 3,6†V a je
k†nap·jecÌmu v˝vodu mikro¯adiËe p¯ipojen p¯es rezistor R23 a diodu D7. P¯i zaObr.
pnutÈm nap·jenÌ je akumul·tor dobÌjen
proudem asi 0,6†mA. P¯i vypnutÈm nap·jenÌ je mikro¯adiË nap·jen z akumul·toru p¯es diodu D7. Pro minimalizaci proudovÈho
odbÏru mikro¯adiËe musÌme zajistit jeho p¯evedenÌ do reûimu
se snÌûen˝m p¯Ìkonem (Power Down Mode). V†tomto reûimu
je oscil·tor mikro¯adiËe zastaven a jeho uvedenÌ do Ëinnosti je
moûnÈ pouze hardwarov˝m resetem, nap¯. zapnutÌm hlavnÌho
nap·jecÌho napÏtÌ. V†reûimu se snÌûen˝m p¯Ìkonem je proudov˝
odbÏr mikro¯adiËe menöÌ neû 20†mA p¯i napÏtÌ 3†V na nap·jecÌm v˝vodu mikro¯adiËe. NapÏtÌ nesmÌ klesnout pod hodnotu
2†V. P¯evedenÌ mikro¯adiËe do reûimu se snÌûen˝m p¯Ìkonem se
prov·dÌ softwarovÏ nastavenÌm bitu PD registru PCON na hodnotu logick· 1. S†hodnotami souË·stek pouûit˝ch v†mϯicÌm
modulu je odbÏr mikro¯adiËe v†reûimu se snÌûen˝m p¯Ìkonem
asi 7†mA a p¯i kapacitÏ akumul·toru 100mAh by pak z·lohov·nÌ
mohlo trvat aû 600 dn˘.
MϯicÌ modul ve funkci regul·toru teploty obsahuje i v˝stupnÌ v˝konovÈ relÈ RE1, kterÈ m· jeden p¯epÌnacÌ kontakt
s†maxim·lnÌm zatÌûenÌm 10†A p¯i st¯ÌdavÈm napÏtÌ 400†V. Lze
jÌm tedy p¯Ìmo spÌnat odporovou z·tÏû (topnÈ tÏleso) aû do v˝konu 2500†VA. RelÈ m· ke svÈmu vinutÌ paralelnÏ p¯ipojenu diodu D6 pro omezenÌ napÏùov˝ch öpiËek p¯i jeho spÌn·nÌ. RelÈ je
ovl·d·no p¯es dvojici tranzistor˘ T1 a T3, p¯iËemû v†obvodu
tranzistoru T1 je zapojena dioda LED pro signalizaci sepnutÌ
relÈ. RegulaËnÌ algoritmus je velmi jednoduch˝. Mϯen· hodnota teploty je po kaûdÈm mϯicÌm cyklu porovn·v·na
s†poûadovanou hodnotou teploty a pokud je poûadovan· hodnota teploty vÏtöÌ neû mϯen· teplota, tak je d·n povel k†sepnutÌ
relÈ. Aby relÈ nekmitalo p¯i shodÏ mϯenÈ a poûadovanÈ teploty, je zavedeno nÏkolikasekundovÈ zpoûdÏnÌ pro sepnutÌ relÈ.
Pro snÌûenÌ p¯ekmitu regul·toru obsahuje algoritmus pevnÏ nastavenou hodnotu hystereze, kter· vymezuje p·smo necitlivosti
regul·toru. Algoritmus je naprogramov·n bez pouûitÌ knihoven
14 - Plošné spoje modulu; strana A a B
aritmetick˝ch funkcÌ a vystaËÌ s†bÏûnou bin·rnÌ
aritmetikou podporovanou mikro¯adiËem.
Pro zad·nÌ hodnoty poûadovanÈ teploty slouûÌ kl·vesnice, kter· je souË·stÌ modulu zobrazovacÌ jednotky. Kl·vesnice je s†mϯicÌm
modulem propojena t¯emi v˝vody oznaËen˝mi
jako E0, Q0 a Q1. V˝vod E0 je p¯ipojen ke vstupu
mikro¯adiËe INT0, kter˝ umoûÚuje obsluhu externÌho p¯eruöenÌ. Po stisku libovolnÈho z†tlaËÌtek
je vyvol·no p¯eruöenÌ, ve kterÈm jsou testov·ny
stavy v˝vod˘ s†p¯ipojen˝mi sign·ly Q0 a Q1. Tak
je dekÛdov·no stisknutÈ tlaËÌtko a program pak
jiû m˘ûe provÈst dalöÌ procedury pro obsluhu
tohoto tlaËÌtka. V†z·kladnÌm programu jsem naprogramoval tlaËÌtko SW1 pro zobrazenÌ hodnoty poûadovanÈ teploty. Po prvnÌm stisku tohoto
tlaËÌtka je rozsvÌcena signalizaËnÌ dioda D1 u zobrazovacÌ jednotky a z·roveÚ je zobrazena poûadovan· hodnota teploty, kter· je uloûena
v†pamÏti RWM mikro¯adiËe. Po druhÈm stisku pak dioda D1
zhasne a na displeji jsou opÏt zobrazov·ny hodnoty mϯenÈ
teploty. Pokud m·me na displeji zobrazenu poûadovanou hodnotu, tak ji m˘ûeme mÏnit pomocÌ tlaËÌtek SW3 a SW4. Jednoduch˝m stiskem tlaËÌtka SW3 je zmÏnÏna poûadovan· teplota
o jednotku dol˘ (o 0,1†∞C), u tlaËÌtka SW4 pak o jednotku nahoru. Pokud tlaËÌtko SW3 nebo SW4 podrûÌme dÈle, tak je poûadovan· hodnota sniûov·na nebo zvyöov·na automaticky,
p¯iËemû rychlost zmÏny je postupnÏ zvyöov·na aû p¯ibliûnÏ na
˙roveÚ 20 jednotek za sekundu. Tak lze pomÏrnÏ rychle nastavit libovolnou hodnotu poûadovanÈ teploty v†rozmezÌ 0 aû
99,9†∞C s†rozliöenÌm 0,1†∞C. Pro zjednoduöenÌ programu mikro¯adiËe nemÏ¯Ì modul pouûit˝ jako regul·tor teploty z·pornÈ hodnoty teplot. TlaËÌtko SW4 je vyuûito pro zobrazenÌ maxim·lnÌ
hodnoty teploty. Po stisku tohoto tlaËÌtka je rozsvÌcena dioda
D2 u zobrazovacÌ jednotky a z·roveÚ je zobrazena maxim·lnÌ
hodnota teploty od zapnutÌ nap·jecÌho napÏtÌ nebo od poslednÌho stisku tlaËÌtka SW4. Doba zobrazenÌ maxim·lnÌ hodnoty je
asi 1,5†sekundy a pak je dioda D2 automaticky zhasnuta a na
displeji je opÏt hodnota mϯenÈ teploty.
Jednou s†nep¯Ìjemn˝ch vlastnostÌ vÏtöiny snÌmaˢ je jejich
neline·rnÌ p¯evodnÌ charakteristika. Pokud bychom zobrazovali p¯Ìmo mϯenou hodnotu napÏtÌ z†m˘stku osazenÈho Ëidlem KTY10-6, tak v†p¯ÌpadÏ kalibrace pro nulovou teplotu a
teplotu 100†∞C by nejvÏtöÌ chyba mϯenÌ dos·hla hodnoty 4,3†∞C
pro mϯenou teplotu 50†∞C. Tuto chybu bychom mohli zmenöit
posunem hodnot p¯i kalibraci o 2,15†∞C smÏrem nahoru, tÌm
by byla maxim·lnÌ chyba v†celÈm rozsahu menöÌ neû 2,15†∞C.
Ale i tak je hodnota chyby p¯Ìliö vysok·. Proto jsem do programu mikro¯adiËe zabudoval proceduru pro linearizaci p¯evodnÌ charakteristiky snÌmaËe. Podrobn˝ popis linearizaËnÌ metody
p¯esahuje moûnosti tohoto Ël·nku, a proto se zde zmÌnÌm jen
o nÏkolika podstatn˝ch prvcÌch problematiky linearizace.
Kaûd· spojit· funkce se d· popsat matematicky polynomem
n-tÈho stupnÏ ve tvaru:
F(x) = a0.xn + a1.xn-1+... +an
Pro popis p¯Ìmky n·m postaËÌ polynom prvnÌho stupnÏ ve
tvaru:
F(x) = a0.x + a1
Parabolu vyj·d¯Ìme polynomem druhÈho stupnÏ ve tvaru:
F(x) = a0.x2 + a1.x + a2
V†praxi n·m vÏtöinou postaËÌ popis neline·rnÌ funkce polynomem druhÈho stupnÏ. Nejprve ovöem musÌme vypoËÌtat
konstanty a0 aû a2 . K†tomuto ˙Ëelu musÌme zn·t ¯adu hodnot
promÏnnÈ x v†poûadovanÈm intervalu (nap¯. napÏtÌ na vstupu
AD p¯evodnÌku) a k†nim odpovÌdajÌcÌ hodnoty v˝slednÈ funkce
F(x) (nap¯. teploty). Z†tÏchto hodnot pak vhodnou numerickou
metodou vypoËÌt·me konstanty polynomu. »asto se k†tomuto
˙Ëelu pouûÌv· nap¯Ìklad metoda nejmenöÌch Ëtverc˘. Pokud
konstanty polynomu spr·vnÏ vypoËÌt·me, tak jiû m˘ûeme ur-
Obr. 15 - Rozmístìní souèástek
Ëit skuteËnou hodnotu teploty dosazenÌm mϯenÈho napÏtÌ
na mÌsto promÏnnÈ x. Pro provedenÌ tohoto v˝poËtu ovöem
pot¯ebujeme odpovÌdajÌcÌ matematick˝ apar·t - aritmetickÈ
funkce pro v˝poËty s†re·ln˝mi ËÌsly. K†tÏmto ˙Ëel˘m se pouûÌvajÌ knihovny aritmetick˝ch funkcÌ v†pohyblivÈ Ë·rce. Tyto
funkce ovöem zaberou urËitou Ë·st pamÏti a v†p¯ÌpadÏ mikro¯adiËe AT89C2051, kter˝ m· 2kB pamÏti programu je pouûitÌ
tÈto knihovny dost omezenÈ. Bez problÈm˘ ovöem pouûijeme
tuto knihovnu u mikro¯adiˢ s†vÏtöÌ pamÏtÌ, nap¯. AT89C51
a AT89C52. Popisu aritmetickÈ knihovny bude vÏnov·n z·vÏreËn˝ dÌl kursu monolitick˝ch mikropoËÌtaˢ. V†naöem p¯ÌpadÏ
provedeme linearizaci jinou metodou, kterou je interpolace.
Z·kladem interpolaËnÌ metody je tabulka hodnot vstupnÌch napÏtÌ a k†nim p¯ÌsluöejÌcÌch v˝sledn˝ch hodnot teplot.
Tuto tabulku zad·me pevnÏ do programovÈ pamÏti mikro¯adiËe. Po zmϯenÌ vstupnÌho napÏtÌ pak musÌme najÌt nejbliûöÌ p¯Ìsluönou hodnotu v tabulce a k†urËenÌ p¯esnÈ v˝slednÈ hodnoty
teploty pouûÌt interpolaËnÌ metodu. Tato metoda je pomÏrnÏ
jednoduch· na v˝poËty a vystaËÌme u nÌ s†aritmetick˝mi operacemi s†bin·rnÌmi ËÌsly. Jelikoû m·me vstupnÌ hodnotu napÏtÌ
v†BCD kÛdu, tak musÌme provÈst p¯evod tohoto ˙daje do bin·rnÌho tvaru. Po provedenÌ interpolaËnÌch v˝poËt˘ pak musÌme p¯evÈst v˝slednÈ bin·rnÌ ËÌslo zpÏt na ËÌslo v†BCD kÛdu,
kterÈ jiû m˘ûeme p¯Ìmo zobrazit na sedmisegmentovÈm displeji. KonverznÌ programy pro p¯evod z†BCD kÛdu do bin·rnÌho a zpÏt jsou souË·stÌ knihovny aritmetick˝ch funkcÌ
v†pohyblivÈ Ë·rce ATFL51.
Komunikace mϯicÌho modulu s†poËÌtaËem probÌh· po
sÈriovÈ lince RS232. P¯enosov˝ protokol, kter˝ jsem zvolil, je
v†podstatÏ modifikacÌ protokolu pouûÌvanÈho u pr˘myslov˝ch
modul˘ ¯ady Adam. Z·kladem komunikace je p¯enos ASCII
znak˘. PoËÌtaË vyöle dotaz a modul na tento dotaz odpovÌ.
V†naöem p¯ÌpadÏ posÌl· poËÌtaË sekvenci znak˘ ì#AAU1<cr>î
(uvozovky do tÈto sekvence nepat¯Ì). Znaky AA vyjad¯ujÌ adresu modulu, U1 jsou znaky urËujÌcÌ druh (napÏtÌ) a po¯adÌ (1)
dat, kter· jsou od modulu poûadov·na. <cr> je znak ukonËujÌcÌ p¯enos. Pokud mϯicÌ modul p¯ijme vöechny znaky a zjistÌ
souhlasnou adresu, vyöle na sÈriov˝ port sekvenci znak˘ ì>AAdata<cr>î, kde data jsou t¯i ËÌselnÈ znaky reprezentujÌcÌ mϯenou hodnotu. K†poËÌtaËi tedy m˘ûeme mÌt teoreticky p¯ipojeno
vÌce modul˘ s†r˘zn˝mi adresami. Pro tento ˙Ëel bychom ale
museli pouûÌt linku typu RS485, kter· toto umoûÚuje.
Na obr. 14 jsou zn·zornÏny obÏ strany ploönÈho spoje mϯicÌho modulu. Ploön˝ spoj m· prokovenÈ otvory a je opat¯en
nep·jivou maskou. OsazovacÌ v˝kres mϯicÌho modulu je na obr.
15. PropojenÌ mϯicÌho modulu se zobrazovacÌ jednotkou je p·skov˝m vodiËem zakonËen˝m na obou koncÌch konektory pro
poËÌtaËe typu PFL. Nap·jecÌ napÏtÌ je p¯ivedeno na dvÏ svorkovnice. NapÏtÌ UC je urËeno pro nap·jenÌ relÈ a typicky je12†V,
hodnota odporu R30 je pro toto napÏtÌ nulov·. P¯i vyööÌm napÏtÌ musÌme vypoËÌtat hodnotu odporu podle vztahu R30†=†(UC12)/0,044. Nap·jecÌ napÏtÌ +5†V a GND je rozdÏleno na dvÏ Ë·sti.
PrvnÌ Ë·st nap·jÌ analogovÈ obvody a AD p¯evodnÌk, druh· Ë·st
je pak urËena pro nap·jenÌ obvod˘ mikro¯adiËe a zobrazovacÌ
jednotky. D˘vodem tohoto rozdÏlenÌ je minimalizace ruöenÌ mϯenÈho sign·lu ze strany ËÌslicov˝ch obvod˘. U nap·jecÌho zdroje jsou pak obÏ vÏtve nap·jenÌ spojeny.
Pro ˙plnost uv·dÌm na obr. 16 schÈma nap·jecÌho zdroje,
kter˝ tvo¯Ì t¯etÌ modul s†rozmÏry 46†mm x 69†mm a je urËen˝
k†nap·jenÌ zobrazovacÌ jednotky a mϯicÌho modulu. Nap·jecÌ
zdroj p¯ev·dÌ vstupnÌ st¯ÌdavÈ napÏtÌ v†rozmezÌ 7 aû 28†V na stejnosmÏrnÈ napÏtÌ +5†V a -5†V. Modul zdroje je osazen spÌnan˝m
stabiliz·torem napÏtÌ Z1(L4960), jehoû hlavnÌ v˝hodou je vysok· ˙Ëinnost a lepöÌ filtrace zbytk˘ st¯ÌdavÈ sloûky neû u†line·rnÌho
stabiliz·toru. To m· sv˘j v˝znam zejmÈna pro nap·jenÌ mikroprocesorov˝ch systÈm˘, kterÈ majÌ dlouhodobÏ pracovat
v†pr˘myslovÈm prost¯edÌ s†vysok˝m v˝skytem ruöiv˝ch sign·l˘. P¯ed diodov˝m m˘stkem je zapojena pojistka, kter· chr·nÌ
zdroj a dalöÌ obvody proti p¯etÌûenÌ. Transil D10 je rovnÏû souË·stÌ tÈto ochrany. Z·pornÈ napÏtÌ -5†V je zÌsk·no pomocÌ obvodu U6 (7660). Pro z·jemce, kte¯Ì by poûadovali nap·jecÌ zdroj
vËetnÏ jeho sÌùovÈ Ë·sti mohu dodat modul zdroje vËetnÏ sÌùovÈho transform·torku a sÌùovÈho filtru pro omezenÌ ruöenÌ. Transform·tor splÚuje poûadavky normy »SN 351330 pro
bezpeËnostnÌ ochrannÈ transform·tory.
NynÌ jiû zn·me vöechny obvody mϯicÌ jednotky a m˘ûeme
se opÏt zab˝vat programov·nÌm. Protoûe jiû m·me p¯ipojenu
zobrazovacÌ jednotku, tak si vyzkouöÌme zobrazov·nÌ znak˘
na displeji. Pokusme se zobrazit text AHOJ. KÛdy pro jednotlivÈ znaky m˘ûeme mÌt umÌstÏny kdekoli v†programovÈ pamÏti. KÛd pÌsmene A zaËÌn· na n·vÏötÌ Ahoj. PomocÌ tohoto
n·vÏötÌ pak k†poûado- vanÈmu textu p¯istupujeme. Pro p¯Ìstup
ke znak˘m je pouûito nep¯ÌmÈ adresov·nÌ s†b·zov˝m registrem DPTR a indexov˝m registrem A.
;Z·pis jednotliv˝ch kÛd˘ znak˘ v†pamÏti programu
Ahoj:
.DB
10;
Znak A
.DB
17;
Znak H
.DB
0;
Znak O
.DB
19;
Znak J
;Pro p¯Ìstup k†textu pouûijeme b·zov˝ registr DPTR
MOV
DPTR, #Ahoj ;Adresa textu
ACALL ZobrazText ;Vol·nÌ procedury pro zobrazenÌ textu
;
;Procedura pro zobrazeni textu
ZobrazText:
ACALL PresunTextu ;Vol·nÌ procedury pro p¯esun textu
MOV
R1,#CasCykl ;»asov· smyËka o dÈlce 2,5†s, po kterou bude text zobrazen
MOV
@R1,#255
;»as[ms]= (»Ìslo*10[ms])
ACALL Cas1
;Vol·nÌ procedury s†dobou trv·nÌ 10†ms
RET
;
;Procedura pro p¯esun textu do RWM a zobrazenÌ na displeji
PresunTextu:
CLR
A
MOV
R1, #Displej1+3 ;Displej1 je adresa bytu v RWM, kam
bude uloûen n·sledujÌcÌ znak
MOVC A, @A+DPTR ;P¯Ìstup k†bytu v†pamÏti programu
MOV
@R1, A
DEC
R1
MOV
A, #1
MOVC A, @A+DPTR
MOV
@R1, A
DEC
R1
MOV
A, #2
MOVC A,@A+DPTR
MOV
@R1, A
DEC
R1
MOV
A, #3
MOVC A,@A+DPTR
MOV
@R1,A
ACALL DisplejA
;Vol·nÌ procedury, kter· vyöle text na
displej
RET
Pro p¯enos znak˘ na zobrazovacÌ jednotku m·m k†dispozici
naprogramovan˝ mikro¯adiË, kter˝ nejprve rozsvÌtÌ vöechny
znaky na displeji, pak zv˝öÌ jas na maximum a n·slednÏ snÌûÌ
jas na minimum. D·le jsou postupnÏ zobrazov·ny p¯Ìklady r˘zn˝ch text˘. Tento mikro¯adiË je vhodn˝ pro odzkouöenÌ spr·vnÈ funkce zobrazovacÌ jednotky p¯ipojenÈ k†mϯicÌmu modulu.
Samoz¯ejmÏ lze obsah programovÈ pamÏti vymazat a mikro¯adiË pouûÌt pro dalöÌ ˙Ëely.
TÌmto dÌlem v†podstatÏ konËÌ kurs monolitick˝ch mikropoËÌtaˢ. Z·vÏreËn˝ dÌl bude vÏnov·n jiû jen popisu knihovny aritmetick˝ch funkcÌ v†pohyblivÈ Ë·rce a bude obsahovat seznam
literatury doporuËenÈ pro dalöÌ studium. PraktickÈ pouûitÌ monolitick˝ch mikropoËÌtaˢ nenÌ jednoduchou z·leûitostÌ a tento
kurs nemohl a ani nechtÏl b˝t vyËerp·vajÌcÌ p¯ÌruËkou pro programov·nÌ v†asembleru nebo pro n·vrh hardware mikroprocesorov˝ch systÈm˘. Pro v·ûnÈ z·jemce, kte¯Ì si chtÏjÌ na vlastnÌ
k˘ûi vyzkouöet, co to obn·öÌ, m·m p¯ipraveny stavebnice jednotliv˝ch modul˘, kterÈ urËitÏ pomohou p¯ekonat prvnÌ bariÈry
p¯i styku s†mikro¯adiËem Atmel AT89C2051. O stavebnici zobrazovacÌ jednotky byly podrobnosti uvedeny v†p¯edchozÌm dÌlu.
Stavebnice mϯÌcÌho modulu m˘ûe b˝t opÏt dod·na buÔ jako
sada souË·stek, nebo jako hotov˝ a odzkouöen˝ modul. Stavebnice obsahuje oboustrannou desku ploönÈho spoje
s†nep·jivou maskou a kompletnÌ sadu souË·stek mimo obvod
MAX706, jehoû cena je dost vysok·, a proto je uveden samostatnÏ. Mikro¯adiË AT89C2051 obsaûen˝ ve stavebnici je bez
programu. K†dispozici je rovnÏû nÏkolik verzÌ naprogramovan˝ch mikro¯adiˢ. Jedn· se o jiû popsanou verzi pro test zobrazovacÌ jednotky, d·le je p¯ipraven mikro¯adiË naprogramovan˝
jako voltmetr pro mϯenÌ napÏtÌ v†rozsahu od -99 do +999†mV a
nakonec i mikro¯adiË s†˙pln˝m programem pro mϯenÌ teploty
snÌmaËem KTY10-6 s†linearizacÌ interpolaËnÌ metodou a
s†regulaËnÌm algoritmem pro regulaci teploty na poûadovanou
hodnotu. Mikro¯adiËe majÌ samoz¯ejmÏ naprogramov·nu moûnost komunikace s†poËÌtaËem p¯es sÈriovou linku. D·le nabÌzÌm propojovacÌ kabel k†poËÌtaËi a rovnÏû demonstraËnÌ program
vËetnÏ unity v†jazyce Turbo Pascal pro komunikaci poËÌtaËe
s†modulem.
Obr. 16 - Schéma zdroje
Knihovna aritmetických funkcí ATFL51
P¯i vytv·¯enÌ sloûitÏjöÌch program˘ pro jednoËipovÈ mikropoËÌtaËe je Ëasto pot¯eba prov·dÏt aritmetickÈ v˝poËty. P¯Ìkladem m˘ûe b˝t mϯenÌ libovolnÈ veliËiny pomocÌ AD
p¯evodnÌku. ZÌsk·me buÔ ˙daj v†BCD kÛdu (AD p¯evodnÌky typu
C520D, ICL7135) nebo ˙daj v†bin·rnÌm kÛdu (AD p¯evodnÌky typu
WSH572, ICL7109, MAX132). V†p¯ÌpadÏ BCD kÛdu m˘ûeme namϯenou hodnotu p¯Ìmo zobrazit na displeji. Pokud pouûÌv·me
p¯evodnÌk s†v˝stupem v†bin·rnÌm kÛdu, musÌme v˝slednÈ bin·rnÌ ËÌslo p¯evÈst na ËÌslo BCD, kterÈ pak m˘ûeme zobrazit.
VÏtöinou je ale nutnÈ namϯenou hodnotu matematicky zpracovat, tzn. provÈst line·rnÌ p¯ÌpadnÏ i neline·rnÌ korekci mϯenÈ
hodnoty a jejÌ p¯epoËet na skuteËnou fyzik·lnÌ veliËinu. K†tomuto
˙Ëelu musÌme pracovat s†bÏûn˝mi aritmetick˝mi operacemi jako
jsou sËÌt·nÌ, odËÌt·nÌ, dÏlenÌ a n·sobenÌ. InstrukËnÌ sada mikro¯adiˢ ¯ady 51 obsahuje pouze z·kladnÌ aritmetickÈ operace
s†osmibitov˝mi bin·rnÌmi ËÌsly. Jedn· se zejmÈna o instrukci
ADD pro sËÌt·nÌ, instrukci SUBB pro odeËÌt·nÌ, instrukci DIV
pro dÏlenÌ a†instrukci MUL pro n·sobenÌ. Osmibitov· ËÌsla majÌ
ovöem velmi omezen˝ rozsah (0 aû 255) a m·lokdy n·m postaËujÌ. NenÌ velk˝ problÈm napsat podprogramy pro v˝poËty s
12bitov˝mi nebo i 16bitov˝mi bin·rnÌmi ËÌsly, ale co v†p¯ÌpadÏ,
kdy pot¯ebujeme provÈst line·rnÌ korekci snÌmaËe prost˝m vyn·sobenÌm mϯenÈ hodnoty konstantou vyj·d¯enou desetinn˝m
ËÌslem, nap¯. 1,058. Pak bychom uvÌtali moûnost zpracov·nÌ ËÌseln˝ch hodnot v†jejÌ nejp¯irozenÏjöÌ formÏ, kterou jsou re·ln·
ËÌsla.
»ast˝m poûadavkem je takÈ nap¯. posun nulovÈ hodnoty
(tzv. t·rov·nÌ), kdy je p¯i stisku tlaËÌtka uloûena mϯen· hodnota
do pamÏti jako hodnota referenËnÌ a v pr˘bÏhu dalöÌho mϯenÌ
je pak tato referenËnÌ hodnota odeËÌt·na od okamûitÈ mϯenÈ
hodnoty. SloûitÏjöÌ p¯Ìpad nastane p¯i pouûitÌ snÌmaËe
s†neline·rnÌ p¯evodnÌ charakteristikou, kdy je nutnÈ pouûÌt nÏkterou z†linearizaËnÌch metod. P¯i pouûitÌ interpolaËnÌ metody
vystaËÌme s†operacemi v†bin·rnÌ aritmetice, ale pokud pouûijeme k†linearizaci polynom, tak jiû musÌme prov·dÏt vÏtöÌ mnoûstvÌ v˝poËt˘ a je vhodnÈ pouûÌt aritmetickÈ funkce pro v˝poËty
s†re·ln˝mi ËÌsly.
Re·ln· ËÌsla jsou ËÌsla s†desetinnou Ë·rkou a v†souvislosti
s†mikropoËÌtaËi Ëasto hovo¯Ìme o dvojkov˝ch ËÌslech
s†pohyblivou ¯·dovou Ë·rkou a nebo o†ËÌslech s†plovoucÌ Ë·rkou. Tato ËÌsla musÌ mÌt p¯esnÏ definovan˝ tvar a takÈ urËit˝
rozsah. Knihovna ATFL51 pracuje s†re·ln˝mi ËÌsly, kterÈ jsou
zobrazeny ve t¯ech bytech. PrvnÌ byte obsahuje exponent, dalöÌ dva byty pak mantisu. Definice ËÌsla v†tomto tvaru je d·na
vztahem:
x = (-1)s . m . 2 n
kde s je 0 nebo 1 a urËuje znamÈnko ËÌsla x
m je mantisa v†rozsahu od 1 do 2
n je exponent v†rozsahu od -63 do 63
ZobrazenÌ re·lnÈho ËÌsla lze zn·zornit takto:
s
n + 64
Dvojkový rozvoj (m-1)
Bit 7 Bity 0 až 6 MSB
1 byte
LSB
2 byty
Hodnota mantisy se tedy ch·pe tak, jako by p¯ed nÌ byla
jedniËka a desetinn· teËka. OpaËn· ËÌsla se liöÌ jen ve znamÈnkovÈm bitu s. Nula je zobrazena vöemi t¯emi byty nulov˝mi. Pro
zjiötÏnÌ nulovosti ËÌsla vöak staËÌ testovat, je-li byte exponentu
nulov˝. Exponent m˘ûe nab˝vat vöech hodnot vyjma 80†H, mantisa m˘ûe nab˝vat libovoln˝ch hodnot. RozliöovacÌ schopnost
tohoto zobrazenÌ je p¯ibliûnÏ 0,002†%, rozsah zobraziteln˝ch
ËÌsel je ±1,1.10-19 aû ±1,8.1019.
Pro n·zornost uvedu p¯Ìklad. »Ìslo 55,5 m· tvar: exponent
(prvnÌ byte) je Hí45, mantisa (druh˝ byte) je HíBC a†mantisa (t¯etÌ
byte) je 0. Hodnotu exponentu n urËÌme odeËtenÌm ËÌsla 64 od
ËÌsla 69 (Hí45). Exponent je tedy n = 5. Druh˝ byte mantisy napÌöeme pro p¯ehlednost v†bin·rnÌm tvaru jako 10111100, p¯i-
Ëemû nalevo je nejv˝znamnÏjöÌ bit mantisy (MSB). Tomuto bitu
p¯ÌsluöÌ koeficient -1, n·sledujÌcÌmu bitu pak -2 atd. Hodnotu
mantisy pak urËÌme souËtem vah jedniËkov˝ch bit˘ a ËÌsla 1,
kde v·ha p¯ÌsluönÈho bitu je dan· hodnotou 2-k (p¯iËemû k je
koeficient p¯ÌsluönÈho bitu, pro bit MSB je k=-1, pro bit LSB je
k=-16). Mantisa se tedy rovn·:
m=1 + 2-1 + 2-3 + 2-4 + 2-5 + 2-6 = 1,734375.
V˝slednÈ ËÌslo je pak:
x = (-1)s . m . 2 n = (-1)0 . 1,734375 . 2 5 = 55,5.
P¯evod dekadickÈho desetinnÈho ËÌsla na dvojkovÈ ËÌslo
v†plovoucÌ Ë·rce prov·dÌme pouze v†p¯Ìpadech, kdy pot¯ebujeme do programu umÌstit p¯edem zn·mÈ konstanty. Pro tento
˙Ëel slouûÌ program KFL51.EXE, kter˝ n·m provede p¯evod libovolnÈho ËÌsla z†dekadickÈ- ho tvaru na tvar v†plovoucÌ Ë·rce.
Tento program je souË·stÌ distribuËnÌ diskety se zdrojov˝m tvarem knihovny aritmetick˝ch funkcÌ ATFL51 a lze jej spustit na
libovolnÈm poËÌtaËi t¯Ìdy PC. P¯eveden· ËÌsla je moûno takÈ
vytisknout. Jinak se o vnit¯nÌ tvar ËÌsel v†plovoucÌ Ë·rce vpodstatÏ nemusÌme zajÌmat, protoûe souË·stÌ knihovny aritmetick˝ch funkcÌ jsou i konverznÌ podprogramy pro p¯evod ËÌsel mezi
jednotliv˝mi ËÌseln˝mi soustavami. Jako p¯Ìklad uvedu mϯenÌ
teploty p¯evodnÌkem C520D. Hodnota na v˝stupu AD p¯evodnÌku je v†kÛdu BCD. Tuto hodnotu p¯evedeme funkcÌ BCDFl na
ËÌslo v†plovoucÌ Ë·rce a s†tÌmto ËÌslem pak provedeme veökerÈ
matematickÈ v˝poËty. V˝sledek d·le p¯evedeme pomocÌ funkce FlBCD zpÏt na ËÌslo ve tvaru BCD, kterÈ nakonec poöleme
na displej.
Funkce aritmetickÈ knihovny pouûÌvajÌ jednotn˝ princip pro
p¯ed·v·nÌ operand˘, coû jsou vstupnÌ a v˝stupnÌ para- metry
funkcÌ. PrvnÌ operand se znaËÌ X, druh˝ operand Y. Toto oznaËenÌ operand˘ lze s†v˝hodou pouûÌt p¯i struËnÈm popisu jednotliv˝ch funkcÌ, nap¯. pro funkci sËÌt·nÌ lze ps·t X = X + Y.
Operand X je umÌstÏn v†registrech R5 aû R7, p¯iËemû v†registru
R5 je exponent, v†registru R6 je niûöÌ a v†registru R7 vyööÌ byte
mantisy. Operand Y je umÌstÏn v†pamÏti RWM na definovanÈm
mÌstÏ, na nejniûöÌ adrese je umÌstÏn exponent a pak na vyööÌch
adres·ch mantisa v†po¯adÌ jako u operandu X. UrËit· Ë·st pamÏti RWM je vyhrazena pro dalöÌ pomocnÈ operandy a p¯Ìznaky.
Pro uûivatele jsou d˘leûitÈ zejmÈna p¯Ìznaky pro zpracov·nÌ
chyb.
P¯i v˝poËtech m˘ûe dojÌt k†v˝skytu chyby nap¯. v†d˘sledku
podteËenÌ nebo p¯eteËenÌ v˝sledku, p¯ÌpadnÏ p¯i dÏlenÌ nulov˝m ËÌslem. Z·leûÌ pouze na uûivateli jak naloûÌ s†chybov˝mi
p¯Ìznaky, zda jejich p¯ÌpadnÈ nastavenÌ vhodnÏ oöet¯Ì nebo je
nech· bez povöimnutÌ. P¯i podteËenÌ exponentu se automaticky dosazuje nulov˝ v˝sledek bez indikace chyby. P¯i p¯eteËenÌ
exponentu (tj. p¯i p¯ekroËenÌ hornÌ hranice zobraziteln˝ch ËÌsel)
se do v˝sledku dosazuje nejvÏtöÌ zobraziteln· hodnota a nastavÌ se p¯Ìznak p¯eteËenÌ OFlow. P¯i pokusu o dÏlenÌ nulou je
nastaven p¯Ìznak DivZero.
Knihovna aritmetick˝ch funkcÌ ATFL51 obsahuje celkem
20 funkcÌ. Tyto funkce lze rozdÏlit na dvÏ z·kladnÌ skupiny:
aritmetickÈ funkce a konverznÌ funkce. AritmetickÈ funkce
obsahujÌ z·kladnÌ operace jako jsou sËÌt·nÌ, odeËÌt·nÌ, n·sobenÌ a dÏlenÌ, d·le funkce pro zmÏnu znamÈnka, inkrementaci,
dekrementaci, inverzi a druhou odmocninu. KonverznÌ funkce umoûÚujÌ p¯ev·- dÏt ËÌslo z†form·tu BCD na bin·rnÌ ËÌslo
nebo na ËÌslo v†plovoucÌ Ë·rce a samoz¯ejmÏ i nazpÏt
z†bin·rnÌho tvaru na BCD a nebo z†plovoucÌ Ë·rky na BCD.
DalöÌmi konverznÌmi funkcemi lze uskuteËnit p¯evody
z†bin·rnÌho tvaru na ËÌslo v†plovoucÌ Ë·rce a zpÏt. P¯Ìdavnou
funkcÌ je funkce pro porovn·nÌ dvou ËÌsel v†plovoucÌ Ë·rce.
Cel· knihovna zabere v†pamÏti programu mikro¯adiËe 1586 byt˘
a v†pamÏti dat RWM 20 byt˘. Je samoz¯ejmÏ moûnÈ vyuûÌt
pouze Ë·st knihovny s†vybran˝mi funkcemi a tÌm uöet¯it mÌsto
v†pamÏti programu.
Funkce sËÌt·nÌ (Plus: X = X + Y) prov·dÌ souËet dvou
ËÌsel v†plovoucÌ Ë·rce. Operand X je umÌstÏn v†registrech
R5, R6 a R7 aktu·lnÌ banky registr˘, operand Y je umÌstÏn
v†RWM na adrese OperY. V˝sledek je po provedenÌ funkce
uloûen na mÌstÏ operandu X. Funkce m· velikost 343 byt˘.
Funkce odeËÌt·nÌ (Minus: X = X - Y) prov·dÌ odeËÌt·nÌ dvou
ËÌsel v†plovoucÌ Ë·rce. UmÌstÏnÌ operand˘ je stejnÈ jako
v†p¯edchozÌm p¯ÌpadÏ. Funkce m· velikost 11 byt˘. Funkce
n·sobenÌ (Krat: X = X . Y) prov·dÌ n·sobenÌ dvou ËÌsel
v†plovoucÌ Ë·rce a m· velikost 162 byt˘. Funkce dÏlenÌ (Deleno: X = X /Y) prov·dÌ dÏlenÌ dvou ËÌsel v†plovoucÌ Ë·rce a
m· velikost 190 byt˘. Funkce pro zmÏnu znamÈnka operandu X (MinX: X= - X) prov·dÌ zmÏnu znamÈnka u†operandu
X a m· velikost 9 byt˘. Funkce pro zmÏnu znamÈnka operandu Y (MinY: Y = - Y) prov·dÌ zmÏnu znamÈnka u operandu y a m· velikost 11 byt˘. Funkce pro inkrementaci
operandu X (IncX: X = X + 1) p¯iËÌt· jedniËku k operandu X a
m· velikost 13 byt˘. Funkce pro dekrementaci operandu X
(DecX: X = X -1) odeËÌt· jedniËku od operandu X a m· velikost 13 byt˘. Funkce pro inverzi operandu X (Inv: X =1/X)
invertuje obsah operandu X a m· velikost 9 byt˘. Funkce
pro v˝poËet druhÈ odmocniny (Sqrt: X = SQRT(Y)) m· velikost 248 byt˘.
Knihovna d·le obsahuje t¯i funkce pro p¯evod bin·rnÌho
ËÌsla na ËÌslo v†plovoucÌ Ë·rce. PrvnÌ funkce
(BinFl: X = BIN(Y))
p¯ev·dÌ 16bitovÈ bin·rnÌ ËÌslo se znamÈnkem (integer) na ËÌslo
v†plovoucÌ Ë·rce a m· velikost 33 byt˘. Bin·rnÌ ËÌslo je umÌstÏno v†RWM na mÌstÏ mantisy a jeho rozsah je -32767 aû 32767.
Druh· funkce
(UbinFl1: X = UBIN1(Y))
p¯ev·dÌ 16bitovÈ bin·rnÌ ËÌslo bez znamÈnka (word) na ËÌslo
v†plovoucÌ Ë·rce. Bin·rnÌ ËÌslo je umÌstÏno v†RWM na mÌstÏ
mantisy a jeho rozsah je 0 aû 65536. Funkce m· velikost 22
byt˘. T¯etÌ funkce (UbinFl: X = UBIN(Y))
p¯ev·dÌ 24bitovÈ bin·rnÌ ËÌslo bez znamÈnka na ËÌslo v†plovoucÌ
Ë·rce. Bin·rnÌ ËÌslo je umÌstÏno v†RWM a jeho rozsah je 0 aû
16777216. Funkce m· velikost 36 byt˘. Komplement·rnÌ funkce pro p¯evod ËÌsel v†plovoucÌ Ë·rce na bin·rnÌ ËÌslo jsou dvÏ.
PrvnÌ z†nich (UFlBin: X = UFlBin(X)) p¯ev·dÌ ËÌslo v†pohyblivÈ
Ë·rce na 24bitovÈ bin·rnÌ ËÌslo bez znamÈnka a m· velikost 48
byt˘. Druh· funkce (FlBin: X = FlBin(X)) p¯ev·dÌ ËÌslo v†pohyblivÈ
Ë·rce na 16bitovÈ bin·rnÌ ËÌslo se znamÈnkem a m· velikost 19
byt˘.
Operace s†ËÌsly BCD umoûÚujÌ celkem Ëty¯i funkce. P¯evod ËÌsla BCD na bin·rnÌ ËÌslo (BCDBin: Y = BCDBin(Y)) umoûÚuje konvertovat 6-ti znakovÈ ËÌslo BCD na 24bitovÈ ËÌslo bez
znamÈnka. Funkce m· velikost 122 byt˘. OpaËn˝ p¯evod
z†bin·rnÌho tvaru na ËÌslo BCD (BinBCD: X = BinBCD(Y)) p¯ev·dÌ ËÌsla stejnÈho rozsahu jako p¯edchozÌ funkce a m· velikost 216 byt˘. DalöÌ funkce (BCDFl: X = BCDFl(Y)) p¯ev·dÌ
öestiznakovÈ ËÌslo BCD s†desetinnou Ë·rkou na ËÌslo v†plovoucÌ
Ë·rce a m· velikost 30 byt˘. Komplement·rnÌ funkce (FlBCD:
X = FlBCD(X)) m· velikost 34 byt˘. V˝slednÈ BCD ËÌslo je umÌstÏno v†registrech R5 aû R7, poloha desetinnÈ teËky je v†registru
B.
»Ìslem v†BCD tvaru rozumÌme takovÈ zobrazenÌ, kdy jsou
v†jednom bytu uloûeny dvÏ BCD ËÌslice. ÿ·dovÏ vyööÌ ËÌslice
na nejvyööÌch Ëty¯ech bitech, ¯·dovÏ niûöÌ ËÌslice na nejniûöÌch
Ëty¯ech bitech. Toto zobrazenÌ tedy umoûÚuje vyj·d¯it v†jednom
bytu kladn· ËÌsla v†rozmezÌ 0 aû 99 a ve t¯ech bytech m˘ûeme
s†öesti ËÌslicemi dos·hnout rozmezÌ 0 aû 999999. Poloha desetinnÈ teËky se ud·v· jako jejÌ vzd·lenost od pravÈho okraje
ËÌsla smÏrem vlevo (nap¯. pro BCD ËÌslo s†jednÌm desetinn˝m
mÌstem je poloha desetinnÈ teËky = 1).
PoslednÌ funkcÌ aritmetickÈ knihovny ATFL51 je funkce pro
porovn·nÌ dvou ËÌsel v†plovoucÌ Ë·rce (Porovnej). Jsou-li obÏ
ËÌsla shodn·, je nastavena nulov· hodnota st¯adaËe (ACC), je-li
operand X vÏtöÌ neû operand Y, je nastaven p¯Ìznak p¯enosu ,
jinak je p¯Ìznak p¯enosu i st¯adaË nulov˝. Funkce m· velikost 17
byt˘.
V†z·vÏru tohoto dÌlu je uveden seznam doporuËenÈ literatury. Mikro¯adiËe ATMEL vych·zejÌ z†¯ady 51, se kterou jsou
plnÏ kompatibilnÌ a lze proto pouûÌt libovolnou literaturu pro
mikro¯adiËe tÈto ¯ady. Pro Ëten·¯e, kte¯Ì ovl·dajÌ angliËtinu a
majÌ poËÌtaË s†CD mechanikou, mohu doporuËit titul [1] na
CD. Pro ostatnÌ pak staröÌ, ale velmi kvalitnÌ tituly [2] a [3].
Na z·vÏr kursu monolitick˝ch mikropoËÌtaˢ chci vöem v·ûn˝m z·jemc˘m o pr·ci s†mikropoËÌtaËi pop¯·t hodnÏ ˙spÏch˘.
Disketu s†aritmetickou knihovnou ATFL51 je moûnÈ zÌskat u
autora kursu za cenu 490,- KË vËetnÏ DPH.
Seznam doporuËenÈ literatury:
[1] Atmel CD-ROM Data Books, Atmel Corporation
1996
[2] M. Bab·k, L. Chl·dek: Architektura a technickÈ
vlastnosti jednoËipov˝ch mikro¯adiˢ 8051.,Tesla
Eltos, Praha 1987
[3] M. Bab·k, V.Laurynov·: ProgramovacÌ jazyk asembler 8051.,Tesla Eltos,
Praha 1987
[4] V. MuûÌk a kolektiv: Uûivatelsk· p¯ÌruËka mikropoËÌtaˢ ¯ady 48., Kniûnice »SVTS 1986
[5] V. MuûÌk a kolektiv: P¯ÌruËka programov·nÌ mikropoËÌtaˢ ¯ady 48., Kniûnice »SVTS 1986
[6] S. Pechal: MonolitickÈ mikropoËÌtaËe., BEN-technick· literatura, Praha 1995
[7] V. äubrt: Aplikace jednoËipov˝ch mikropoËÌtaˢ
INTEL, Grada, Praha 1996
[8] P. Val·öek: MonolitickÈ mikroprocesory a mikropoËÌtaËe, SNTL, Praha 1989

Podobné dokumenty

AMA 6/1998

AMA 6/1998 snaha redakce a editora by byla marn·, pokud se mezi Ëten·¯i nenajdou spolupracovnÌci schopnÌ a ochotnÌ udÏlat nÏco pro druhÈ. Kritika ve stylu ìzase tam nic nenÌ, co by mÏ zajÌmaloî dob¯e, napiö a...

Více

CZECH POINT - od listopadu tak

CZECH POINT - od listopadu tak Zde na v·s bude Ëekat mnoho kr·sn˝ch pÌsniËek od tÈto popul·rnÌ dvojice a vϯÌme, ûe kaûdÈmu zahrajeme i na p¯·nÌ pr·vÏ tu "jeho" nejoblÌbenÏjöÌ skladbu. P¯ipravenÈ pro v·s bude i drobnÈ obËerstven...

Více

Stáhnout - Renault

Stáhnout - Renault Přijímání informací o dopravní situaci ............................................................................................. Poslech CD ........................................................

Více

kurpiovsk¡ legenda o vzniku člověka

kurpiovsk¡ legenda o vzniku člověka divadelnÌch pr·zdnin zaplnÌ n·mÏstÌ p¯ed votivnÌm chr·mem pÛdium pro divadlo pod öir˝m nebem. O tÏchto podnicÌch, co do formy ovöem d·vno zaveden˝ch, i o jin˝ch zajÌmavostech celÈ ûupy se ostatnÏ m...

Více

Komentovany_vypis_ROM_D40

Komentovany_vypis_ROM_D40 pole bÏhem 5 ot·Ëek diskety. V opaËnÈm p¯ÌpadÏ je nastaven bit ÑRNFì, p¯Ìkaz je zastaven a je generov·no p¯eruöenÌ. READ SECTOR ñ P¯i prov·dÏnÌ p¯Ìkazu je p¯iloûena hlava, nastaven ÑBUSYì bit stavo...

Více

MœØicà pØÃstroje Dwyer - program

MœØicà pØÃstroje Dwyer - program CAPSUHELIC ¯ada 4000 Mϯidlo diferenci·lnÌho tlaku s ˙pln˝m oddÏlenÌm mϯÌcÌho ˙strojÌ pomocÌ zapouzd¯enÌ v tlakov˝ch komor·ch. VhodnÈ pro vzduch, plyny a kapaliny (mosaznÈ pouzdro pro mϯenÌ vody)...

Více