Mic PIC1
Transkript
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øeruení 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,H20 ;Definice konstanty zadané hexadecimálnì ; .ORG H100 ;Adresa zaèátku uvedené èásti programu ; Uvod: MOV R7,#H5F ;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 - Ploný 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 - Ploné 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
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...
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...
Stáhnout - Renault
Přijímání informací o dopravní situaci .............................................................................................
Poslech CD ........................................................
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...
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...
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)...