Nya jorden tid (NET) digital klocka i återvunnet retro-modern fall (4 / 6 steg)
Steg 4: Microcontroller kod
Kod förklaring:
Tidtagning:
Magiska förhållandet att konvertera regelbunden tid till ny jord tid är 0,25 NET minuter per sekund (eller 1 NET minut för varje 4 sekunder av förfluten tid). Det här beräknas med nyckeltal 360 NET Deg per 24 timmar och 60 NET minuter per NET grad.
Att räkna NET, koden använder pics inbyggda Timer1 (TMR1) modul med en extern 32.768kHz kristall för tidtagning. För att uppnå det magiska förhållandet 1 NET min per 4 sekunder, kan vi använda 16-bitars TMR1 registret med en 1:2 prescaler. (16-bitars TMR1 flödar över på 65536 räknas, crystal körs på 32768 räknas per sekund. 65536/32768 = overflow var 2 sekunder. Lägg bara till i 1:2 prescaler och voila! Avbryta var 4 sekund!)
Display:
PIC själv kör på 4MHz intern oscillator. De fem 7-segment LED-displayerna genomsöks enligt ett fast intervall styrs av Timer0 (TMR0). Varje gång TMR0 flödar över, att PIC växla till nästa visning (time division multiplexing). Nyckeln till tid division multiplexing visar är att skanna dem som snabbt som möjligt och med regelbundna mellanrum. Annars uppfattar ögat flimmer i displayen.
Tid inställning/knappar:
Tidsinställning utförs av två knappar - en knapp steg NET grader och en NET minuter. Knapparna skall kontinuerligt övervakas av PIC i huvudprogrammet ögla. Om du vill spara I/O pins, är knapparna anslutna till vad är normalt en utgångsstiftet. När PIC söker för knappen status, det växlar det i/o pin till indata och tar en behandling.
När en knapptryckning upptäcks, går programmet till en tid sättande funktion specifik för varje knapp. Denna funktion ökar variabeln att hålla reda på tiden, precis som på TMR1 avbryta. En enda tryckning ökar värdet för den klocka ett steget, när du håller ner knappen kommer att resultera i kontinuerlig förväg. Det finns en fördröjning funktion i koden till Dämpningstid inledande pressen och ge tid för kontinuerlig förskottet.