Pocket Sized morsekod Flasher (5 / 7 steg)

Steg 5: Koden förklaras



Morsekod förklaras i följande kommentar, som visas i koden:

; Morsealfabetet består av
; prickar, korta blinkar;
; streck, långa blinkar, tre gånger så länge som en prick;
; och mellan fästpunkterna, som är perioder där ljuset är avstängd.
; inbördes avstånd finns i olika längder:
; I ett brev, prickar och streck är åtskilda av en
; avstånd som är av samma längd som en prick.
; bokstäverna är åtskilda med ett avstånd av samma längd som ett streck.
; Och orden skiljs åt av ett avstånd fem gånger så länge som en prick.
;
; Koden: (mer eller mindre. Det är en lång tid sedan 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 --..
;
;
Kommentarer i PIC assembler (som är det språk som programmet är skriven) börjar med ett semikolon tecken, och fortsätta till slutet av raden. Kommentarer är avsedda för nästa person som arbetar på koden, och faktiskt ge inte några instruktioner till mikrokontroller. Så berätta denna tabell med Morsealfabetet brev värden inte för datorn någonting. Instruktionerna till datorn visas längre ned.

När mikrokontroller startar upp, börjar det gå igenom instruktionerna börjar på plats noll. I detta program, kommer instruktionerna början på linje 45 placeras på plats noll, på grund av org 0 på linje 44. (I anteckningar, kan du hitta numrerade linjerna genom dra ner på Redigera-menyn och klicka på gå till raden. Anteckningar inaktiverar Goto linje om wordwrap aktiveras; om Goto linje inte verkar fungera (nedtonad) dra ner på Format-menyn, och unclick wordwrap.)

org 0; återställa vektor
Start:
gå till största

org 4. avbrottsvektor
retfie; gör ingenting

viktigaste:
banksel TRISIO; Välj bank 1, där TRISIO lagras.
movlw 0; ange GP0-GP5 alla utgångar.
movwf TRISIO
banksel GPIO; Välj bank 0, att använda GPIO

BCF GPIO, 2;; stänga av LED
slinga:
kalla letterF
samtal S
kalla letterC
ringa avstånd
goto loop

Lite om TRISIO är initiering att inrätta mikrokontroller. För att förstå det helt, skulle du behöva läsa igenom databladet för PIC12F683.
Programmet går igenom instruktionen på varje rad, då flyttar till nästa rad, om anvisningen inte är en goto, samtal, avkastning eller retfie

Det är logiskt att dra slutsatsen att linje samtalet letterF orsakar mikrokontroller att blinka ett F i morsekod. Det är också sant, men anledningen är är sant är det ett kodblock som heter letterF() har redan definierats i detta program. Som blockerar ser ut så här:

; Koden för F är... -.
letterF:
Ring dot
Ring dot
Ring dash
Ring dot
ringa avstånd
returnera

Eftersom tabellen brev berättar att bokstaven F är... -. igen är det logiskt att tro att det är vad denna kod gör--berättar mikrokontroller till första blixten en prick, då en prick, då en dash, etc. Igen, det är också sant, men återigen, eftersom vi har lämplig kod någon annanstans i programmet. Exempelvis har vi:

dot:
BSF GPIO, 2;; slå på LED
kallar dotTime;; vänta lite
BCF GPIO, 2;; stänga av LED
kallar dotTime;; vänta lite
returnera

Tjocktarmen tyder på att detta är definitionen av dot; Det är korrekt, och bara en definition är tillåtet för en symbol i ett program. Vi kan använda den så ofta som vi vill, men.
För att göra känsla av detta behöver vi veta att GPIO bit 2 är ansluten till stift 5, vilket är där vi ansluten LED. När GPIO bit 2 är satt till 1, har stift 5 5 volt på den. När vi skickar värdet 0 till GPIO stift 2, ändras spänningen på PIN-koden till 0 volt. Namnen på stiften på kretsen Schematisk antyder detta.

Så är en prick flashad av tända lampan, väntar en stund, sedan stänga av den och väntar en stund. Vi behöver en väntan efter pricken att hålla blixtar från kör förminskningen tillsammans, och det är vad dotTime koden gör.

Namnen på de olika PIC12F683 pins och register är gömd insida en fil som inkluderar vi högst upp i programmet i raden

#include < p12F683.H >
DotTime blocket ser ut så här

dotTime:
Ring dröjsmål;; vänta lite
returnera
förseningen är ännu ett annat block av kod, förmodligen de mest komplicerade i detta program:
; definiera programmet variabler. Detta råkar vara i bank 0
Jag equ 0x20
j equ 0x21
k equ 0x22

försening:; förseningar ~ 1 sekund på en 4MHz klocka
movlw 5
movwf i, använder en triply kapslade slinga
Topi: clrf j
topj: clrf Karlsson
Dolmabahç: incfsz k, 1; räkning till 256
gå till Dolmabahç; inre loop är 3 cykler
incfsz j, 1
gå till topj
decfsz i, 1
gå till topi
returnera

du skulle behöva en programmerare att programmet koden till chipet.

Se Steg
Relaterade Ämnen

Pocket Sized brottas pistol

änterhakar är overated, de är stora och skrymmande, obnoxiously högt när bränning, och är mycket prisvärda med en prislapp som kan vara så mycket som 200$! Ibland ännu mer. Så en dag hittade jag detta instructable, jag blev omedelbart inspirerad! Eft...

Den märkligt stark Trebuchet: En Pocket Sized medeltida belägring motor

The märkligt stark Trebuchet är en miniatyr trebuchet konstruerade på ett sätt så att de kan demonteras och förvaras i en Altoids tin. Den använder standard material som trä, gängade metallstänger och annan hårdvara. Den använder också gemensamma ver...

Ihopfällbar Pocket-Sized Cornhole spelet

Hej alla! Har du någonsin fått uttråkad mitt i klassen, eller kanske under ett möte? Det finns nu en lösning! Skåda! Med detta lätt bärbar vikbar cornhole spel, kan du ta roligt i cornhole med dig i fickan. Den kan vika in en resväska och vika tillba...

Hur du anger Pocket-Sized tävlingen

att göra ett bra litet projekt är en rolig utmaning. Det handlar om arbetar inom begränsningar att se hur mycket grejer du kan passa in i en liten burk eller skapa något liten nog att bära runt och enkelt visa andra.På allmän begäran, är vi föra till...

Pocket Sized elektroniska Eraser

har du någonsin gått till en Smiggle butik och såg de elektroniska suddgummin?Du gå olyckligt hem tänker hur mycket du vill ha det och undrar hur man får pengar.Väl det dilemmat är äntligen över! Gör denna billiga lilla fickformat elektroniska raderg...

Pocket Sized magnetiska fiske som i Altoid tin!

Pocket Sized magnetiska fiske som i Altoid tin!Perfekt present för små händer...Jag gjorde alla mina barn lite fiske kit till jul!Jag gjorde dem lite olika storlekar... men en var mycket litennog för att passa i en Altoids tin... för min sonsom älska...

Pocket Sized Eco-Planter!!!

Alla vill vara ekologisk så som en hade en tic-tac och tittade på behållaren, jag såg Pocket Sized Eco-Planter!!! Obs: Växterna i min en är död eftersom jag glömde att vattna dem!Steg 1: material Behöver du:1 tom Tic-tac behållare (med alla papper på...

Pocket Sized kartong Voodoo tortyr Kit

i forna tider av 2000-talet arbetarna blev arg med medarbetare och deras chefer. Elever fick arga med deras lärare och huvud-lärare. Vänner blev arg med fiender men alla dessa gamla människor visste att de skulle få ont eller uteslutna eller sparken...

Hur man skriver in den Pocket-Sized tävling

vinnare meddelat! Se vem som vann här.Vi lever många av våra liv på språng så vad kan du göra som enkelt kan gled in i din ficka och transporteras runt? Visa oss något sval och bärbara och vinn en t-shirt!För detta börjar vi den Pocket-Sized tävling!...

Pocket Sized Pin kudde

i detta Instructable kommer jag visa dig hur man gör ett enkelt men användbart pin kudde.Du behöverTygGängaNålVaddKapsylLimSteg 1: tyg Här vi måste minska om en 1 tum diameter cirkel. Sedan sy 1/4 tum från kanten av tyget som visas i bilden.Steg 2: S...

Hur man gör en pocket sized pistol

Inledning:Idag, kommer jag att visa dig hur man gör en pistol liten nog att passa i din fickaOkej, det är inte egentligen en "pistol" är det mer som en "shooter". Det finns många saker som denna penna/pistol kan skjuta. Även om i princ...

Pocket Sized toalettpapper!

Pocket sized toalettpapper är mycket häftigt och är praktiskt...!!!Material:TejpKartongtoalettpapperFörsta steget: åtgärd papp... min är 1,6 * 5 inches2. steg: skära papp3. steg: rulle det!4. steg: lägga ett band se till att den är stark5: e steg: sk...

Pocket Sized Robot Arm MeArm V0.4

MeArm är en Pocket Sized Robot Arm. Det är ett projekt som startade i februari 2014, som har haft en fantastiskt snabb resa till dess nuvarande tillstånd tack vare det öppna utveckling som en öppen hårdvara projekt. Version 0.3 var med på Instructabl...

Pocket sized fireworks detonator / modell rocket launcher

efter ibles, insåg jag att alla fyrverkeri sprängkapslar var stor. Efter googling "pocket sized fireworks detonator" det fanns inget internet som skulle kunna kallas "pocket sized), så bestämde jag mig att göra min egen. Alla delar från det...

Pocket Sized lödning Kit (kall värme hacka)

det är de sista två minuterna av den bästa fotbollsmatch för säsongen, ditt team är upp vid sju och oppositionen har bollen på din 10 yards linjen. Fotbollen är höjt, och som omedelbart eftersom bollen lämnar centers händerna, TV: N förlorar makten p...

Pocket sized alkohol spis

detta är en pocket sized alkohol spis för överlevnad kit jag arbetar på.Det är riktigt små, men ändå en bra alkohol spis. Den har inga rörliga delar och den är gjord av 2 komponenter, är mycket stark och tålig.Materialen är:en gas Spiss kranen är mou...

Pocket Sized Yatzy

detta är lätt att göra Yahtzee spel att passa i din ficka. Det tar några origami veck men kan göras på några minuter.Steg 1: materialDu behöver följande.SaxTyvekMarkörer (för dekorering)Ett gemYatzy ark från http://www.memory-improvement-tips.com/yah...

Pocket Sized verktygslåda

Detta är min pocket sized verktygslåda. Den har allt jag behöver fixa saker utanför mitt hem och kan användas som en survival kit. Den innehåller verktyg som små skruvmejslar, små markör och måttband Hmmm vad mer kan jag behöver? Jag behöver ett band...

DIY Handyman Pocket Sized verktygslåda-Feat. Hemma gjort skruvmejsel

i slutet av detta instructable, får ni en verktygslåda med flera skruv bitar, uttag och hex nycklar. Vad är bättre än att kunna reparera och fixa allt till ditt förfogande på språng? Ingenting ju!Detta verktyg är mycket anpassningsbar. Du kan lägga t...