Pocket Sized morsecode Flasher (5 / 7 stap)

Stap 5: De Code uitgelegd


Morse code wordt uitgelegd in de volgende opmerking, die in de code verschijnt:

; Morse-code bestaat uit
; stippen, dat kort knippert;
; streepjes, die lange knippert, drie keer zo lang als een stip;
; en spaties, die perioden waarin het licht is zijn weg.
; spaties zijn er in verschillende lengtes:
; In een brief, puntjes en streepjes worden gescheiden door een
; afstand die dezelfde lengte als een punt.
; brieven worden gescheiden door een afstand de dezelfde lengte als een streepje.
; En woorden worden gescheiden door een afstand vijf keer zo lang als een punt.
;
; De code: (meer of minder. Het is een lange tijd sinds de Boy Scouts)
; A .- * B -... * C -.-. * D -..
; E. * F .. -. * G --. * H ....
; I .-. * J .--- * K -.- * L .-..
; M -- * N -. * O --- * P .--.
; Q --.- * R .-. * S ... * T -
; U... - * V ...- * W .-- * X -.. -
; Y -.-- * Z --..
;
;
Opmerkingen in PIC-assembler (dat is de taal waarin dit programma is geschreven) start met een puntkomma karakter, en tot het einde van de lijn. Opmerkingen zijn bedoeld voor de volgende persoon die op de code werkt, en geven geen eigenlijk geen instructies aan de microcontroller. Dus vertellen deze tabel van Morse code brief waarden niet de computer iets. De instructies voor de computer komt verder naar beneden.

Wanneer de microcontroller begint, begint het gaan door de instructies op locatie nul beginnen. In dit programma, zal de instructies vanaf lijn 45 worden gelegd op locatie nul, vanwege de org 0 op lijn 44. (In Kladblok vindt u genummerde lijnen trekken van het menu bewerken en klikt u op de Goto Line. Kladblok wordt uitgeschakeld Goto Line als wordwrap is ingeschakeld; Als Goto Line lijkt niet te werken (wordt grijs weergegeven) pull-down menu Opmaak en klik wordwrap.)

org 0; reset van vector
Start:
goto belangrijkste

org 4; interruptvector
retfie; niets doen

belangrijkste:
banksel TRISIO; Selecteer bank 1, waar TRISIO is opgeslagen.
movlw 0; instellen van GP0-GP5-alle uitgangen.
movwf TRISIO
banksel GPIO; Selecteer bank 0, GPIO gebruiken

BCF GPIO, 2;; LED uitschakelen
lus:
oproep letterF
oproep S
oproep letterC
oproep afstand
goto lus

Het stukje over TRISIO is initialisatie instellen van de microcontroller. Om volledig te begrijpen, zou u moeten lezen via het gegevensblad voor de PIC12F683.
Het programma gaat door middel van de instructie op elke lijn, dan verplaatst naar de volgende regel, tenzij de instructie een goto, oproep, return of retfie is

Het is logisch om te concluderen dat de lijn oproep letterF de microcontroller veroorzaakt te knipperen een F in Morse code. Het is ook waar, maar de reden is is waar is dat een blok code benoemde letterF() al is gedefinieerd in dit programma. Dat blok ziet er zo uit:

; De code voor F is... -.
letterF:
oproep stip
oproep stip
oproep dash
oproep stip
oproep afstand
terugkeer

Aangezien de inhoudsopgave brieven vertelt ons dat de letter F... -. het is weer logisch om te geloven dat dat is wat deze code doet--vertelt de microcontroller aan eerste flits een stip, dan een stip, dan een streepje, enz. Nogmaals, het is ook waar, maar nogmaals, omdat we passende code elders in het programma hebben. Bijvoorbeeld, hebben we:

stip:
BSF GPIO, 2;; LED inschakelen
Bel dotTime;; een beetje wachten
BCF GPIO, 2;; LED uitschakelen
Bel dotTime;; een beetje wachten
terugkeer

De dikke darm suggereert dat dit de definitie van punt is; dat klopt, en slechts één definitie is toegestaan voor een symbool in een programma. We kunnen het zo vaak als we, maar willen gebruiken.
We moeten weten dat GPIO bit 2 is verbonden met pin 5, dat is waar we de LED verbonden om zin van dit. Als GPIO bit 2 is ingesteld op 1, heeft pin 5 5 volt op. Wanneer we de waarde 0 verzenden door de GPIO pin 2, verandert de spanning op de pin 0 volt. De namen van de pinnen op het circuit schema wijzen op dit.

Dus is een stip geflitst door het aanzetten van de LED, wachten een tijdje, dan het uitschakelen en een tijdje wachten. We moeten een wachttijd na de stip te houden van de flitsen unreadably samen worden uitgevoerd, en dat is wat de dotTime code doet.

De namen van de verschillende PIC12F683 pinnen en registers zijn verborgen binnen een bestand die wij op de top van het programma in de lijn

#include < p12F683.H >
Het blok dotTime ziet er als volgt

dotTime:
Bel vertraging;; een beetje wachten
terugkeer
vertraging is nog een ander blok van code, waarschijnlijk de meest ingewikkelde in dit programma:
; programma variabelen definiëren. Deze toevallig in bank 0
Ik equ 0x20
j equ 0x21
k equ 0x22

vertraging:; vertragingen ~ 1 seconde op een 4MHz klok
movlw 5
movwf i; maakt gebruik van een geïdentificeerdc geneste lus
Bovenaan paginaIk: clrf j
topj: clrf k
topk: incfsz k, 1; graaf tot 256
goto topk; binnenste lus is 3 cycli
incfsz j, 1
goto topj
decfsz i, 1
goto topi
terugkeer

