Melodický zvonek. Milan Horkel



Podobné dokumenty
In Circuit Debugger pro procesory PIC. Milan Horkel

Převodník USB na RS232. Milan Horkel

Registrační teploměr

CQ485. Opakovač a převodník linek RS485 a RS422. S aktivní i pasivní obnovou dat

Řídící jednotka pro 2 čtečky SL20

Programátor procesorů PIC. Milan Horkel

Programátor pro procesory PIC. Milan Horkel,Miroslav Janás

Tester slunečních článků. Milan Horkel

Popis zapojení a návod k osazení desky plošných spojů STN-A varianta Tower

GSM modem TC35 Návod k instalaci a programování v1.1

OK1XGL /34 Verze Závodní modul CONTEST INTERFACE

STAVEBNÍ NÁVODY 1 pro činnost v elektro a radio kroužcích a klubech

Generátor pulsů GP1v2. Stavební návod.

PROGRAMÁTOR "WinProg-1" Návod k obsluze

Návod na obsluhu SendPíp1 verse V0.2 (PŘEDBĚŽNÝ NÁVOD).

LINKOVÝ VRÁTNÝ NÁVOD K POU ITÍ INSTALAÈNÍ PØÍRUÈKA

PC5936 v1.0 Instalační manuál

Logická sonda do stavebnice. Milan Horkel

MPP 009 MP3 PŘEHRÁVAČ PAMĚŤ 512MB ROZHRANÍ USB 2.0 ZÁZNAMNÍK FM RÁDIO

Měření kmitočtu a tvaru signálů pomocí osciloskopu

Instalační příručka DSC PC510 v1.0


NGTA602/NGTA704. Automobilový zesilovač

Podstanice DESIGO PX Modulární řada s rozšiřujícím modulem

Kompaktní procesní stanice

Hlasový modul HLM-472 Dávač

Modul LCD displeje se čtyřmi tlačítky. Milan Horkel

Miniaturní převodník RS-232 na proudovou smyčku ELO E00X. Uživatelský manuál

Ovládání přední panel.

POKLADNÍ DISPLEJ LCD. hotline: strana 1

DSC. PARAMETRY: Napájecí napětí 13,8V. Proud na vstupu [+N] Max 0,6A Min. (max.) napájecí napětí 10V (13,8 V) 2Ah (177 x 34 x 66mm)

CDI 100 MP3. Návod k obsluze. Čísla u popisů jednotlivých funkcí odpovídají obrázkům v původním návodu.

TCL. Měřící modul proudu 4-20mA s výstupem RS485

UC485P. Převodník RS232 na RS485 nebo RS422. Průmyslové provedení s krytím

PX257 RELAY NÁVOD K OBSLUZE

Voděodolný tloušťkoměr MG-401 Obsah:

Logická sonda do ruky. Milan Horkel

TCP2RTU. Transparentní převodník protokolu MODBUS TCP na MODBUS RTU/ASCII. Tři varianty: pro RS422, RS485 a RS232

APT110. Prùmyslový terminál. Technická pøíruèka. verze Aplikace Mikroprocesorové Techniky

INTELIFORM V.2 Návod ke stavbě a k použití

JDM 80IR modul sampleru

Návod na obsluhu Pípáku3 verse V3.15 (PŘEDBĚŽNÝ NÁVOD).

FLOOR TALKER. Uživatelský návod verze 1.0. TELSYCO s.r.o. Prostřední 627/ Praha 4.

Uživatelský manuál XF 300

In Circuit Debugger pro procesory PIC. Milan Horkel

(c) 2006 Mikrovlny s.r.o. HDO SPÍNAČ zásuvka ovládaná HDO příkazy. uživatelský manuál. Manuál zařízení GSM SPÍNAČ

Ulog univerzá lnízapisovač a zobrazovač napě tí

Displej DT20-6. Update firmware řadiče. Simulační systémy Řídicí systémy Zpracování a přenos dat TM 2012_10_

Hlasový modul HLM-410, HLM-411 firmware 1.5/VREG/VOX/AIN

