ben bezig met de PIC16f628 te progge voor project, dit is m'n eerste project, maar na gesprek me Aedolon begin ik mij vragen te stellen. Hier volgt m'n code.

include 16f628_10
include jlib
     
port_a_direction = all_input   
port_b_direction = all_output      

procedure LR is
if pin_a3 == high then port_b = 0b_1000_0000 end if
if pin_a3 == low then port_b = 0b_0100_0000 end if
if pin_a3 == high then port_b = 0b_0010_0000 end if
if pin_a3 == low then port_b = 0b_0001_0000 end if
end procedure

procedure RL is
if pin_a3 == high then port_b = 0b_0001_0000 end if
if pin_a3 == low then port_b = 0b_0010_0000 end if
if pin_a3 == high then port_b = 0b_0100_0000 end if
if pin_a3 == low then port_b = 0b_1000_0000 end if
end procedure

procedure dubbel is
if pin_a3 == high then port_b = 0b_1100_0000 end if
if pin_a3 == low then port_b = 0b_0011_0000 end if
end procedure

procedure rand1 is
if pin_a3 == high then port_b = 0b_1000_0000 end if
if pin_a3 == low then port_b = 0b_1100_0000 end if
if pin_a3 == high then port_b = 0b_1110_0000 end if
if pin_a3 == low then port_b = 0b_1111_0000 end if
if pin_a3 == high then port_b = 0b_0111_0000 end if
if pin_a3 == low then port_b = 0b_0011_0000 end if
if pin_a3 == high then port_b = 0b_0001_0000 end if
if pin_a3 == low then port_b = 0b_0000_0000 end if
end procedure

procedure rand2 is
if pin_a3 == high then port_b = 0b_1000_0000 end if
if pin_a3 == low then port_b = 0b_0010_0000 end if
if pin_a3 == high then port_b = 0b_0100_0000 end if
if pin_a3 == low then port_b = 0b_0010_0000 end if
if pin_a3 == high then port_b = 0b_0001_0000 end if
if pin_a3 == low then port_b = 0b_1100_0000 end if
if pin_a3 == high then port_b = 0b_0001_0000 end if
if pin_a3 == low then port_b = 0b_0000_0000 end if
end procedure

procedure rand3 is
if pin_a3 == high then port_b = 0b_1001_0000 end if
if pin_a3 == low then port_b = 0b_0110_0000 end if
if pin_a3 == high then port_b = 0b_1000_0000 end if
if pin_a3 == low then port_b = 0b_1001_0000 end if
if pin_a3 == high then port_b = 0b_0101_0000 end if
if pin_a3 == low then port_b = 0b_0100_0000 end if
if pin_a3 == high then port_b = 0b_0110_0000 end if
if pin_a3 == low then port_b = 0b_1000_0000 end if
end procedure

procedure rand4 is
if pin_a3 == high then port_b = 0b_1000_0000 end if
if pin_a3 == low then port_b = 0b_0100_0000 end if
if pin_a3 == high then port_b = 0b_0010_0000 end if
if pin_a3 == low then port_b = 0b_0001_0000 end if
if pin_a3 == high then port_b = 0b_0010_0000 end if
if pin_a3 == low then port_b = 0b_0100_0000 end if
end procedure

procedure rand5 is
if pin_a3 == high then port_b = 0b_0000_0000 end if
if pin_a3 == low then port_b = 0b_1111_0000 end if
if pin_a3 == high then port_b = 0b_0000_0000 end if
if pin_a3 == low then port_b = 0b_1100_0000 end if
if pin_a3 == high then port_b = 0b_0011_0000 end if
if pin_a3 == low then port_b = 0b_0000_0000 end if
if pin_a3 == high then port_b = 0b_1001_0000 end if
if pin_a3 == low then port_b = 0b_0110_0000 end if
end procedure

forever loop
if port_a == 000 then LR end if
if port_a == 001 then RL end if
if port_a == 010 then dubbel end if
if port_a == 011 then rand1 end if
if port_a == 100 then rand2 end if
if port_a == 101 then rand3 end if
if port_a == 110 then rand4 end if
if port_a == 111 then rand5 end if
end loop

beetje uitleg.
Tis de bedoeling dat er in iedere procedure naar volgende toestand wordt gegaan. Er mag pas worden veranderd als a3 veranderd. a3 is een pulssignaal. Deuitgangen worden gekoppeld aan triac's om zo spotjes aan te sturen.
Gaat dit werken of niet???

alvast bedankt!

Op 9 november 2003 21:49:44 schreef tom v:
Gaat dit werken of niet???

Niet zonder wijziging. Die if-jes waarme je de input test wachten niet, je zult expliciet moeten wachten (while loop).

