Sida 1 av 1

Kod för att sätta flera samtidigt

Postat: 31 oktober 2008, 19:18:32
av Stene
Hej! Sitter o försöker lära mig att programera. Sitter med pickit2 o försöker att få dioderna att blinka som jag vill. Jag försöker att få flera dioder att ländas samtidigt men han verkar strunta i att jag skriver bsf flera gånger efter varand. jag skriver givitvis fel o nu har jag suttit många timmar o försökt klura ut hur jag ska skriva för att pic:en ska tända flera dioder samtidigt .

bsf portc,0
bsf portc,1
bsf portc,2

så skriver jag men den tänder bara portc,2 då. Hur skriver jag?

Mycket tacksam för svar!

Postat: 31 oktober 2008, 19:35:24
av TomasL
Vilken processor?

Enklast är väl:
movlw 0x07
movw PORTC


Typ.
Nu är jag inte så hemma i MPLAB asm, så syntaxen kanske ser lite annorlunda ut i verkligheten.

Beroende på processor, kan man också råka ut för Read Before Modify problemet, googla på detta.

edit: var för snabb

Postat: 31 oktober 2008, 19:37:26
av Stene
ursäkta!! glömde att skriva det. det är en 16f690.

Postat: 31 oktober 2008, 19:38:46
av TomasL
som sagt, jag var för snabb med "skicka"

Postat: 31 oktober 2008, 22:07:22
av korp
Du har satt samtliga tre pinnar som output, och stängt av de analoga funktionerna med "clrf ANSEL"? Posta din kod med initiering och allt så får vi se på den.

Postat: 31 oktober 2008, 22:53:51
av Marta
Du har väl ine anslutit LED's direkt till utgångarna utan seriemotstånd?

Dra inte mera än sådan 15mA från varje utgång, annars blir det imesta laget. Sammanlagd ström bör inte bli mera än absolut max 200mA ungefär.

Kopplar Du dem direkt så kommer dels kretsen och Dina LED's attbli överbelastade, men det kommer även att bli det fenomen Du ser nu p.g.a. det som redan skrivits om RMW-instruktioner.

För att se om detta är problemet så byt ordning på tändandet och se om det då blir den som efter ändringen hamnat sist som lyser. I så fall är det ett RMW-problem.

Hur som helst, ordna motstånd om där inte redan finns sådana.

Postat: 31 oktober 2008, 23:46:39
av sodjan
> Mycket tacksam för svar!

Visst... :-)

Läs först nedanstående och försök igen :

http://elektronikforumet.com/forum/viewtopic.php?t=6057

PS: Jag är 99% säker på att du inte har stängt av de analoga funktionera...

Postat: 1 november 2008, 08:54:31
av Stene
Hej! Japp ni hade rätt! Jag läste på om ansel och skrev in det i koden o det började fungera som jag ville. jag viste inte att den funktionen fans. TACK för hjälpen. Ska försöka få tag i någon bok så jag slipper fråga om struntsaker.

Postat: 1 november 2008, 09:21:05
av TomasL
RTFM är en mycket bra början, det står allt i den.
Du hittar dessutom en hyffsat bra intro på min manual-site.

http://www.ebaman.com/gallery.php?actio ... ge_id=1127

Postat: 1 november 2008, 10:43:48
av korp
Stene, alla gör vi slarvfel ibland :)
Kolla runt lite i denna forumdel. Det en hel del bra rekommendationer beträffande online-tutorials och böcker. Lite exempel, tutorials och i allra högsta grad databladet är obligatorisk läsning när det gäller pic-programmering (och digitalteknik öht.) annars kör man fast på struntdetaljer direkt i allt man gör.

Mikroelektronikas bok / onlinebok

Några tutorials;
http://www.amqrp.org/elmer160/lessons/index.html
http://www.gooligum.com.au/tut_baseline.html

Postat: 1 november 2008, 11:36:05
av sodjan
> jag viste inte att den funktionen fans.

Det är väldigt tydligt angivet i kapitlet "I/O PORTS" i databladet.
Svårt att missa, om man inte slarvar. Å andra sidan så är nog detta
det vanligaste nybörjarfelet, och beror nästan alltid på att man slarvar,
har för bråttom och tror att man inte behöver läsa på.

> Ska försöka få tag i någon bok så jag slipper fråga om struntsaker.

För struntsakar räcker databladet gott... :-)