OVLÁDÁNÍ IO 4094 SÉRIOVÝM PORTEM PC

Elektronický analogový otáčkoměr V2.0 STAVEBNICE

Univerzální jednočipový modul pro řízení krokových motorů


Návod k obsluze. Výrobce

Wind RS. Měření rychlosti a směru větru. Inteligentní anemometr s RS232 a RS dubna 2016 w w w. p a p o u c h. c o m

Buffer 16kB pro sériovou linku RS232 s konverzí rychlosti, parity, počtu datových bitů a stopbitů

OMEGA HH507R. Digitální teploměr

AUTOMATICKÉ VOLÍCÍ A OZNAMOVACÍ TELEKOMUNIKAČNÍ ZAŘÍZENÍ


Převodník sériového rozhraní SLC-67/73/74

DM4.3 odmagnetovací modul

Temp-485. Teplotní čidlo pro vnitřní použití na sběrnici RS-485 s jednoduchým komunikačním protokolem

Obsah. Obsah balení. Hlavní funkce. Prvky a funkce. Základní ovládání. Uživatelské prostředí Obrazovka přehrávání Moje hudba Nastavení

Záznamník teploty ZT, ZT1ext Návod k použití

Programovatelný domovní zesilovač Avant 7

Převodník WiFi RS232

C 208. Dálkové ovládání GB060. Aplikační list. Dálkové ovládání regulátorů a přenos technologických informací telefonním terminálem GB060

LAN/RS-Port (VERZE 2)

možnost připojení k tabletu ipad (pomocí sady pro připojení kamery) nebo chytrému telefonu (s kabelem OTG) podporujícími formát USB audio

Návod k používání radiostanice. Motorola TLKR T5

Detektor mobilní komunikace DMC - 3 popis a návod k použití Před použitím přístroje si prosím přečtěte tento návod

Převodníky rozhraní RS-232 na optický kabel ELO E240, ELO E241, ELO E242. Uživatelský manuál

Typ Napětí Hmotnost kg

TX20RS. Měření rychlosti a směru větru. Inteligentní anemometr s RS232 a RS prosince 2014 w w w. p a p o u c h. c o m

TECOMAT TC700 ZÁKLADNÍ DOKUMENTACE K SUBMODULU. MR-0155 a MR vydání 3. - listopad 2005

Dálkové ovládání GB060. Umožní jednoduché ovládání otopné soustavy. Osm binárních vstupů / výstupů a jeden reléový výstup

NÁVOD K OBSLUZE. Obj.č.: / /

DAH MP3 přehrávač. Paměť 256/512 MB (dle verze) OLED displej Rozhranní USB 2.0

Stopky. Milan Horkel. Napájení 9 až 15V cca 40mA včetně laserů. Čidla Start / Stop Laser a fototranzistor. Měření času Do 1000s Rozlišení 1ms

ETC Embedded Technology Club setkání 3, 3B zahájení třetího ročníku

Programovatelné automaty PA 44 a PA 82

Minidiktafon EDIC mini LCD

Číslicový otáčkoměr TD 5.1 AS

UT50D. Návod k obsluze

Grafický výtahový displej

TC485. převodník RS232/RS485. malé, jednoduché provedení. galvanické oddělení. 3. července 2008 w w w. p a p o u c h. c o m 0041.

WLS používá tři baterie typu A-76 a WLS používá dvě lithiové baterie CR2032.

Převodník Ethernet RS232 s Modbus RTU / TCP routerem

WRT OZS-121C COLOUR 5,6 MEMORY

Elektronická stavebnice: Generátor frekvence s optickým a akustickým výstupem

MK 20 Přenosné klávesy

POPIS ZAŘÍZENÍ. Zadní pohled. 1. Napájení 2. Menu 3. Mode 4. Nahoru 5. OK 6. Dolů 7. Displej. Přední pohled. 12. Čočka 13. LED světlo 14.

Převodníky rozhraní RS-485/422 na optický kabel ELO E243, ELO E244, ELO E245. Uživatelský manuál

I/O řídící/měřící deska pro PC VELLEMAN K8055N

