Enklare kodexempel på pic basic??
- NSR_Martin
- Inlägg: 358
- Blev medlem: 30 november 2003, 13:37:31
- Ort: Jönköping
- Kontakt:
Enklare kodexempel på pic basic??
Tjena
Har precis fått igång allt och lyckats programera en PIC16F84A, har fått en hel del hjälp, lyckats programera en blinkande lysdiod som först blinkar sakta, sen går snabbare o snabbare, för att sedan vända o gå saktare och saktare, osv.... Lyckan är total
Känner ingen lust att lägga näsan i en tjock manual just nu, då jag känner mig ganska hemma iom att jag kodade ASP mycket för några år sedan...
Så jag tänkte höra om någon har nån länk till en hemsida, eller har gjort några koder själva som ni kan tänka er att dela med er av...? Gärna med lysdioder och göra... Typ knightrider osv...?
//Martin
Har precis fått igång allt och lyckats programera en PIC16F84A, har fått en hel del hjälp, lyckats programera en blinkande lysdiod som först blinkar sakta, sen går snabbare o snabbare, för att sedan vända o gå saktare och saktare, osv.... Lyckan är total
Känner ingen lust att lägga näsan i en tjock manual just nu, då jag känner mig ganska hemma iom att jag kodade ASP mycket för några år sedan...
Så jag tänkte höra om någon har nån länk till en hemsida, eller har gjort några koder själva som ni kan tänka er att dela med er av...? Gärna med lysdioder och göra... Typ knightrider osv...?
//Martin
Gratulerar! Jag minns hur det känns, när den första lysdioden blinkar som man sagt till den att göra!
Om du själv skrivit koden för att blinka, så är det väl bara att börja bygga ut den koden? Koppla till några fler lysdioder och se om du kan få dem att blinka i takt eller otakt med varandra!
Det är bra att börja med '84an... där finns inga register som spökar och gör det surt för nybörjare. När du snart hoppar över till '628 så kan du ju ha detta i bakhuvudet

Om du själv skrivit koden för att blinka, så är det väl bara att börja bygga ut den koden? Koppla till några fler lysdioder och se om du kan få dem att blinka i takt eller otakt med varandra!
Det är bra att börja med '84an... där finns inga register som spökar och gör det surt för nybörjare. När du snart hoppar över till '628 så kan du ju ha detta i bakhuvudet

- NSR_Martin
- Inlägg: 358
- Blev medlem: 30 november 2003, 13:37:31
- Ort: Jönköping
- Kontakt:
- NSR_Martin
- Inlägg: 358
- Blev medlem: 30 november 2003, 13:37:31
- Ort: Jönköping
- Kontakt:
Nu har jag lyckats med en liten knightrider på 4 st lysdioder
Först försökte jag med denna kod
Men den fungerade inte alls, gick inte att kompilera den (stavning?)
Så då fick det bli den IQ-befriade varianten:
Måste väll gå att göra på nått enklare sätt, mer likt den första jag försökte med...?
EDIT: Är det svårt att göra med eftersläpning så det blir som en liten svans...? Man måste pulsa lysdioderna då va?
Först försökte jag med denna kod
Kod: Markera allt
DEFINE OSC 4
tmpa VAR BYTE
tmpb VAR BYTE
loop:
For tmpa = 0 TO 3
High PORTB.tmpa
Pause 100
Low PORTB.tmpa
Next tmpa
For tmpb = 0 TO 3 STEP -1
High PORTB.tmpb
Pause 100
Low PORTB.tmpb
Next tmpb
GoTo loop
Så då fick det bli den IQ-befriade varianten:
Kod: Markera allt
DEFINE OSC 4
loop:
High PORTB.0
Pause 100
Low PORTB.0
High PORTB.1
Pause 100
Low PORTB.1
High PORTB.2
Pause 100
Low PORTB.2
High PORTB.3
Pause 100
Low PORTB.3
High PORTB.2
Pause 100
Low PORTB.2
High PORTB.1
Pause 100
Low PORTB.1
GoTo loop
Måste väll gå att göra på nått enklare sätt, mer likt den första jag försökte med...?
EDIT: Är det svårt att göra med eftersläpning så det blir som en liten svans...? Man måste pulsa lysdioderna då va?
Kod: Markera allt
DEFINE OSC 4
tmp VAR BYTE
TRISA = 0 'Alla portar utgångar
loop:
For tmp = 0 TO 3
PORTA = DCD tmp 'Sätter aktuell LED
Pause 100
PORTA = 0 'Återställer hela portA
Next tmp
For tmp = 3 TO 0 STEP -1
PORTA = DCD tmp 'Sätter aktuell LED
Pause 100
PORTA = 0 'Återställer hela portA
Next tmp
GoTo loop
End
Att få eftesläpning är väldigt invecklat som nybörjare. Precis som du sa, man måste pulsa lysdioderna snabbare än ögat. bokstavligen