Op 9 november 2003 22:47:26 schreef Wouter van Ooijen:

[...]

Niet zonder wijziging. Die if-jes waarme je de input test wachten niet, je zult expliciet moeten wachten (while loop).

yup dat zei ik em ook

aanvulling :)

De If....then... statements : er word alleen gekeken of er aan de voorwaarde word voldaan. Zo niet > dan slaat de programma dat wat achter 'then' t/m 'end if' OVER. Voldoet t wel aan de gestelde voorwaarde dan zal dat achter 'then' wel eerst worden uitgevoerd, en gaat dan pas verder met wat eronder staat.

Hoop dat t duidelijk(er) is waarom je progje niet gaat werken zoals gewenst :)

dus als ik het goed begrijp moet het dus zo worden:

forever loop
while port_a == 000 loop LR
while port_a == 001 loop RL 
while port_a == 010 loop dubbel
while port_a == 011 loop rand1
while port_a == 100 loop rand2
while port_a == 101 loop rand3
while port_a == 110 loop rand4
while port_a == 111 loop rand5
end loop

en hoe doe ik dan voor de lampen aan te sturen?

procedure LR is
if pin_a3 == high then port_b = 0b_1000_0000 end if
if pin_a3 == low then port_b = 0b_0100_0000 end if
if pin_a3 == high then port_b = 0b_0010_0000 end if
if pin_a3 == low then port_b = 0b_0001_0000 end if
end procedure

De bedoeling is dat er hier afhankelijk van de snelheid van puls a3 de brandende lamp telkens 1 plaats opschuift:
1) 1000
2) 0100
3) 0010
4) 0001

Op 10 november 2003 09:28:43 schreef tom v:
dus als ik het goed begrijp moet het dus zo worden:

Nu wacht je totdat de code verandert, je moet toch wachten totdat de puls op a3 verandert?

eeeej tommeke eindelijk aan dat project begonnen :D

@Wouter:
in de forever loop wordt gekeken naar toestand van a0,a1 en a2. Afhankelijk van deze toestand wordt een bepaalde procedure aangeroepen. In deze procedure ist de bedoeling dat er naar volgende stand wordt gegaan als a3 van toestand verandert. a3 heeft dus niks met de forever loop te maken.

Of bedoel je iet anders?

@terrorfeary : Ja eindelijk eens, begon tijd te worden he :p

[Bericht gewijzigd door tom v op ]

Op 10 november 2003 10:31:13 schreef tom v:

@terrorfeary : Ja eindelijk eens, begon tijd te worden he :p

ik heb ook zoiets wille maken maar mijn ssr van velleman werkte niet en heb geen zin om hem op te sturen naar velleman

Op 10 november 2003 10:31:13 schreef tom v: In deze procedure ist de bedoeling dat er naar volgende stand wordt gegaan als a3 van toestand verandert.

Dan moet je toch wachten ( = while loop) totdat a3 verandert?

je kan ook een 4017 als clock gebruiken en dan zo je spots sturen en dan bv binair programere ;)

aaah. ik begint te snappen.

Ik moet dus overal
while a3=high loop .....
while a3=low loop ....
while a3=high loop...
....

Bedoel je dit?
En anders maak ff duidelijk wa je wilt zeggen

> Bedoel je dit?

Ja

> En anders maak ff duidelijk wa je wilt zeggen

nee, ik geef wat aanwijzingen zodat je het zelf kan uitvinden. Veel beter voor je toekomst ;)

mja da is weln dan onthoud ge het beter.
ik ga het morge aanpassen en dan wachten tot ik alles binneheb zodat ik kan gaan testen.
Wordt zeker vervolgd.
En als ik ergens ne digi kan uithale volge er pic's

Op 10 november 2003 19:38:39 schreef tom v:
En als ik ergens ne digi kan uithale volge er pic's

En als ik niet meer reageer is dat omdat ik je niet versta.

digi = DIGItale camera
pic's = pictures

Nogal verwarrend om op een elektronica-site, pictures af te korten naar pic's.

ja mss wel,
maar ben ook actief op andere forum's en daar gebruikt iedereen dat, daarmee.

tom let op je taal jongen! :)

Op 11 november 2003 22:18:03 schreef terrorfeary:
tom let op je taal jongen! :)

Op 11 november 2003 22:20:19 schreef tom v:
???

ach, pubers hé ze willen maar 1 ding

[Bericht gewijzigd door Aedolon op ]

puber puber.
jong volwassene he :p
en 19 jrtjes jong dus

Op 11 november 2003 22:32:28 schreef tom v:
puber puber.
jong volwassene he :p
en 19 jrtjes jong dus

terror(gothic?)feary...