Adresovatelný převodník rozhraní RS48/RS232 ELO E250. Uživatelský manuál

Programování (Programuje se většinou jen jednou, pokud nepřidáte do systému další vysílače)

Uživatelský manuál ESPRIT 728 ESPRIT 738 ESPRIT 748. s klávesnicí

Dvojitý H-Můstek 6.8V/2x0,7A s obvodem MPC Milan Horkel

CESVK KRISTALLO. Instalační a uživatelský manuál

LOGIC. Stavebnice PROMOS Line 2. Technický manuál

Transkript:

MB0B Melodický zvonek Milan Horkel Melodický zvonek MB0 používá pro generování hudebních tónů procesor PI6F89 a umožňuje snadné přeprogramování melodií. Zvonek je možno napájet z baterie, protože v klidu neodebírá prakticky žádný proud. Na výstup je možné připojit reproduktor.. Technické parametry Parametr Hodnota Poznámka Napájení 9V Asi od 4V, maximum V Spotřeba v klidu 0 Dáno zbytkovým proudem tranzistorů Q a Q Spotřeba při běhu (potichu) 0mA / 0mA Při 9V / V Spotřeba maximálně (nahlas) 50mA Při V Počet melodií Max 5 Všechny možné kombinace 4 tlačítek Délka skladeb celkem 5 Počítají se noty, mezery a změny parametrů (například tempa) Spouštění skladeb 4 tlačítka Skladby od páté výše se spouštějí stiskem více tlačítek najednou Rozměry 6x7x0mm Bez přečnívajícího konektoru a šroubů MB0B.doc / 004-05-4 / miho / http://www.mlab.cz /

MB0B. Popis konstrukce.. Slovo úvodem ílem návrhu tohoto melodického zvonku bylo navrhnout moderní řešení, se kterým i méně vybavený amatér může něco dále dělat. Díky pokroku v technologii výroby integrovaných obvodů se v poslední době začínají objevovat velmi zajímavé mikrořadiče (jednočipové mikropočítače) za velmi rozumnou cenu. Zde byl použit jeden z nich, jmenuje se PI6F89 a vyrábí jej firma MIROHIP. Procesor je poměrně rychlý (5 miliónů instrukcí za sekundu), má malou spotřebu (cca ma za plného běhu) a funguje v širokém rozsahu napájení (od V do 5.5V). Je tedy velmi vhodný pro zařízení napájené z baterie. Kromě toho má FLASH paměť programu (048 slov po 4 bitech), kterou je možné mnohokrát přeprogramovat. Procesor může tuto paměť FLASH sám přeprogramovat. Část paměti programu je vyhrazena pro uložení melodií a je tak možné dodatečně melodie měnit. Není k tomu potřeba žádný speciální programátor, stačí připojit obyčejné P. Nové definice skladeb se přenášejí do melodického zvonku prostřednictvím sériové linky RS. Aby nemohlo dojít k nechtěnému smazání programu, je část paměti FLASH procesoru uzamčena, aby ji procesor nemohl přepsat... Zapojení melodického zvonku Schéma je na konci tohoto dokumentu.... Procesor a obvody jeho napájení Srdcem zvonku je procesor U. Časování je řízeno krystalem X. Aby bylo možno procesor naprogramovat přímo v zapojení, je zde programovací konektor J6, který slouží pro naprogramování programu. V běžném provozu ani při přeprogramovávání melodií již není třeba. Zvonek začíná hrát po stisku některého tlačítka (nebo více najednou). Při stlačení tlačítka se přes diody D až D6 přivede zemní potenciál na vstupy procesoru. Vstupní nožičky procesoru jsou opatřeny ochrannými diodami (jsou uvnitř procesoru) a přes tyto diody dojde k připojení zemního potenciálu i signálu GND_PI. Tím dojde k tomu, že procesor je napájen (přes odpor R) a jeho program se rozběhne. Protože procesor snese maximálně 5.5V, je velikost napájecího napětí mezi vývody GND a VDD procesoru omezeno Zenerovou diodou D na cca 5V. Po rozběhu programu se nejdříve aktivuje signál POWER_ON# (do stavu L) a přes Q a Q se připojí GND_PI na zem. Po skončení melodie se signál POWER_ON# deaktivuje (přejde do třetího stavu) a procesor tak sám sobě vypne napájení. Tím je zajištěna prakticky nulová klidová spotřeba. Na vývodu RB procesoru generuje program výstupní signál (ať už přímo digitálně nebo pomocí PWM) a na vstupu RB očekává sériová data z počítače při přeprogramovávání melodií. Přestože RS signály jsou v rozsahu +/- 5 až +/-5V, je možné tyto signály připojit přímo ke vstupu pouze přes omezovací odpor R7. Ochranné diody na vstupu procesoru ochrání vstupní tranzistory před napětím nad a pod napájecím napětím procesoru. Odpor R8 zajišťuje definovanou úroveň na vstupu, pokud není nic připojeno. MB0B.doc / 004-05-4 / miho / http://www.mlab.cz /