Men det dröjer nog inte många veckor innan du löser det med!

- NSR_Martin
- Inlägg: 358
- Blev medlem: 30 november 2003, 13:37:31
- Ort: Jönköping
- Kontakt:
DCD sätter den biten hög och resten låga (0-15)
Leta reda på en funktionsreferens för PicBasic i PDF-format, det besparar dig mycket Googlande och frågande
Edit: Här
http://www.melabs.net/downloads/pbpm304.pdf
Leta reda på en funktionsreferens för PicBasic i PDF-format, det besparar dig mycket Googlande och frågande

Edit: Här

- NSR_Martin
- Inlägg: 358
- Blev medlem: 30 november 2003, 13:37:31
- Ort: Jönköping
- Kontakt:
Lekte vidare lite
Nu va försöket att styra 8 lysdioder, som va i två grupper med fyra lysdioder i varje, jag har kopplat ihop alla katoder på lysdioderna o sedan med motstånd vidare till a0 o a1...
Men det gick inte o kompilera... Hur ska jag lösa detta? Har jag tänkt helt åt skogen?
EDIT
I Felmeddelandet står det att det är IF utan korrekt END IF.... GoTo komandot som ställer till det...?
Nu va försöket att styra 8 lysdioder, som va i två grupper med fyra lysdioder i varje, jag har kopplat ihop alla katoder på lysdioderna o sedan med motstånd vidare till a0 o a1...
Men det gick inte o kompilera... Hur ska jag lösa detta? Har jag tänkt helt åt skogen?
Kod: Markera allt
DEFINE OSC 4
tmp VAR BYTE
TRISB = 0 'Alla portar utgångar
PORTA.1 = 1
loop:
For tmp = 0 TO 3
PORTB = DCD tmp 'Sätter aktuell LED
Pause 100
PORTB = 0 'Återställer hela portA
Next tmp
IF PORTA.0 = 0 Then
PORTA.0 = 1
PORTA.1 = 0
GoTo loop
End IF
loop2:
For tmp = 3 TO 0 STEP -1
PORTB = DCD tmp 'Sätter aktuell LED
Pause 100
PORTB = 0 'Återställer hela portA
Next tmp
IF PORTA.1 = 0 Then
PORTA.0 = 0
PORTA.1 = 1
GoTo loop2
End IF
GoTo loop
End
I Felmeddelandet står det att det är IF utan korrekt END IF.... GoTo komandot som ställer till det...?
- NSR_Martin
- Inlägg: 358
- Blev medlem: 30 november 2003, 13:37:31
- Ort: Jönköping
- Kontakt:
Coolt, nu funkar det, tack för hjälpen allihop
På så vis skulle man ju kunna köra med 30 lysdioder...
Men... Då måste ju lysdioderna va kopplade till både A och B utgångar, hur löser man det...? PORT DCD = tmp eller? Så kör den från a0 till b7...? Finns det inget bättre sätt så man har mer koll på grejerna? mer likt porta.tmp = 1 tex....
Ingen som har gjort nått i picbasic o kan dela med sig av sin kod? Kul o se lite andra saker...
På så vis skulle man ju kunna köra med 30 lysdioder...
Men... Då måste ju lysdioderna va kopplade till både A och B utgångar, hur löser man det...? PORT DCD = tmp eller? Så kör den från a0 till b7...? Finns det inget bättre sätt så man har mer koll på grejerna? mer likt porta.tmp = 1 tex....
Ingen som har gjort nått i picbasic o kan dela med sig av sin kod? Kul o se lite andra saker...
en bit ner på denna sidan finns koden till min ledmatris som du kan titta på om du vill, dock ganska dåligt kommenterad men alltid nått
http://www.geekjoan.com/forum/viewtopic ... sc&start=0
http://www.geekjoan.com/forum/viewtopic ... sc&start=0
- NSR_Martin
- Inlägg: 358
- Blev medlem: 30 november 2003, 13:37:31
- Ort: Jönköping
- Kontakt:
Lyckades skapa en ingång som det sitter en knapp på med
Normalt sett åker ljuset fram o tillbaka på 8 st lysdioder, om man trycker in knappen så åker den bara på 4 lysdioder och hälften så fort
Två frågor.
1. Nån som har nått tipps på nått mer kul men skapligt enkelt man kan göra med lysdioder (ev med en knapp...)
2. Går det att pulsa en lysdiod så den lyser hälften så starkt med F84an? väldigt krångligt? om inte, exempel...?

Normalt sett åker ljuset fram o tillbaka på 8 st lysdioder, om man trycker in knappen så åker den bara på 4 lysdioder och hälften så fort

Två frågor.
1. Nån som har nått tipps på nått mer kul men skapligt enkelt man kan göra med lysdioder (ev med en knapp...)
2. Går det att pulsa en lysdiod så den lyser hälften så starkt med F84an? väldigt krångligt? om inte, exempel...?