Vyšší odborná škola a Střední průmyslová škola elektrotechnická Božetěchova 3, Olomouc Třída : M4 Školní rok : 2000 / 2001 ZÁVĚREČNÁ PRÁCE Z PŘEDMĚTU MIT Generování tónů (asembler AS51) Vypracoval : Tomáš MOŘKOVSKÝ Datum zadání : 10. 4. 2001 Datum odzkoušení : 10. 4. 2001 Datum odevzdání : 11. 4. 2001
ZADÁNÍ Vygenerujte tón (1) o frekvenci f 1 = 500 Hz a délce d 1 = 500 ms, následuje pomlka t 1 = 200 ms. Za ní bude tón (2) o frekvenci f 2 = 1000 Hz a délce d 2 = 400 ms, následuje pomlka t 2 = 300 ms. Tón (2) i pomlku t 2 opakujte 2x. verze A: stále opakovat verze B: 3x opakovat a ticho ÚVOD V praxi se velmi často setkáváme s různými primitivními zařízeními, která vydávají v určitých časových intervalech různé tóny. Jako nejčastější příklad bych asi uvedl doplňkové zvukové signály pro nevidomé na křižovatkách nebo tóny v telefonním přístroji. K podobnému účelu by mohl sloužit i generátor tónu, který se pokusím sestavit. POSTUP ZHOTOVENÍ 1. Rozdělení na jednotlivé části tónu dle různých frekvencí a prodlev. f 1 = 500 Hz d 1 = 500 ms f 2 = 1000 Hz d 2 = 400 ms t 1 = 200 ms t 2 = 300 ms 2. Výpočet časových intervalů pro generování tónu a časových prodlev. f 1 = 500 Hz => T1 = 1 / 500 = 2 ms => 1 ms tón a 1 ms ticho f 2 = 1000 Hz => T2 = 1 / 1000 = 1 ms => 0,5 ms tón a 0,5 ms ticho f 1, f 2 jsou zadané frekvence, z nich dle vztahu T = 1 / f vypočteme délku jedné periody zvuku T 1, resp. T 2. Tón o dané frekvenci v programovém vybavení řešíme pomocí střídání základního tónu (log 1) a časové prodlevy (log 0) součet obou těchto časů tvoří zmíněnou jednu periodu. p1 = d 1 / T 1 = 500 / 2 = 250 p2 = d 2 / T 2 = 400 / 2 = 200 p 1, p 2 vyjadřují počet period, které je třeba za sebou provést, abychom získali zadané délky tónů (1) a (2), tedy 500 ms, resp. 400 ms. Tomáš Mořkovský, M4 Strana 2 ( celkem 2 )
3. Návrh vývojového diagramu. START A START B R0 := 2 R4 := 3 R0 := 2 TON1000 TON1000 CAS100MS CAS100MS DEC(R4) START KONEC PIP500 PIP1000 R5 := 250 SETB P1.0 R5 := 200 SETB P1.0 PIP500 CAS1MS PIP1000 CAS05MS CLR P1.0 PIP1000 CLR P1.0 CAS1MS CAS05MS Nejsou zde uvedeny vývojové diagramy pro časové prodlevy CASxxMS z podprogramu MSKCAS.ASM, jelikož svou jednoduchostí by jen ztížili orientaci. Tomáš Mořkovský, M4 Strana 3 ( celkem 3 )
4. Vytvoření programu. Verze A (1.část) START: mov R0,#2 call call : call TON1000 call call CAS100MS djnz R0, jmp START Verze B (1. část) mov R4,#3 START: mov R0,#2 call call : call TON1000 call call CAS100MS djnz R0, djnz R4,START KONEC: jmp KONEC Pokračování pro verze A i B (2. část) : mov R5,#250 P: call PIP500 djnz R5,P TON1000: mov R5,#200 TON1000P: call PIP1000 call PIP1000 djnz R5,TON1000P PIP500: setb P1.0 call CAS1MS clr P1.0 call CAS1MS PIP1000: setb P1.0 call CAS05MS clr P1.0 call CAS05MS include (MSKCAS.ASM) end ;počet opakování druhého tónu ;volá podprogram tónu (1) ;pomlka za tónem (1) = 200 ms ;volá podprogram tónu (2) ;pomlka za tónem (2) = 200 ms ;pomlka za tónem (2) = 100 ms ;opakuje tón (2) ;stále opakuje tóny (1) a (2) včetně pomlk ;počet opakování tónů (1) a (2) a pomlk ;počet opakování druhého tónu ;volá podprogram tónu (1) ;pomlka za tónem (1) = 200 ms ;volá podprogram tónu (2) ;pomlka za tónem (2) = 200 ms ;pomlka za tónem (2) = 100 ms ;opakuje tón (2) ;opakuje tóny (1) a (2) včetně pomlk ;zacyklení ;počet period tónu (1) ;volá 1 periodu tónu (1) ;opakuje volání periody tónu (1) ;počet period tónu (2) ;volá 1 periodu tónu (1) ;volá 1 periodu tónu (1) ;opakuje volání periody tónu (2) ;základní tón na výstupu portu P1 ;časové zpoždění tónu 1 ms ;vypne základní tón na výstupu portu P1 ;časové zpoždění ticha 1 ms ;základní tón na výstupu portu P1 ;časové zpoždění tónu 0,5 ms ;vypne základní tón na výstupu portu P1 ;časové zpoždění ticha 0,5 ms ;použití externího podprogramu ;konec programu Tomáš Mořkovský, M4 Strana 4 ( celkem 4 )
Externí podprogram MSKCAS.ASM CAS05MS: mov R1,#248 HOP05MS: djnz R1,HOP05MS nop CAS1MS: call CAS05MS call CAS05MS CAS100MS: mov R2,#100 HOP100MS: call CAS1MS djnz R2,HOP100MS : call CAS100MS call CAS100MS CAS500MS: mov R3,#5 HOP500MS: call CAS100MS djnz R3,HOP500MS ;počet opakování cyklu pro 0,5 ms ;opakuje cyklus pro 0,5 ms ;zpoždění 1 us ;volá zpoždění 0,5 ms ;volá zpoždění 0,5 ms ;počet opakování cyklu 1 ms ; volá zpoždění 1 ms ;opakuje cyklus pro 1 ms ;volá zpoždění 100 ms ;volá zpoždění 100 ms ;počet opakování cyklu pro 500 ms ;volá zpoždění 100 ms ;opakuje cyklus pro 500 ms 5. Kompilace programu. Provedl program AS51 v hexadickém (šestnáctkovém) formátu: Verze A: :10000000780212001612008212001E1200821200E4 :100010007BD8F50200007DFA120029DDFB227DC8A5 :10002000120034120034DDF822D29012004CC2903B :1000300012004C22D290120045C290120045227844 :100040007CD8FE002212003F12003F22120045120F :1000500000452212004C12004C12004C12004C12AF :10006000004C22120053120053221200631200634C :100070002212006A12006A1200632212007112003A :10008000712212007B12007B221200821200821267 :10009000007B2212008912008922736F75726365DA :1000A0003D433A5C415335315C4D534B5A415630D8 :0500B000312E41534D0B :1000B20041534D41534D2063726561746564206103 :1000C20074202E2E2E2031302E342E32303031201C :0900D2002031373A32313A303264 :1000D900303250524E2063726561746564206174D8 :1000E900202E2E2E2031302E342E32303031202049 :0800F90031373A32313A313659 :1000FF0031362863292045617379536F66742073F5 :10010F00706F6C2E7320722E6F2E20313939302D77 :02011F0039366F :00000001FF Tomáš Mořkovský, M4 Strana 5 ( celkem 5 )
Verze B: :100000007C03780212001A12008612002212008667 :1000100012007FD8F5DCEB0200177DFA12002DDD0F :10002000FB227DC8120038120038DDF822D290126F :100030000050C29012005022D290120049C2901279 :10004000004922787CD8FE0022120043120043228D :1000500012004912004922120050120050120050A2 :1000600012005012005022120057120057221200A4 :10007000671200672212006E12006E1200672212D1 :1000800000751200752212007F12007F2212008676 :1000900012008612007F2212008D12008D22736FD3 :1000A000757263653D433A5C415335315C4D534B4A :0900B0005A415630322E41534DE5 :1000B60041534D41534D20637265617465642061FF :1000C60074202E2E2E2031302E342E323030312018 :0900D6002031303A33313A303266 :1000DD00303250524E2063726561746564206174D4 :1000ED00202E2E2E2031302E342E32303031202045 :0800FD0031373A32313A343157 :1001030034312863292045617379536F66742073F2 :10011300706F6C2E7320722E6F2E20313939302D73 :0201230039366B :00000001FF 6. Programování mikročipu (přípravek - na portu P1 připojený reproduktor). 7. Vyzkoušení správné funkce, event. doladění (opakujeme kroky 4 až 6) 8. Zpracování této dokumentace. ZÁVĚR Návrh, napsání programu, stejně jako jeho kompilace a převod programu do přípravku (ATMEL) až na drobnosti, kterým se většinou nelze při programování vyhnout, proběhlo bez problémů. POUŽITÉ POMŮCKY K návrhu a realizaci generátoru tónu, stejně tak i k zpracování této práce jsem použil: - osobní počítač - tabulka instrukcí mikročipu 8051 - přípravek pro vyzkoušení vytvořeného programu včetně propoj. kabelů - programové vybavení (editor programů v asembleru AS51, textový editor MS WORD, editor technických schémat MS VISIO) Tomáš Mořkovský, M4 Strana 6 ( celkem 6 )