Rotary dialer PIC gränssnitt (5 / 7 steg)
Steg 5: Montera koden.
Koden är i huvudsak att fastställa när någon har vänt på ratten och sedan inte kant-upptäckt på signalen (fastställande låg-hög övergångar) fram till ratten recoils till sitt ursprungliga tillstånd. Efter avprickning antalet gånger den mäter en signal övergång, blinkar det sedan LED därmed.
Till exempel, om du ringer 3, räknas PIC tre låg-hög övergångar och sedan blinka en LED 3 gånger.
LED, som du kan ha slutsatsen dras, är onödigt för att detta ska fungera och är bara där för att ge dig synlig feedback. Du kan ersätta någon utdataenhet som du anser vara nödvändiga.
*********************
Här är några kod:
*********************
CPU = 16F877
MHZ = 20
CONFIG 16254
klickern var ordet
startcountin var ordet
countclicks var ordet
repvar var ordet
clacker var ordet
largefig var ordet
viktigaste:
countclicks = 0
repvar = 0
"Anger/återställer värden
hög B2
rctime B2, 1, startcountin
countclicks = 0
om startcountin > 10 sedan goto countmeup
"kontroller för att se om ratten har stängts och går till subrutin, om den har
gå till största
'================
countmeup:
hög B1
rctime B1, 1, clacker
"set jämför värde
gå till countmeuploop
'================
countmeuploop:
hög B1
rctime B1, 1, klickern
"kontroller räknar värde
largefig = clacker + 100
"anger ett värde för den tröskel som kommer att bli större
"än 0 men mindre än pin-höga värden
om largefig < klickern sedan
countclicks = countclicks + 1
endif
"lägger till 1 värde varje gång en låg till hög övergången registreras
hög B2
rctime B2, 1, startcountin
om startcountin < 10 sedan
om countclicks > 0 då
gå till blink
annat
gå till största
endif
endif
"kontroller för att se om ratten har ryggade tillbaka till sitt ursprungliga tillstånd
"om den och flera var rings det går på LED rutin
"annars, om inget nummer var ringt den går till största
clacker = klickern
"återställer jämförelsen värdet till det aktuella pin värdet
gå till countmeuploop
"inte pausar AT alla i denna rutin!
'================
blinker:
repvar = repvar + 1
"räknar varje upprepning av denna rutin
hög B3
Pausa 1000
låga B3
Pausa 1000
"blinkar lysdioden
om repvar = countclicks sedan
repvar = 0
gå till största
endif
"om upprepningar är lika med antalet gånger LED bör blinka
"sedan går tillbaka till den huvudsaklig rutinen
gå till blinker