MB0B Propojka PGM MODE (J5) slouží k vynucenému zapnutí napájení v době programování nových melodií i v době programování programu do procesoru přes ISP konektor (J6). Program před vlastním programováním paměti FLASH kontroluje, že je tato propojka nasunuta, a je tak zajištěno, že ani při vybité baterii nemůže prakticky dojít ke smazání melodie. Ke smazání programu nemůže dojít nikdy, protože tato část paměti programu je chráněna nastavením ochranných bitů konfiguračního slova a procesor sám sobě tuto paměť nemůže přepsat.... NF Zesilovač Jako koncový zesilovač byl použit obvod LM86 v klasickém zapojení. Jeho napájení je spínáno tranzistorem Q jen po dobu hraní melodie. Tranzistor Q je buzen vývodem RA4 procesoru PI... Mechanická konstrukce Melodický zvonek je sestaven na jednostranném plošném spoji se čtyřmi upevňovacími otvory v rozích. Podél kratší strany jsou 4 tlačítka pro spouštění melodií. Ke konektoru J je možné připojit vnější tlačítka. Místo odporového trimru P je možné připojit (logaritmický) potenciometr jako regulátor hlasitosti..4. Osazení a oživení.4.. Osazení Při osazování je třeba dodržet polarity diod, tranzistorů a elektrolytických kondenzátorů. Pokud jsou použity funkční součástky a jsou správně osazeny, mělo by zařízení fungovat na první pokus. Podmínkou je použití naprogramovaného procesoru..4.. Oživení Nejprve zkontrolujeme polaritu ochranné diody D a vizuálně zkontrolujeme zejména zkraty. Procesor i zesilovač můžeme zasunout do patic. Pokud si troufáme, můžeme je připájet přímo do desky. Pokud máme procesor předem naprogramovaný, je oživení snazší, protože by zvonek měl rovnou začít fungovat. Nejprve připojíme zdroj o napětí cca 5V s omezením proudu (asi na 00mA). Ujistíme se, že není nasunuta propojka na J5. V klidu by zvonek neměl odebírat prakticky žádný proud. Po stisku tlačítka by měl zvonek hrát některou z předprogramovaných melodií. Pokud hraje, postupně zvyšujeme napájecí napětí až na cca 0V a přitom kontrolujeme, zda napájecí napětí procesoru (nejsnáze se měří na Zenerově diodě D) nepřekročí 5.5V. MB0B.doc / 004-05-4 / miho / http://www.mlab.cz /

MB0B Pokud nehraje je třeba zkontrolovat toto: napájení na procesoru při stisku tlačítka (dioda D) cca až 5V, zda kmitá oscilátor procesoru logickou sondou na vývodu LKO procesoru, zda fungují tlačítka napětí na RB4 a RB7 klesá k nule při stisku tlačítka, zda spínají tranzistory Q a Q při nasunuté propojce na J5, zda procesor generuje zvuk - na RB telefonním sluchátkem nebo piezoelementem proti zemi, zda spíná Q napětí pro zesilovač U. Po skončení skladby by se zvonek měl opět vypnout a neměl by odebírat žádný proud. Pokud procesor nemáme nahraný, osadíme jej do zvonku, nasuneme propojku na J5 a zkontrolujeme při postupném zvyšování napájecího napětí, zda na procesoru (D) je napětí cca 5V. Pokud ano, je možno ke konektoru J6 připojit programátor a nahrát do procesoru program. Propojku J5 opět vyjmeme. Zbytek oživování je stejný. MB0B.doc / 004-05-4 / miho / http://www.mlab.cz 4 /

