Střední průmyslová škola elektrotechnická a Vyšší odborná škola, Pardubice, Karla IV. 13 VYŠŠÍ ODBORNÁ ŠKOLA Měřič tepové frekvence M-3909 květen 2006 Martin Pantůček
Anotace Přístroj slouží k orientačnímu měření okamžité hodnoty tepové frekvence a pro kontrolu pravidelnosti srdečního cyklu. Díky velmi jednoduchému ovládání je určen pro i domácí použití a pro sport. Na třímístném LED displayi je průběžně zobrazována hodnota tepové frekvence a pomocí LED diody je indikován každý srdeční stah. Princip snímání srdečního tepu využívá bezkontaktní optickou sondu, která se umísťuje na prst horní končetiny.
Anotation This device is used for approximately measurement of immediately value of pulse frequency and for check of regularity heart cycle. Thanks to very easy control is determined for home using and for sport. On the 3 digits LED display is runningly represented a value of pulse frequency and with the assistance a LED diode is indicated every heart cycle. Principle of detecting heart pulse used contactless optical probe, which situated to finger of upper limb.
Obsah A) Teoický úvod: 1 Srdce a jeho funkce 1.1 Stavba srdce.. 5 1.2 Funkce srdce. 6 1.3 Zevní projevy srdce... 7 2 Princip měření tepové frekvence... 8 2.1 Snímání tepu pomocí elektrod... 9 2.2 Snímání tepu pomocí optického čidla 10 B) Dokumentace přístroje M-3909 3.1 Technické parametry.. 11 3.2 Obsluha přístroje. 12 3.3 Schéma zapojení... 13 3.4 Popis zapojení 3.4a Vstupní obvod..... 14 3.4b Mikroprocesor s periferiemi. 15 3.5 Deska plošných spojů. 16 3.6 Rozpiska použitých součástek.. 17 3.7 Popis programu 18 3.8 Výpis programu 20 3.9 Konstrukční uspořádání. 28
1 Srdce a jeho funkce 1.1 Stavba srdce Srdce (latinsky cor) je dutý nepárový orgán, uložený v levé části hrudního koše (1/3 vpravo, 2/3 vlevo). Jeho velikost je u dospělého jedince přibližně rovná mužské pěsti. Je životně důležitým orgánem, neboť zajišťuje krevní oběh v celém těle. obr. 1 stavba srdce Srdce je tvořeno několika vrstvami. Na povrchu je kryto vazivovým perikardem (osrdečníkem), jehož vnější obal, fibrózní perikard, udržuje srdce v jeho poloze, protože je vazy připojen k hrudní kosti, páteři a dalším částem hrudní dutiny. Uvnitř perikardu se nachází tenká dvojitá membrána, která v podobě epikardu pokrývá jako vnitřní vrstva povrch srdce. Aby mezi perikardem a epikardem nevznikalo zbytečné tření, je prostor mezi nimi vyplněn sérózní tekutinou. Pod nimi se nachází myokard, kombinace hladké a příčně pruhované svaloviny. Upíná se na srdeční kostru tvořenou vazivem a tím vytváří stěny. Vazivová blána endokard vystýlá stěny srdce
v jeho vnitřní části a podílí se na stavbě chlopní. Stále se obnovuje, protože musí snášet vysoký tlak, který vzniká při každém tepu, a jeho úkolem je učinit srdce nepropustné pro krev. Uvnitř srdce se nachází čtyři chlopně. Tvoří je vazivová tkáň krytá endokardem a upínají se na prstence skládající se z vazivové kostry a srdeční svaloviny. Jejich funkcí je zajišťovat tok krve správným směrem. Dělí se na atrioventrikulární (přepážka mezi síní a komorou) a na semilunární (mezi komorou a artérií) neboli poloměsíčité. Při stahu (kontrakci) komor se atrioventrikulární chlopně zavírají, otvírají se naopak chlopně semilunární, aby krev mohla být vypuzena do tepen. Při ochabnutí komor je tomu naopak. Přes povrch srdce vede koronární sulkus, což je mělká rýha vyznačující rozdělení síní a komor, rozhraní pravé a levé komory ukazují interventrikulární sulky. Protože však jsou tyto rýhy vystlány tukem a vedou v nich cévy, má srdce hladké obrysy. 1.2 Funkce srdce Činností srdce je střídavé smršťování a ochabování svaloviny, označované jako automacie. Smrštění se nazývá systola, ochabnutí diastola. Smrštění srdeční svaloviny postupuje jako vlna z obou předsíní do komor, po systole předsíní a komor následuje diastola celého srdce. Podněty ke stahu vznikají v sinusovém uzlu, který se nachází v pravé síni, a odtud se šíří do síňokomorového uzlu. Z něj se vzruch pohybuje Hisovým svazkem do obou komor a dále je rozváděn do svaloviny komor Purkyňovými vlákny, následkem čehož je synchronizovaná kontrakce komor. Tvorba signálů má svůj rytmus - její rychlost ovlivňují vegetativní nervy (sympatikus zrychluje, parasympatikus zpomaluje). Centrum pro řízení srdeční činnosti se nachází v prodloužené míše. Srdce umožňuje oběh krve. Odkysličenou krev vypuzuje z pravé komory přes plicní chlopeň do plicní tepny, která se dělí na pravou a levou (každá jde do jedné plíce). V plicních sklípcích dochází k výměně oxidu uhličitého za kyslík. Poté krev teče čtyřmi plicními žilami do levé síně a přes mitrální chlopeň do levé komory. Aby mohla předat kyslík tkáním, je vytlačena přes aortální chlopeň do aorty, z níž se oddělují artérie (tepny) vedoucí do celého těla. K výměně dýchacích plynů dochází v kapilárách, ty se pak opět spojují do horní a dolní duté
žíly, které ústí do pravé síně. Aby mělo srdce dostatek kyslíku, je zásobováno koronárními (věnčitými) cévami, které se oddělují z aorty jako první a podle potřeby dodávají srdci 225 mililitrů až 2 litry krve za minutu. 1.3 Zevní projevy srdce tep - Tepový (systolický) objem je objem krve, který se dostává ze srdce při jednom srdečním stahu (60 až 80 ml). Minutový objem srdeční při srdeční činnosti 72 tepů za minutu je tedy asi 5 litrů (u dospělého člověka). Při namáhavé práci se může zvětšit až na 40 litrů. tlak - Každou systolou vhání srdce do velkých tepen určitý objem krve, který vzhledem k odporu kladeném úzkými tepnami a tepénkami, nemůže okamžitě odtéci do žil. Pružné stěny velkých tepen se napnou. V období diastoly, kdy je srdce ochablé, toto pružné napětí představuje sílu, zabezpečující nepřetržitý tok krve. Tlak krve měříme na pažní tepně tak, že stlačíme paži gumovou manžetou a měříme vlastně tlak vzduchu v manžetě, potřebný k tomu, abychom zastavili průtok krve touto tepnou. ozvy - Tyto projevy srdeční činnosti lze sledovat poslechem. Systolická ozva vzniká stahem srdečního svalu a uzavřením cípatých chlopní. Diastolická ozva vzniká uzavřením poloměsíčitých chlopní při diastole. Jsou-li okraje chlopní porušeny, chlopně špatně zavírají a vzniklou štěrbinou crčí krev - ozvy jsou nečisté a mění se v šelesty.
2 Princip měření tepové frekvence Perioda srdečního tepu je součtem period systoly a diastoly. Na periodě se rozlišují jednotlivé vlny pomocí písmen P, Q, R, S, T a každá zobrazuje jinou dílčí fázi srdečního cyklu (obr. 5). Největší význam pro měření tepové frekvence má R vlna, která reprezentuje srdeční stah systolu. Tepová frekvence tedy udává počet R vln za minutu. Klidový srdeční tep je 60-70 tepů za minutu, u vrcholových sportovců kolem 50 t/min. Při vysoké zátěži se může zvýšit až na 200 t/min. Tepová frekvence se často označuje jako BPM (beat per minute = tepů za minutu). obr. 5 srdeční perioda Vstupní část měřiče tepové frekvence tedy musí sejmout buď přímo EKG signál pomocí elektrod nebo obraz krevního tlaku, který se snímá čidlem umístěným na ušním lalůčku nebo na prstu.
2.1 Snímání tepu pomocí elektrod Tento systém se často používá u sportovních rotopedů a stepperů, ale také jako blok pro vyhodnocení tepové frekvence v EKG přístrojích. U rotopedů jsou elektrody umístěny přímo na rukojetích, snímá se tedy napětí mezi oběma končetinami. EKG se nejčastěji používá třísvodové, takže vstupní zesilovač vyhodnocuje více odlišných potenciálů žádná elektroda není společná. obr.6 princip snímání tepu elektrodami Snímané napětí má velmi nízkou úroveň (řádově mv), proto jsou kladeny vysoké požadavky na vstupní zesilovač zejména ohledně šumu. Často se používá kvalitní A/D převodník a dále se signál již filtruje i vyhodnocuje softwarově. Tak je tomu v EKG přístrojích, ale v jednoduchých měřičích tepové frekvence (přesnost obvykle ± 2%) se používá zapojení podle obrázku 3. Signál zesílený vstupním zesilovačem přichází na dolní propust, která odstraní příliš vysoké frekvence, které by způsobovaly chybu měření. Mezní frekvence bývá kolem 300Hz maximální změřitelná tepová frekvence je tedy 300t/min. Dále je signál vytvarován monostabilním klopným obvodem, takže na vstup procesoru přichází již upravený číslicový signál bez rušení a překmitů. V procesoru je změřen interval mezi dvěma impulsy (perioda srdečního tepu) a následně je přepočten na údaj v počtu tepů za minutu (BPM). Několik posledních výsledků (často 10-15) se výpočtem zprůměruje a následně je zobrazen na displayi přímo BPM. Do paměti se ukládají všechny relevantní výsledky.
2.2 Snímání tepu pomocí optického čidla Jako snímače se používá kolíček na prst, nebo sonda na ušní lalůček. V tělese čidla je umístěna červená LED dioda (často také infračervená LED) a proti ní fototranzistor s širokým spektrálním rozsahem. Mezi nimi je tedy buď prst nebo ušní lalůček jsou to části těla, kde je tkáň dobře zásobena krví a je nejlépe průsvitná. obr. 7 princip snímání tepu optickou sondou Fototranzistor snímá světlo, které přes tkáň projde. V rozdílovém zesilovači se zesilují velmi malé rozdíly napětí na něm, které jsou úměrné změnám intenzity světla dopadajícího na fototranzistor. Dále se signál zpracovává stejným způsobem jako v případě snímání elektrodami (viz. předchozí kapitola).
3 Dokumentace přístroje M-3909 3.1 Technické parametry Rozsah měření tepové frekvence: 47-300 t/min. Princip měření: měření intervalu mezi impulsy Měřící čidlo: optická sonda na prst Počet míst displaye: 3 Druh displaye: sedmisegmentový, LED Proudový odběr ve vypnutém stavu: <0,01 ma Proudový odběr při měření: max. 120mA Napájení: 3 x NiCd článek 1,5V Rozměry: 95 x 65 x 18 mm
3.2 Obsluha přístroje Optická sonda se umísťuje na libovolný prst jedné z horních končetin. K ovládání slouží jediné tlačítko POWER, kterým se přístroj uvádí do chodu. Po spuštění je nejdříve otestován stav segmentů displaye a následně je zobrazena hodnota 000. LED PULSE bliká v rytmu zaznamenaných tepů a na displeyi se po 4 změřených impulsech zobrazí hodnota tepové frekvence. Výsledek je průměrem intervalů všech 4 impulsů. Je-li je tepová frekvence vyšší než 188 t/min, je výsledek dán průměrem intervalů změřených 16ti impulsů. K obnovování hodnoty výsledku dochází vždy po ukončení měření a na začátku nového měřícího cyklu. Pokud dojde k chybnému zaznamenání některého z 4 (16ti) předpokládaných impulsů nebo je tepová frekvence mimo měřený rozsah (47 300 t/min), je na displayi zobrazen symbol - - - (nezměřeno). Nepřijde-li do 30s od posledního měření další impuls, dojde po 30ti sekundách k automatickému vypnutí přístroje (POWER DOWN), včetně ukončení napájení optické sondy a vnitřních obvodů. 3.3 Schéma zapojení Celý přístroj se skládá ze dvou funkčních celků vstupního obvodu pro detekci srdečního tepu a jednočipového mikroprocesoru s periferiemi pro samotné měření a přepočet číslicových hodnot.
3.4 Popis zapojení 3.4a Vstupní obvod pro detekci srdečního tepu Základem je integrovaný obvod LM 3900, který v pouzdře DIL 14 obsahuje 4 napěťově řízené operační zesilovače (Nortonovy zesilovače). OZ1 pracuje jako snímač a OZ2 jako stabilizátor. Přes fototranzistor umístěný v měřící sondě teče přes svorky C a E konstantní proud, který je roven proudu, tekoucímu přes R1. OZ2 udržuje na výstupu OZ1 v klidu konstantní napětí 4V a přes R2 a R3 protékají stejně velké proudy. Při změnách intenzity světla dopadajícího na fototranzistor v měřící sondě dochází k rozvažování tohoto proudového můstku a k mnohonásobnému zesilování změn snímaného signálu. Kondenzátor C2 filtruje velmi krátké změny odporu fototranzistor při tepu, které by zhoršovaly výsledky měření. Na výstupu OZ1 je již signál, reprezentující EKG, má ovšem velmi malou intenzitu, proto je dále zesílen o 40 db. OZ3 pracuje jako zesilovač se ziskem 20dB a zároveň jako horní propust, která omezuje nejvyšší měřitelnou frekvenci na 250t/min. OZ4 zesiluje signál o dalších 20 db a funguje jako dolní propust, omezující tepové frekvence pod 30 t/min. Oba filtry účinně odstraňují rušení síťovým brumem a indukovanými parazitními signály. Na výstupu OZ4 je již dostatečně silný signál, ovšem invertované polarity. Dále signál prochází přes komparátor OZ5, který vyhodnocuje amplitudu požadované R vlny a výsledný signál zpětně invertuje. Pomocí trimru P1 lze nastavit minimální amplitudu R vlny, která bude detekována. Na výstupu OZ5 je zapojena červená LED dioda, která indikuje srdeční tep. Přes tranzistor T1 je signál invertován a aktivuje příslušný port procesoru. Ten jej vyhodnocuje a číslově zpracovává.
3.4b Mikroprocesor s periferiemi Pro samotné měření a výpočet hodnoty tepové frekvence je použit jednočipový mikroprocesor ATMEL 89C2051. Taktovací frekvence je dána krystalem X1-7,3728 MHz. Vstupní periferie Tlačítko POWER slouží k zapínání přístroje, k vypínání dochází automaticky po 30s nečinnosti, kdy procesor přechází do režimu POWER DOWN. Vstupní měřený signál je na port spínán tranzistorem T1. Zvolený port je opatřen vnitřním pull-up rezistorem, který nastavuje kladné předpětí a zároveň tvoří kolektorovou zátěž tranzistoru. Port je aktivován úrovní GND, tedy kladnou úrovní na bázi tranzistoru T1. Výstupní periferie Výsledek měření je zobrazován na třímístném LED displayi, který pracuje v multiplexním režimu. Výhodou tohoto režimu je 3x menší spotřeba displaye a méně než poloviční spotřeba celého přístroje oproti klasickému zapojení. Tranzistory T2-T4 přepínají pozici na displayi, na kterou se bude zobrazovat a přes rezistory R17-R23 jsou buzeny segmenty displaye. Budící proud jednoho segmentu je asi 12mA, je tedy možné display budit přímo portem procesoru. Tranzistor T5 je spínán portem P3.0 a ovládá napájení celého přístroje. Po resetu je tranzistor sepnut, přístroj je tedy v provozu. K rozepnutí tranzistoru dochází současně při přechodu do režimu POWER DOWN, tedy po 30s nečinnosti. Spotřeba je méně 0,01 ma, opětovné zapnutí přístroje se vyvolá resetem (tlačítkem POWER).
3.5 Deska plošných spojů Celý přístroj je sestaven na jedné oboustranně plátované kuprextitové desce. Součástky SMD jsou osazeny z obou stran, ve 3 bodech je osazen drátový spoj, propojující stranu součástek se stranou spojů. Návrh byl proveden programu PADS, obrazce spojů viz příloha.
3.6 Rozpiska použitých součástek Č. Ks Název Typ Hodnota Pozn. 1 1 Rezistor R1 SMD1206 4,7 kω 2 2 Rezistor R2, R10 SMD1206 2,2 MΩ 3 1 Rezistor R3 SMD1206 1 MΩ 4 2 Rezistor R4, R5 SMD1206 270 kω 5 2 Rezistor R6, R9 SMD1206 4,7 MΩ 6 1 Rezistor R7 SMD1206 2,7 MΩ 7 1 Rezistor R8 SMD1206 100 kω 8 1 Rezistor R11 SMD1206 10 kω 9 2 Rezistor R12, R25 SMD1206 470 Ω 10 4 Rezistor R13-R16 SMD1206 1 kω 11 8 Rezistor R17-R24 SMD1206 100 Ω 12 1 Trimr P1 P-MIN-10K 10 kω miniaturní 13 2 Kondenzátor C1, C3 RAD100M/16 100µF/16V miniaturní 14 2 Kondenzátor C2, C4 RAD1M/16 1µF/16V miniaturní 15 2 Kondenzátor C5, C9 SMD1206 220 nf keramický 16 2 Kondenzátor C10, C11 SMD1206 100 nf keramický 17 2 Kondenzátor C7, C8 RAD2M2/16 2,2 µf/16v miniaturní 18 1 Kondenzátor C6 SMD1206 10 nf keramický 19 1 Tranzistor T1 SMD546B 20 4 Tranzistor T2-T5 BC 807 SMD 21 3 7 segment. LED zobrazovač MAN-72A spol. anoda 22 1 LED dioda LED1 SMD1206 červená 23 1 Krystal 7,372 MHz XTAL7.372M miniaturní 24 1 Integrovaný obvod IO1 LM 3900N DIL 14 25 1 Integrovaný obvod IO2 NE 5532 DIL 8 26 1 Mikroprocesor IO3 89C2051 DIL 20 27 1 Tlačítko TL1 mikrospínač hmatník 18 mm 28 3 Baterie B1-B3 LR-323 Ni-Cd článek 29 3 Držák baterií 30 1 Konektor CON1 Canon 9p. samice 31 1 Krabička plastová KP-12 89x66x18mm 32 1 Patice DIL20 DIL 20 obyčejná
3.7 Popis programu Hlavní část Výstup Hlavní část programu zajišťuje multiplexní zobrazování posledního změřeného výsledku (registru výsledek) na display. Vždy je na krátký okamžik zobrazena pouze jedna číslice na jeden zobrazovač v pořadí od 1. zobrazovače až po 3. Následuje krátká prodleva pomocí podprogramu čekej. Celý cyklus se neustále opakuje. Prodleva mezi přepínáním zobrazovačů je nutná z důvodu většího jasu a lepšího kontrastu zobrazení. Současně je na konci každého cyklu načten stav vstupního portu a je-li v logické úrovni L (aktivní) je následně kontrolován po dalších 100 cyklů souběžně se zobrazováním na display. Pokud je i po 100 cyklech vstupní port stále aktivní, je tento stav vyhodnocen jako příchozí impuls, v opačném případě je ignorován a další zaznamenaný impuls musí být dlouhý 100 cyklů. Tento princip je nutný pro odstranění zákmitů a pro nastavení požadované minimální délky příchozího impulsu. Přerušení Příchozím impulsem je spuštěn časovač 0, pracující v 16 bitovém režimu, a přetéká každých 20ms. Při jeho přetečení je inkrementován registr R7, který vyjadřuje délku impulsu (R7 4 = skutečná délka impulsu v milisekundách). Příchod dalšího impulsu pouze inkrementuje registr ctverimp, až dokud jeho hodnota není rovna 4 tedy dokud nejsou načteny 4 příchozí impulsy. Na konci měření je časovač zastaven a je opětovně spuštěn prvním příchozím impulsem při zahájení nového měření. Podprogram Výpočet Po načtení čtveřice impulsů je v podprogramu výpočet zjištěna délka jejich periody. Pokud je perioda této čtveřice delší než 64ms, ihned se vybere podle odpovídající pozice z tabulky tab1 hodnota výsledku a ta je zapsána do registru výsledek a zobrazována na display. V opačném případě pokud má čtveřice impulsů periodu kratší než 64ms, jsou načteny další 3 čtveřice, dohromady tedy 16 impulsů.
Hodnota výsledku se nyní vybere z tabulky tab2. Tento postup výrazně zkvalitňuje přesnost měření a odolnost proti chybám. Podprogram Zobrazení číslic Zajišťuje dekódování hodnoty registru na zobrazení segmentů na displayi. Tvar a struktura číslic vychází ze standardní znakové sady. Podprogram Zápis Převádí hodnotu registru výsledek na 3 čísla, která jsou určena pro zobrazení na 3 oddělené zobrazovače. Nejprve je hodnota registru výsledek vydělena 10x, výsledek je uložen do R3 (pro zobrazení na 3. zobrazovač), zbytek je dále vydělen 10x, výsledek je uložen do R2 (pro zobrazení na 2. zobrazovač) a vypočtený zbytek je uložen do R1 (pro zobrazení na 1. zobrazovač). Podprogram Čekej Pomocí dekrementace registru R4 je vytvořena časová prodleva 17 µs. Po skončení prodlevy tento podprogram končí. Podprogram Čekejdl Pomocí dekrementace registrů cekr1 a cekr2 je vytvořena dlouhá časová smyčka 50 ms. Tato prodleva se používá pro sestavení sekvencí efektu po spuštění.
3.8 Výpis programu org 0h ;posledni upravy 18.5.2006 jmp start ; ***** prirazeni promennych ***** sega bit p3.7 ;segment a, spina GND segb bit p1.5 ;segment b, spina GND segc bit p1.6 ;segment c, spina GND segd bit p1.4 ;segment d, spina GND sege bit p1.2 ;segment e, spina GND segf bit p1.0 ;segment f, spina GND segg bit p1.3 ;segment g, spina GND zobr1 bit p3.2 ;zobrazovac 1, spina GND zobr2 bit p3.3 ;zobrazovac 2, spina GND zobr3 bit p1.7 ;zobrazovac 3, spina GND dt bit p1.1 ;desetinna tecka, spina GND vstup bit p3.4 ;vstupni port, aktivni v GND napajeni bit p3.0 ;vystup pro napajeni, aktivni v GND pdr1 equ 20 ;registr pro odpocet power down pdr2 equ 21 ;registr pro odpocet power down vcek1 equ 22 ;registr pro mereni delky impulsu vcek2 equ 23 ;registr pro odpocet pauzy mezi impulsy vcek3 equ 24 ;registr pro odpocet pauzy mezi impulsy vysledek equ 25 ;registr s hodnotou posledniho vysledku ctverimp equ 26 ;registr pro zjisteni 4 impulsu cekr1 equ 15 ;registr pro cekaci smycku cekr2 equ 16 ;registr pro cekaci smycku efr equ 17 ;registr pro pocet efektu po resetu powd bit 21 ;ukazatel pro odpocet power down kratke bit 35 ;ukazatel na pocitani kratkych impulsu pauzaimp bit 34 ;ukazatel na odpocet pauzy mezi impulsy ; ***** casovac 0 - mereni ***** org 0Bh mov th0,#0d0h mov tl0,#050h inc r7 cjne r7,#0,s1 clr tr0 mov r1,#10 mov r2,#10 mov r3,#10 mov r7,#0 setb dt setb powd mov ctverimp,#4 s1: i org 870 ;peceni kazdych 20ms (pro 7.372 MHz krystal) ;sem za 5,1s = zobrazeni pomlcek = nezmereno ;povoleni odpoctu power down
; ***** zacatek ***** start: mov r1,#0 mov r2,#0 mov r3,#0 mov r5,#0 mov r6,#0 mov ctverimp,#4 mov vysledek,#0 mov vcek1,#20 mov vcek2,#0 mov vcek3,#30 clr kratke setb powd setb pauzaimp clr napajeni mov ie,#10000010b mov tmod,#00000001b mov th0,#0d0h mov tl0,#050h clr it0 call efekt setb tr0 call vystup jmp $ ; ***** vypocet ***** vypocet:cpl dt djnz ctverimp,s5 mov ctverimp,#4 clr powd mov pdr1,#0 mov pdr2,#0 jmp s4 s5: s4: jb kratke,s9 cjne r7,#64,s2 ;na s4 = prisly 4 impulsy jmp s3 s2: jnc s3 s9: setb kratke ;perioda 4 impulsu je mensi nez 64*20ms, bude se setb tr0 ;pocitat 8 impulsu inc r5 cjne r5,#4,s5 mov r5,#0 clr tr0 ;nacteno 16 kratkych impulsu clr kratke mov dptr,#tab2 mov a,r7 movc a,@a+dptr mov vysledek,a
mov r7,#0 call zapis s3: mov dptr,#tab1 ;na s3 = perioda 4 impulsu je vetsi nez mov a,r7 ; 64*20ms vcetne, dlouhe impulsy movc a,@a+dptr mov vysledek,a mov r7,#0 call zapis ;***** zapis vysledku na vystup ***** zapis: mov a,vysledek mov b,#10 div ab mov r3,b mov b,#10 div ab mov r2,b mov r1,a ;***** cekaci smycka kratka ***** cekej: mov r4,#128 ccc1: djnz r4,ccc1 ;***** multiplex displaye ***** vystup:mov r0,#1 sk16: jnb powd,sk14 djnz pdr1,sk14 djnz pdr2,sk14 call nic setb napajeni mov pcon,#00000010b jmp $ sk14: cjne r0,#1,sk12 setb zobr3 call nic clr zobr1 jmp sk11 sk12: cjne r0,#2,sk13 setb zobr1 call nic clr zobr2 jmp sk11 sk13: cjne r0,#3,sk11 setb zobr2
call nic clr zobr3 sk11: cjne @r0,#0,sk9 call nula jmp sk10 sk9: cjne @r0,#1,sk1 call jednic jmp sk10 sk1: cjne @r0,#2,sk2 call dvojka jmp sk10 sk15: jmp sk16 sk2: sk3: sk4: sk5: sk6: cjne @r0,#3,sk3 call trojka jmp sk10 cjne @r0,#4,sk4 call ctyrka jmp sk10 cjne @r0,#5,sk5 call petka jmp sk10 cjne @r0,#6,sk6 call sestka jmp sk10 cjne @r0,#7,sk7 call sedmic jmp sk10 sk21: jmp sk15 sk7: sk8: cjne @r0,#8,sk8 call osmic jmp sk10 cjne @r0,#9,sk17 call devitk jmp sk10 sk17: cjne @r0,#10,sk10 call pomlck sk10: jnb pauzaimp,sk110
djnz vcek2,s121 djnz vcek3,s121 clr pauzaimp sk110:jb vstup,s121 djnz vcek1,s122 jb vstup,s121 jb tr0,s321 setb tr0 s321: setb pauzaimp ;nacten prichozi impuls mov vcek2,#0 mov vcek3,#2 call vypocet s121: mov vcek1,#20 s122: inc r0 cjne r0,#4,sk21 mov r0,#1 jmp sk21 ; ***** zobrazeni cislic ***** nic: setb sega setb segb setb segc setb segd setb sege setb segf setb segg nula: clr sega clr segb clr segc clr segd clr sege clr segf setb segg jednic: setb segc clr sega clr segb setb segd setb sege setb segf setb segg dvojka:clr sega clr segf setb sege clr segg clr segc clr segd setb segb
trojka: clr sega clr segb clr segg clr segc clr segf setb segd setb sege ctyrka: setb segc setb segd setb segf clr sege clr segg clr segb clr sega petka: clr segb setb sega clr segf clr segg clr segc clr sege setb segd sestka:clr segb setb sega clr segf clr segg clr segc clr segd clr sege sedmic:clr sega clr segb clr segf setb segd setb sege setb segc setb segg osmic: clr sega clr segb clr segc clr segd clr sege clr segf clr segg devitk: clr sega
clr segb clr segc clr segf clr sege clr segg setb segd pomlck:clr segg setb sega setb segb setb segc setb segd setb sege setb segf ; ***** cekaci smycka dlouha ***** cekejdl:mov cekr1,#0 mov cekr2,#80 cs1: djnz cekr1,$ djnz cekr2,cs1 ; ***** reset efekt ***** efekt: mov efr,#5 ef2: djnz efr,ef1 call nic call nic ef1: clr zobr1 clr zobr2 clr zobr3 clr sega setb segf dl clr segb setb sega dl clr segc setb segb dl clr segd setb segc dl clr sege
setb segd dl clr segf setb sege dl jmp ef2 ; ***** prevodni tabulky **** tab1: DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;20 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;40 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;60 DB 0,0,0,188,185,182,179,176,174,171,169,167 ;72 DB 164,162,160,158,156,154,152,150,148,146,145 ;83 DB 143,141,140,138,136,135,133,132,130,129,128 ;94 DB 126,125,124,122,121,120,119,118,117,115,114,113 ;106 DB 112,111,110,109,108,107,106,105,104,103,103,102 ;118 DB 101,100,99,98,98,97,96,95,94,94,93,92,92,91,90 ;133 DB 90,89,88,88,87,86,86,85,85,84,83,83,82,82,81,81 ;149 DB 80,79,79,78,78,77,77,76,76,75,75,75,74,74,73,73 ;165 DB 72,72,71,71,71,70,70,69,69,69,68,68,67,67,67,66 ;181 DB 66,66,65,65,65,64,64,63,63,63,63,62,62,62,61,61 ;213 DB 56,56,56,55,55,55,55,54,54,54,54,53,53,53,53,52 ;229 DB 52,52,52,52,51,51,51,51,50,50,50,50,50,49,49,49 ;245 DB 49,49,48,48,48,48,48,47,47 ;254 tab2: DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;20 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;40 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;60 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;80 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;100 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;120 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;140 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;159 DB 300,298,296,294,293,291,289,287,286,284 ;169 DB 282,281,279,277,276,274,273,271,270,268 ;179 DB 267,265,264,262,261,259,258,257,255,254 ;189 DB 253,251,250,249,247,246,245,244,242,241 ;199 DB 240,239,238,236,235,234,233,232,231,230 ;209 DB 229,227,226,225,224,223,222,221,220,219 ;219 DB 218,217,216,215,214,213,212,211,211,210 ;229 DB 209,208,207,206,205,204,203,203,202,201 ;239 DB 200,199,198,198,197,196,195,194,194,193 ;249 DB 192,191,190,0,0 ;254 end
3.9 Konstrukční uspořádání