LED julkort med hjälp av PIC 10F200 (6 / 6 steg)
Steg 6: avslutande tankar: dess över
Jag har förutsatt källkoden under GPL, men om du tycker det är bra och vill bidra till min komponenter fond sedan skicka Paypal betalning för £3 till mandoline
Ha kul och god jul!
-A
källa koden börjar här...
Lista över P = 10f200
; LED-fader/flimmer rutinmässiga v0.01
; Skrivet av Andre de Guerin "mandoline
; W register är 0x00
; f register är 0x01
; GPIO 0 till 2 är utgångar
; Observera att ICSP kräver externa Vcc, och förutsätter ingen belastning på ICSPCLK/DAT pins
; Observera att W register sammanhang status måste bevaras, använder 0x1F för detta
; Observera att jag nu använder en annan utgång rutin för att få 6 utgångar med 3 io pinnar
denna kod publiceras gratis under GPL licens, men om du gillar det och vill
bidrag till författarens elektroniska komponenter fond skicka Paypal betalning för £3 :)
Ursprungligen skriven som proof of concept för 10F20x serien
; Tack igen till Quasar elektronik för deras K182 programmerare och MicroBrn, och
deras ytterst hjälpsam tekniska supportpersonal.
; Krets layout:-par av lysdioder med omvänd polaritet mellan varje kombination av utgångar
; Kan minska antalet sammankopplingar av ledningar lysdioder i serien par
dvs---0-AK-0-AK-0-AK---to start, där 0 är finns GPIO linjer.
GPIO EQU H '0006'; definiera GPIO
TMR0 EQU H "0001", definiera TMR0
OSCCAL EQU H "0005", definierar OSCCAL
BCF OSCCAL, 0; gör GPIO 0 * viktigt *
clrwdt; viktigt röjning av WDT före prescaler förändring
Starta movlw b '11000100'; Inga vak på pin förändring,
; Ingen pull ups, ignorera timer
; Aktivera 256:1 förhållande på TMR0 prescaler
alternativet
movlw b '11001000', är samtliga utom GPIO 3 utgångar
tris GPIO
movlw b '00100100'
movwf 0x10
movlw b '10010010'
movwf 0x11; Obs, färre register på 10f200
movlw b '01001001'
movwf 0x12
movlw b '10010010'
movwf 0x13
movlw b '01001001'
movwf 0x14
movlw b '00100100'
movwf 0x15
movlw b '10010010'
movwf 0x16
movlw b '01001001'
movwf 0x17
movlw b '00100100', kan ha fel i registret rutin, men fungerar atm
movwf 0x18
movlw b '00010001'
movwf 0x19
movlw b '10001000'
movwf 0x1A
movlw b '01000100', genererar twinkle-liknande effekt
movwf 0x1B
movlw b '00100100'
movwf 0x1C
movlw b '10010010'
movwf 0x1D
movlw b '01001001'
movwf 0x1E
movlw b '11001000', är samtliga utom GPIO 3 utgångar
tris GPIO
goto loop; ovillkorligt hoppa till ögla
slinga btfss TMR0, 7; sätter upp utgångar så bara ändringar anges på tmr0 timeout (11111100)
goto loop; effektivt använder TMR0 som en lång fördröjning loop
btfss TMR0, 6
goto loop
btfsc TMR0, 5
gå till SKIFT
Skift movlw b "00000000", återställer TMR0 ursprungliga värde
movwf TMR0
Lantbrukarnas Riksförbund 0x10, f; Utföra SKIFT, även om ett register är redundant
Lantbrukarnas Riksförbund 0x11, f
Lantbrukarnas Riksförbund 0x12, f, använder alla tillgängliga register som fördröjningslinje
Lantbrukarnas Riksförbund 0x13, f
Lantbrukarnas Riksförbund 0x14, f
Lantbrukarnas Riksförbund 0x15, f; användbara register är 0x10 till 0x1E endast
Lantbrukarnas Riksförbund 0x16, f
Lantbrukarnas Riksförbund 0x17, f
Lantbrukarnas Riksförbund 0x18, f
Lantbrukarnas Riksförbund 0x19, f
Lantbrukarnas Riksförbund 0x1A, f
Lantbrukarnas Riksförbund 0x1B, f
Lantbrukarnas Riksförbund 0x1C, f
Lantbrukarnas Riksförbund 0x1D, f
Lantbrukarnas Riksförbund 0x1E, f
movlw b '11001000'
btfsc 0x10, 3; utdata rutin
BSF 0x00, 0; möjliggör GPIO bit 0
btfsc 0x12, 3
BSF 0x00, 1; möjliggör GPIO bit 1
btfsc 0x14, 3
BSF 0x00, 2; möjliggör GPIO bit 2
tris GPIO; flyttar nuvarande delstaten W till GPIO
btfsc 0x10, 7
BSF GPIO, 0
btfss 0x10, 7; tester 0x10 bit 7
BCF GPIO, 0; Clear GPIO om 0x10 lite 7 klart
btfsc 0x15, 7
BSF GPIO, 1
btfss 0x15, 7
BCF GPIO, 1; Detta görs på grund av dubbla utgångar
btfsc 0x1A, 2
BSF GPIO, 2
btfss 0x1A, 2
BCF GPIO, 2; lossnar TRIS från GPIO staten så effektivt 3 "utgångar"
REG bsf 0x1F, 7. Anger 1E biten 8 till F
btfss 0x10, 0; Tester för att se om 0x10 bit 0 är 0
BCF 0x1F, 7. Rensar 1E bit 8 om inte
goto loop
SLUTET
hex koden börjar här:-
: 020000040000FA
: 1000000005040400C40C0200C80C0600240C3000D7
: 10001000920C3100490C3200920C3300490C340030
: 10002000240C3500920C3600490C3700240C3800A3
: 10003000110C3900880C3A00440C3B00240C3C00A5
: 10004000920C3D00490C3E00C80C0600270AE1074F
: 10005000270AC107270AA1062D0A000C21007003F8
: 1000600071037203730374037503760377037803D 4
: 1000700079037A037B037C037D037E03C80C70063F
: 10008000000572062005740640050600F006060508
: 10009000F0070604F5062605F50726045A06460568
: 0C00A0005A074604FF051007FF04270A5A
: 00000001FF