MB0B Reference Hodnota Reference Hodnota Odpory Polovodiče a krystaly R5 0 D N4005 R4,R 680 D,D4,D5,D6 N448 R k D BZX8V005. R,R,R5,R6,R9,R0,R,R4 0k Q B7 R7,R 7k Q B7 R8 00k Q B640 Odporové trimry U PI6F89-I/P P 0k U LM86 Kondenzátory X 0MHz 4,5 pf Mechanické součásti 4 4n7 SW,SW,SW,SW4 P-B70,6,7,8,9 0nF J,J JUMP 5,6 nf J JUMP5,,0 00nF J5 JUMP M/6V J6 PI_ISP 47uF/6V J4 DB9M_90,7 0uF/6V MB0B.doc / 004-05-4 / miho / http://www.mlab.cz 5 /

MB0B. Trocha hudební teorie Aby hudba zněla libozvučně (příjemně), je třeba, aby používané tóny ve stupnicích splňovaly podmínku, že jejich frekvence mají (malý) společný násobek. Například dvojnásobek jednoho tónu aby byl trojnásobkem jiného tónu. Takových stupnic lze skonstruovat mnoho. Aby bylo možné na klavír (nebo podobný nástroj, který umí vyrábět jen určité konkrétní tóny) hrát skladby komponované v různých stupnicích bez přelaďování nástroje, používá se tzv. temperované ladění. Temperované ladění není ideální, jedná se o kompromis hřešící na to, že lidský sluch není dokonalý. Temperované ladění spočívá v tom, že se oktáva rozdělí na stejných dílů, které mají geometrický odstup frekvencí tónů. Oktáva zahrnuje frekvence v rozsahu : a je v ní celkem 7 tónů a 5 půltónů. Z toho vyplývá, že poměr sousedních tónů a půltónů je vždy stejný a je roven /, tedy přibližně :.06. Následující tabulka uvádí pro jednotlivé tóny jejich frekvence. Vychází se z frekvence komorního A, která je 440Hz. Tóny o oktávu výš mají frekvence dvakrát vyšší, a naopak tóny o oktávu níž mají frekvence poloviční. Tón Frekvence [Hz] Oktáva 0 4 5 6 7,70 65,4 0,8 6,6 5, 046,5 09,0 486,0 is 4,65 69,0 8,6 77, 554,4 08,7 7,5 444,9 D 6,7 7,4 46,8 9,7 587, 74,7 49, 4698,6 Dis 8,89 77,78 55,6, 6, 44,5 489,0 4978,0 E 4,0 8,4 64,8 9,6 659, 8,5 67,0 574,0 F 4,65 87, 74,6 49, 698,5 96,9 79,8 5587,7 Fis 46,5 9,50 85,0 70,0 740,0 480,0 960,0 599,9 G 49,00 98,00 96,0 9,0 784,0 568,0 6,0 67,9 Gis 5,9 0,8 07,7 45, 80,6 66,,4 6644,9 A 55 0 0 440 880 760 50 7040 Ais 58,7 6,54, 466, 9, 864,7 79, 7458,6 H 6,74,47 46,9 49,9 987,8 975,5 95, 790, ( ) 65,4 0,8 6,6 5, 046,5 09,0 486,0 87,0 MB0B.doc / 004-05-4 / miho / http://www.mlab.cz 6 /

