Musikaliska gratulationskort (17 / 17 steg)
Steg 17: Hur det fungerar
Det producerar en Musiknoteringen av spännande en piezo speaker med en fyrkantsvåg. En utgång är hög och den andra blir låg, under en viss tid. Efter en tid som denna stat är omvänd, utdata som var låg går hög och den andra går från hög till låg. Piezoelementet, ansluten mellan dessa två utgångar, ser en fyrkantsvåg av två gånger matningsspänningen över det och så producerar ett högt Obs, starkare än den som produceras om en enda utgång användes.
Musiknoter produceras genom att variera mellan växla stiften. Tabellen för förseningar är enligt data från Don Lancaster hemsida, www.tinaja.com, och återges här. Han gav också rutinen dröjsmål med upplösning ner till en enda instruktion period. Frekvensen av anteckningen är producerad av en programvara fördröjning, och siffrorna matas för detta counter tabellen som bildar melodin. En 'zero' betecknar att slutet av musiken nås och att spela är att återupptas från början. En "en" betecknar en vila som behövs, som en period av tystnad i stället för en ton produceras.
Den period för vilken varje not är lät mäts i timer tmr0. Det ligger att öka från instruktion klockan med en prescaler 256, den högsta möjligheten. Fem svämmar över av timer registret TMR0 göra upp en anmärkning längd.
En kopia av den mest signifikanta biten av timer registret bibehålls i (flaggor, tmrh) och om flaggan är hög när timern MSB är låg en överrullning anses ha ägt rum. Denna kontroll sker inom slingan inramade inom etiketten "forever" och anvisningen "goto forever".
Nästa anteckning ska hämtas förvaras i count1. Instruktionen "kalla bordet" är tillbaka med Obs förseningen i W. Det är skräddarsytt med noll till check för slutet av melodin. Sedan kontrolleras det för värdet en att kontrollera för vila. Om varken, skickas värdet i W på dröjsmål rutin.
Programflöde i Obs generation slingan har varit utjämnade för att ta samma antal cykler för alla villkor, med undantag av tiden att tmr0 rullar över. Detta är hörbara som ett slags tickar i bakgrunden.
Den angivna Hex-filen har testats med en 10F200 och en 10F202 och hittade för att arbeta. Källkoden har de nödvändiga ändringarna för att gör den lämplig för en 10F204 eller 10F206. Det har också testats med en 10F206.
En 10F220 eller 10F222 kan användas, men behöver ytterligare instruktioner till vända bort den kringutrustning som inte används och inställningar för fuse kommer måste också ändras.
Har roligt, och skriv om du lyckas få en musik maker att arbeta. Finns i åtta pin DIP versioner av dessa micros, och de är lättare att hantera, och de kommer att fungera lika bra i denna krets.