u zou moeten een programmeur de code in de chip programmeren.

Gerelateerde Artikelen

Hoe om de wedstrijd Pocket-Sized

Hoe om de wedstrijd Pocket-Sized

maken van een grote kleine project is een leuke uitdaging. Het is over het werken binnen de beperkingen om te zien hoeveel spullen je in een beetje tin passen kan, of iets klein genoeg om te voeren rond en anderen gemakkelijk te laten maken.Wegens po
Het vreemd genoeg sterke Trebuchet: Een Pocket Sized middeleeuwse beleg motor

Het vreemd genoeg sterke Trebuchet: Een Pocket Sized middeleeuwse beleg motor

Het vreemd genoeg sterke Trebuchet is een miniatuur trebuchet ontworpen op een manier zodat het kan worden gedemonteerd en in een Altoids tin opgeslagen. Het maakt gebruik van standaard materialen zoals hout, metalen draadstangen en andere hardware.
Pocket Sized magnetische vissen instellenin pepermuntje tin!

Pocket Sized magnetische vissen instellenin pepermuntje tin!

Pocket Sized magnetische vissen instellenin pepermuntje tin!Perfecte gift voor kleine handjes...Ik heb elk van mijn kinderen een beetje visserij kit voor Kerstmis!Ik heb elk van hen enigszins in grootte verschillen... maar een klein wasgenoeg om te p
Pocket Sized kamp kachel (The verbeterd

Pocket Sized kamp kachel (The verbeterd

dit instructable kwam eigenlijk over door de noodzaak. Ik hou van de camping, en vaak gaan wandelen in het bos. Hoe vaak hebt u bracht een dag vissen, en wenste dat u sommige verse vis zou kunnen gooien in een pan daar op het dok?Voor mij betekende a
Pocket Sized lantaarn

Pocket Sized lantaarn

hier in Pakistan lijden wij frequente stroomuitval die laatste uren. Aangezien ik een universitaire student ben, ik nodig een draagbare bron van licht, maar ik vond dat de kaarsen waren niet helder genoeg. Ik kwam met een eenvoudige mini lantaarn die
Het invoeren van de wedstrijd van de snelheid Pocket-Sized

Het invoeren van de wedstrijd van de snelheid Pocket-Sized

winnaars bekendgemaakt! Zien wie er gewonnen hier.We leven ons leven veel onderweg dus wat kan je maken dat gemakkelijk kan worden gleed in uw zak en gedragen rond? Tonen ons iets koel en draagbare en win een t-shirt!Hiervoor zijn we de wedstrijd Poc
Pocket Sized worstelen Gun

Pocket Sized worstelen Gun

Grappling haken zijn overated, ze zijn groot en volumineus, hinderlijk luid wanneer afvuren, en zeer prijzige met een prijskaartje dat maar liefst 200 kunnen $! Soms zelfs meer. Dan één dag vond ik dit instructable, ik meteen was geïnspireerd! Na dri
Portable(Pocket-sized) om het even welk-Weather Fire-Starter!

Portable(Pocket-sized) om het even welk-Weather Fire-Starter!

Dit is een zeer goedkope en gemakkelijke manier om te beginnen een brand overal in alle weersomstandigheden, met behulp van alleen gemeenschappelijke huishoudelijke artikelen. Laat een reactie als u een fout vindt, en please voor me in de Pocket-Size
Pocket Sized theater - AKA Altoids Cinema

Pocket Sized theater - AKA Altoids Cinema

ik had een telefoon van de Tik en ik had een Altoids tin, dus natuurlijk maakte ik een mini theater!  Wat ik eigenlijk deed was demonteren van de telefoon en monteer het waar het zou passen mooi en knus in de altoids tin, en vervolgens toegevoegd som
Pocket Sized visserij Overlevingspakket voor

Pocket Sized visserij Overlevingspakket voor

In dit Instructable, zal ik u tonen hoe te maken van een Pocket Sized visserij Overlevingspakket met behulp van een Altoids tin. Er zijn meer toepassingen deze kit dan net vissen. het enige ding is echter je moet hen achterhalen. ze zijn niet moeilij
Pocket Sized solderen Kit (koude warmte Hack)

Pocket Sized solderen Kit (koude warmte Hack)

het is de laatste twee minuten van de beste voetbalwedstrijd van het seizoen, uw team is door zeven en de oppositie heeft de bal op uw 10-yard-lijn. Het voetbal is gewandeld, en als onmiddellijk als de bal de handen van de centra verlaat, de TV macht
DIY Pocket Sized anti-diefstal Alarm!

DIY Pocket Sized anti-diefstal Alarm!

IS iemand knijpen je spullen en je niet weet wie het is? niet weet wie dat iemand is? dan dit instructable is voor jou om ze te vangen rood overhandigd!in dit instructable ik zal u tonen hoe maak je een zakje spanwijdte indringer alarm dat is lichtge
Pocket Sized Pin kussen

Pocket Sized Pin kussen

In dit Instructable zal ik u tonen hoe maak je een eenvoudige maar nuttige pin kussen.Je moetStofDraadNaaldBattingKroonkurkLijmStap 1: stof Hier wij moeten snijden over een cirkel met een diameter 1 inch. Naai dan 1/4 inch vanaf de rand van de stof z
Piloot G2 Pen Cannon - voor de Pocket Sized wedstrijd

Piloot G2 Pen Cannon - voor de Pocket Sized wedstrijd

In dit instructable ik zal u tonen hoe maak je een zakje spanwijdte bb kanon uit de populaire G2 gel pen gemaakt door piloot. Het bouwproces duurt ongeveer tien minuten en minder dan $5. Ik verontschuldig me bij voorbaat voor clicky stuk zeggen, ik w