MB0B 4. Programové vybavení 4.. Uživatelský návod 4... Přehrávání skladeb Při přehrávání není na J5 propojka. Hlasitost se nastavuje trimrem P. Melodický zvonek začne hrát stiskem libovolného tlačítka (tlačítek). Přestože jsou na desce jen 4 tlačítka, je možné do zvonku naprogramovat až 5 skladeb. První čtyři jsou spuštěny přímo při stlačení jednoho ze čtyř tlačítek, pro aktivaci dalších skladeb je nutné stisknout několik tlačítek najednou dle následující tabulky. Číslo skladby Kombinace tlačítek Číslo skladby Kombinace tlačítek o o o 9 o o o o o 0 o o o o o o 4 o o o o 5 o o o 6 o o 4 o 7 o o 5 8 o o znamená stisknuto, o znamená v klidu 4... Programování skladeb Při programování se používá propojka na J5 a definice skladeb se přivádí z počítače ze sériové linky na konektor J4. Při rozběhu otestuje program, zda je na J5 propojka a zda je připojen počítač ke konektoru J4. Pokud ano, přejde do režimu programování. To se projeví zacvrdlikáním. Aby se program správně spustil při připojení napájení, musí být napájení odpojené alespoň 0 sekund. Pokud je nasazena propojka na J5 a nedojde ke správnému zresetování procesoru, může dojít k poškození obsahu paměti skladeb a skladby bude třeba znovu nahrát. Postup pro přechod do programovacího režimu: Odpojíme baterii a počkáme alespoň 0 sekund Připojíme kabel RS k počítači Připojíme baterii Nasadíme propojku J5 Stiskneme některé tlačítko a mělo by se ozvat zacvrdlikání MB0B.doc / 004-05-4 / miho / http://www.mlab.cz 7 /

MB0B Pro přenos dat do zvonku je možné použít téměř libovolný terminálový program. Parametry přenosu dat do zvonku jsou 9600Bd, 8bitů, stopbit, žádná parita. Řízení přenosu se nepoužívá. Protože data procesor zapisuje do své paměti programu, nemůže číst další data, než dokončí zápis předchozích. Proto je nutné nastavit časovou prodlevu mezi řádky na cca 00ms. Přenos je jen jednosměrný, zvonek neumí odesílat žádné informace sériovou linkou směrem k počítači. Má pouze propojené signály RX a TX tak, aby znaky odesílané do zvonku byly zobrazované na displeji terminálu. Pro propojení s počítačem se používá nulmodemový kabel (tedy křížený, spojení RX-TX, TX-RX). V prostředí Windows 98 je k dispozici program Hyperterminál (Start/Programy/Příslušenství/Komunikace/Hyperterminál). Pokud není, znamená to, že nebyl nainstalován, a je možné nainstalovat jej dodatečně nebo použít nějaký jiný terminálový program. Hyperterminál nás na úvod vyzve k nastavení základních komunikačních parametrů (9600Bd, 8, žádná,, žádné). Dále je třeba nastavit (Soubor/Vlastnosti/Nastavení/Nastavení ASII) zpoždění řádků 00ms. V této chvíli bychom měli vidět znaky psané na klávesnici v okně terminálu. Pokud je zvonek v režimu programování, měl by krátce pípnout při každém stisku odřádkování. Znamená to, že reaguje na posílaná data. Nyní již nic nebrání ručnímu ovládání. Větší množství dat (například celou melodii) je vhodné připravit do samostatného souboru a ten pak přes schránku vložit do terminálu (u Hyperterminálu pravé tlačítko, funkce Vložit k hostiteli). Většina terminálových programů umí i přímo odeslat textový soubor protistraně, ale Hyperterminál to neumí. MB0B.doc / 004-05-4 / miho / http://www.mlab.cz 8 /

