Stap 17: Hoe het werkt
Het produceert een muzikale noot door een piëzo-luidspreker met een blokgolf spannend. Een uitgang hoog is gemaakt en de andere laag, is gemaakt voor een bepaalde tijd. Na enige tijd deze situatie omgedraaid, de uitvoer die was laag gaan hoog en de andere gaande van hoog naar laag. Het piëzo-element, aangesloten tussen deze twee uitgangen, ziet een blokgolf van tweemaal de voedingsspanning overheen en zo produceert een luid nota, harder dan die geproduceerd als een uitgang werd gebruikt.
De muzieknoten worden geproduceerd door het variëren van de vertraging tussen het schakelen van de pinnen. De tabel vertraging is volgens de gegevens uit Don Lancaster van de website, www.tinaja.com, en hier overgenomen. Hij leverde ook de routine van vertraging met een resolutie tot een enkele instructie-periode. De frequentie van de notitie wordt geproduceerd door een vertraging van de software, en de nummers worden gevoed aan deze teller-formulier, de tabel die de melodie vormt. Een 'nul' duidt aan dat het einde van de muziek is bereikt, en dat spelen moet worden hervat vanaf het begin. Een 'one' duidt aan dat een rust nodig is, en een periode van stilte in plaats van een Toon wordt geproduceerd.
De periode waarvoor elke noot wordt geklonken wordt afgemeten aan de timer-tmr0. Het is ingesteld op het verhogen van de instructie klok met een prescaler van 256, de maximaal mogelijke. Vijf loopt over van het register van de timer TMR0 make-up ã‰ã © n nota lengte.
Een kopie van de meest significante bit van het register van de timer wordt onderhouden in (vlaggen, tmrh) en als de vlag hoog is wanneer de timer MSB slinkt een rollover wordt geacht te hebben plaatsgevonden. Deze controle wordt gedaan binnen de lus ingekaderd binnen het label "forever" en de instructie "goto forever".
De volgende notitie worden opgehaald wordt gehouden in count1. De instructie "oproep tabel" keert terug met de opmerking vertragingbij W. Het is ORed met nul te controleren voor het einde van de melodie. Vervolgens wordt het gecontroleerd op de waarde om te controleren op een rust. Als geen van beide, wordt de waarde in W doorgegeven aan de routine van de vertraging.
De programmeerstroom in de opmerking generatie lus heeft geweest geÎgaliseerd om hetzelfde aantal cycli voor alle omstandigheden, behalve voor de tijd dat tmr0 rolt over. Dit is hoorbaar als een soort tikken op de achtergrond.
De meegeleverde Hex bestand is getest met een 10F200 en een 10F202 en gevonden om te werken. De broncode heeft de nodige wijzigingen worden aangebracht zodat het geschikt is voor een 10F204 of 10F206. Het is ook getest met een 10F206.
Een 10F220 of 10F222 kan worden gebruikt, maar zal moeten aanvullende instructies voor het uitschakelen van de randapparatuur die niet worden gebruikt, en de instellingen van de zekering moet ook worden gewijzigd.
Veel plezier, en schrijf als u erin om een muziek maker te werken. De acht pin DIP versies van deze micros beschikbaar zijn, en ze zijn gemakkelijker te hanteren en ze zo goed zal werken in dit circuit.