Stap 6: definitieve gedachten: haar over
Ik heb verstrekt de source code onder de GPL, maar als u het nuttig vinden en willen bijdragen aan mijn fonds onderdelen stuur dan Paypal betaling van £3 naar mandoline
Veel plezier en vrolijk kerstfeest!
-A
broncode begint hier...
LIJST van P = 10f200
; LED fader/flikkering routine v0.01
; Geschreven door Andre de Guerin "mandoline
; W register is 0x00
; f register is 0x01
; GPIO 0 tot en met 2 uitgangen zijn
; Opmerking dat ICSP externe Vcc vereist, waarbij wordt uitgegaan van geen belasting op ICSPCLK/DAT pinnen
; Merk op dat de W register context status moet worden bewaard, ben met behulp van 0x1F hiervoor
; Merk op dat ik ben nu met behulp van een verschillende output routine om 6 uitgangen met 3 io pinnen
; Deze code is gratis gepubliceerd onder de GPL-licentie, maar als u bevalt en wilt
; bijdragen aan de blogauteur elektronische componenten Fonds Stuur Paypal betaling van £3 :)
Oorspronkelijk geschreven als bewijs van concept voor de 10F20x-serie
; Nogmaals dank aan Quasar elektronica voor de programmeur van hun K182 en MicroBrn, en
; hun uiterst hulpvaardig technisch ondersteunend personeel.
; Circuit indeling:-paren van LED's met omgekeerde polariteit tussen elke combinatie van uitgangen
; Het aantal kan verminderen door de bedrading van de LED's in serie paren interconnects
; dat wil zeggen---0-AK-0-AK-0-AK---to start, waar 0 de GPIO lijnen.
GPIO EQU H '0006'; GPIO definiëren
TMR0 EQU H '0001'; TMR0 definiëren
OSCCAL EQU H '0005'; definieert OSCCAL
BCF OSCCAL, 0; kunt GPIO 0 * belangrijk *
clrwdt, essentiële clearing van WDT vóór prescaler wijziging
Start movlw b '11000100'; Geen Wake on pin wijzigen,
; Geen pull ups, negeren timer
; 256:1 ratio op TMR0 prescaler inschakelen
optie
movlw b '11001000'; alle behalve GPIO 3 uitgangen zijn
Tris GPIO
movlw b "00100100"
movwf 0x10
movlw b "10010010"
movwf 0x11, opmerking, minder registers op 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'; wellicht fout in register routine, maar werken atm
movwf 0x18
movlw b "00010001"
movwf 0x19
movlw b "10001000"
movwf 0x1A
movlw b '01000100'; twinkle-achtig effect genereert
movwf 0x1B
movlw b "00100100"
movwf 0x1C
movlw b "10010010"
movwf 0x1D
movlw b "01001001"
movwf 0x1E
movlw b '11001000'; alle behalve GPIO 3 uitgangen zijn
Tris GPIO
goto lus; onvoorwaardelijke sprong naar lus
btfss TMR0, 7; lus uitgangen ingesteld zodat alleen de wijzigingen vermeld op tmr0 timeout (11111100)
goto lus; effectief gebruik TMR0 als een lange vertraging lus
btfss TMR0, 6
goto lus
btfsc TMR0, 5
goto shift
Shift movlw b "00000000"; de beginwaarde resets TMR0
movwf TMR0
RLF 0x10, f; Uitvoeren van shift, hoewel één register overbodig is
RLF 0x11, f
RLF 0x12, f; maakt gebruik van alle beschikbare registers als vertraging lijn
RLF 0x13, f
RLF 0x14, f
RLF 0x15, f; bruikbare registers zijn 0x10 aan 0x1E alleen
RLF 0x16, f
RLF 0x17, f
RLF 0x18, f
RLF 0x19, f
RLF 0x1A, f
RLF 0x1B, f
RLF 0x1C, f
RLF 0x1D, f
RLF 0x1E, f
movlw b "11001000"
btfsc 0x10, 3; uitvoer routine
BSF 0x00, 0; Hiermee GPIO bit 0
btfsc 0x12, 3
BSF 0x00, 1; Hiermee GPIO bit 1
btfsc 0x14, 3
BSF 0x00, 2; Hiermee GPIO bit 2
Tris GPIO; wordt verplaatst van de huidige stand van W naar GPIO
btfsc 0x10, 7
BSF GPIO, 0
btfss 0x10, 7; tests 0x10 bits 7
BCF GPIO, 0; Hiermee wordt gewist GPIO als 0x10 7 duidelijk bit
btfsc 0x15, 7
BSF GPIO, 1
btfss 0x15, 7
BCF GPIO, 1; dit gebeurt als gevolg van dubbele uitgangen
btfsc 0x1A, 2
BSF GPIO, 2
btfss 0x1A, 2
BCF GPIO, 2; TRIS losgekoppeld GPIO staat zo effectief 3 "uitgangen"
reg bsf 0x1F, 7; 1E-bit 8 ingesteld tot F
btfss 0x10, 0; Tests om te zien of 0x10 bit 0 0
BCF 0x1F, 7; Wordt gewist 1E bit 8 als niet
goto lus
EINDE
hex code begint hier:-
: 020000040000FA
: 1000000005040400C40C0200C80C0600240C3000D7
: 10001000920C3100490C3200920C3300490C340030
: 10002000240C3500920C3600490C3700240C3800A3
: 10003000110C3900880C3A00440C3B00240C3C00A5
: 10004000920C3D00490C3E00C80C0600270AE1074F
: 10005000270AC107270AA1062D0A000C21007003F8
: 1000600071037203730374037503760377037803D 4
: 1000700079037A037B037C037D037E03C80C70063F
: 10008000000572062005740640050600F006060508
: 10009000F0070604F5062605F50726045A06460568
: 0C00A0005A074604FF051007FF04270A5A
: 00000001FF