MB0B 4... Příkazy a formát dat pro programování skladeb Procesor vždy nejprve převezme celou řádku a poté se ji snaží zpracovat. Pokud řádce nerozumí, pípne odlišně. Z řádky se uvažuje jen prvních 40 znaků. Text za // je komentář. Komentář může být libovolně dlouhý. Klíčová slova a jejich význam je v následující tabulce. Parametry jsou malá přirozená čísla v uvedeném rozsahu. Pokud je zadáno číslo větší, zvonek použije jen odpovídající spodní bity čísla. Klíčová slova a parametry Meze Význam PLAY n n:.. 5 Zahraj skladbu n ERASE BEGIN n n: 0.. 7 TEST n n: 0.. 7 TEMPO n n:.. 047 PAUSE n n:.. 047 Smaž všechny skladby Začátek definice skladby; číslo udává posunutí skladby o udaný počet oktáv nahoru Jako BEGIN, ale následující noty nejsou programovány do paměti, ale přehrávány Délka nejkratší noty v ms; není-li použito, je nastaveno na 00ms; může se použít vícekrát v jedné skladbě Délka prodlevy mezi notami; není-li použito, je nastaveno na 00ms; může se použít vícekrát v jedné skladbě [a] [b] END / text a: 0.. 7 :, is, D, Dis, E, F, Fis, G, Gis, A, Ais, H, Space b:.. 6 Číslo oktávy (sečítá se s parametrem u BEGIN); není-li uvedeno, použije se poslední hodnota Nota v oktávě a o délce b; Space je němá nota (mezera) Délka je v násobcích parametru TEMPO, není-li uvedena, je Konec skladby, další noty již budou pouze přehrávány Komentář; vše za znakem / do konce řádky se ignoruje Znaky [ a ] znamenají volitelný parametr MB0B.doc / 004-05-4 / miho / http://www.mlab.cz 9 /

MB0B 4.. Program Program melodického zvonku je napsaný v jazyce firmy S. Demoverze překladače je možné stáhnout z webu na adresa http://www.ccsinfo.com. Demoverze podporuje jen vybrané procesory (obvykle několik typů) a umožňuje napsat program v omezeném rozsahu (do 048 slov). Program je bohatě komentovaný a dostupný, je tedy snadné se s ním seznámit. Vzhledem k omezeným zdrojům použitého procesoru používá program v hojné míře globálních proměnných, protože to vede na kód kratší asi o 0%. Některé programové konstrukce také vypadají na první pohled nelogicky, ale jsou voleny s ohledem na dosažení minimální délky výsledného kódu. Je třeba si uvědomit, že použitý překladač jazyka patří k těm nejlevnějším, a proto neumí generovat příliš optimalizovaný kód. 4... Hlavní program a základní procedury main() Na začátku se hlavní program rozhoduje podle přítomnosti propojky na J5 a podle přítomnosti klidového signálu na RS, zda má přejít do režimu programování skladeb. Pokud ano, spustí se procedura Download(). Pokud není v programovacím režimu, zapíná procesor napájení sobě a zesilovači LM86 a po krátké prodlevě načítá stav tlačítek. Pak volá proceduru Play(), která na základě čísla skladby v proměnné isloskladby přehraje požadovanou skladbu. Následuje přechod do vypnutého stavu. Download() Tato procedura načítá nejprve celou řádku z RS. Znaky mezera, čárka a všechny řídící znaky kromě R (odřádkování) a BS (znak zpět) se chápou jako oddělovač (mezera). Znak BS umožňuje návrat o znak zpět. Znaky za znakem lomeno se ignorují stejně, jako znaky za maximální délkou řádky. Po stisku R se postupně zpracuje celá řádka. Hledají se v ní klíčová slova (procedura Word() ) a číselné parametry (procedura Number() ). Vyskytne-li se chybné slovo, dojde k nastavení příznaku Error a na konci řádky místo krátkého pípnutí dojde k chybovému pípnutí. Klíčová slova, tak jak jsou na řádce, se ihned vykonávají. Tedy noty hrají, slova TEMPO, PAUSE, PLAY, ERASE a TEST dělají přímo to, co dělat mají. Tato vlastnost slouží k testování melodií či jejich úryvků aniž by se musely zapisovat do paměti FLASH. Po slovu BEGIN se přejde do režimu záznamu do paměti a od tohoto okamžiku se vše zaznamenává do paměti. Tento režim končí slovem END (ale také slovy ERASE, TEST nebo PLAY). Pokud se během zpracování řádky odehrála alespoň jedna nota, nedojde na konci řádky k pípnutí (pokud ovšem nebyla někde na řádce chyba). Play(), PlayData(), Find() Tyto procedury slouží k přehrání celé skladby, jedné noty a k nalezení začátku zadaného čísla skladby. WriteDataInc(), WriteData, ReadData(), Erase() Tyto procedury slouží k zápisu, čtení a k mazání paměti skladeb. K zápisu nebo ke smazání může dojít jen pokud je nasazena propojka na J5. MB0B.doc / 004-05-4 / miho / http://www.mlab.cz 0 /

MB0B SpecBeep() Tato procedura slouží k pípnutí dle parametru v proměnných Beep a Error. 4... Knihovna pro generování zvuků Sound_t.c Tato knihovna používá časovač T spolu s jednotkou P ke generování přerušení dle požadované půlperiody hraného tónu. V přerušovací rutině IntP() se pak ovládá výstupní port. Délka tónu se odměřuje pomocí přetečení časovače T0. Přetečení se zjišťuje čtením příznaku T0IF, přerušení se zde nepoužívá. 4... Definice skladeb Data.c Skladby se ukládají v poslední čtvrtině paměti FLASH a kódují se dle následující tabulky. Slovo Kód Poznámka BEGIN n 0 0 n n n n n n n n n n n Začátek skladby a posunutí oktávy not skladby o n TEMPO n 0 n n n n n n n n n n n Změna tempa na n milisekund PAUSE n 0 n n n n n n n n n n n Změna mezery mezi notami na n milisekund o n d 0 d d d d d d o o o n n n n Nota n v oktávě o délky d END Konec skladeb, prázdná paměť Aby se dalo použít stejného souboru s definicí skladby jak pro začlenění skladby do firmwaru tak i pro programování přes RS, jsou v souboru Data.c nadefinována makra, která toto umožňují. Definice skladby, která má být začleněna do firmwaru musí, používat čárky jako oddělovače jednotlivých položek a číselné parametry není možné vynechávat. Příklady skladeb napoví vše. MB0B.doc / 004-05-4 / miho / http://www.mlab.cz /

MB0B 0nF PI_VDD R 680 A D5 N448 6 nf 9 0nF POWER 9V (6V.. V) D6 N448 OUTPUT 8 OHM (Min 4 OHM) R5 0 A R4 680 R8 00k 5 6 J6 PG PGD VDD GND MLR#/VPP PI_ISP PI_ISP 7 0uF/6V A R 0k ISP ONNETOR SW4 P-B70 8 0nF POWER AMLIFIER Q B7 B R7 7k R 0k 6 0nF E GND_PI VDD_86 7 0nF RS PGM INPUT INPUTS B Q B640 J JUMP A E D N448 47uF/6V A J5 JUMP 00nF R4 0k RESET R0 0k SW P-B70 X 0MHz A B 5 nf R9 0k A M/6V R 7k SW P-B70 A D BZX8V005. P 0k 00nF R 0k U LM86 LM86 5 4 8 GAIN 6 7 OUT GND GAIN VDD BYPASS RXD R6 0k D N4005 4 5 6 7 8 U PI6F89-I/P PI IN- IN+ RA/AN/VREF- AN/RA RA/AN/VREF+ AN0/RA0 RA4/AN4/T0KI LKI/OS/RA7 RA5/MLR#/VPP LKO/OS/RA6 GND VDD RB0/INT PGD/TOSI/RB7 RB/SDI/SDA PG/TKI/TOSO/RB6 RB/SDO/P SS#/RB5 RB/P/PGM SL/SK/RB4 9 0 8 7 6 5 4 AUDIO 5 pf 4 4n7 0 00nF J JUMP A POWER_86# R k R5 0k D4 N448 4 pf 0uF/6V A A SW P-B70 0 J4 DD DSR RXD RTS TXD TS DTR RI GND 6 7 8 4 9 5 RS DB9M_90 Q B7 PGM MODE J JUMP5 VDD 4 5 POWER_ON# E B MB0B.doc / 004-05-4 / miho / http://www.mlab.cz /