Ten eerste staat hier BCF 25h, 4h en hier BCF 03,5. Hoe moet het nou zijn, met of zonder h en met of zonder spatie?

Ten tweede: Waarom wordt er hier een bit geset met:
instelporta EQU 85h
BSF 03,5
CLRF instelporta
BCF 03,5

En dat terwijl er later dit wordt gedaan om RA0 hoog te krijgen:
porta EQU 05h
MOVLW 01h
MOVWF porta

Je zou dan toch ook gewoon kunnen doen:
BSF 05h, 00h
Of niet?

Er wordt verteld dat je niet een getal rechtstreeks kunt laden in een file, maar via W. Kun je een file wel veranderen met BSF of BCF zonder W? Dan zou je een pinnetje met 1 cycle hoog of laag kunnen maken d.m.v. BSF of BCF. Of niet?

Alle antwoorden zijn welkom, mits het nederlands is ;). Dus niet teveel bla, bla, uartdinges, interruptapparaten en dat soort dingen. Dat versta ik helaas nog niet.

Alvast bedankt

Op 12 mei 2004 19:34:31 schreef Lampie:

de eerste 05h,4 of 05,4 of 0x05,4 mag allemaal
dit mag ook D´05´ geeft aan dat het decimaal is
b´00011000´ voor binair
"a" voor de ascii of letter a
h betekend hexadecimaal
0x ook

Ten tweede: Waarom wordt er hier een bit geset met:
instelporta EQU 85h
BSF 03,5
CLRF instelporta
BCF 03,5

En dat terwijl er later dit wordt gedaan om RA0 hoog te krijgen:
porta EQU 05h
MOVLW 01h
MOVWF porta

Je zou dan toch ook gewoon kunnen doen:
BSF 05h, 00h

twede h weglaten is geen hexadecimale waarde maar een pin nummer

Er wordt verteld dat je niet een getal rechtstreeks kunt laden in een file, maar via W. Kun je een file wel veranderen met BSF of BCF zonder W? Dan zou je een pinnetje met 1 cycle hoog of laag kunnen maken d.m.v. BSF of BCF. Of niet?

je kunt met BSF/BCF idd een bit in een file wijzigen echter er zijn wat nadelen
een BCF/BSF instructie is een READ MODIFY WRITE instructie
deze duurt niet 1 maar drie cycles
stel je hebt op poort b = output 00000000 staan nu dit betekend dat je poort 20mA kan opnemen stel je hebt op bit 4 een led branden en je doet BSF 06h,3 dan zou het resultaat 00000100 moeten zijn maar door de BSF instuctie
word het resultaat 0000.1100 de pic leest nl. eerst de poort uit en deze ziet een stroom op pin 4 dat is een 1
de waarde die veranderd moet worden verandert de pic en schrijft vervolgens de pin 4 ook als zijnde hoog uit.
bij voorkeur gebruik je BSF/BCF instructies niet rechtstreeks op een poort

Op 12 mei 2004 22:52:20 schreef k.p.meinesz:
je kunt met BSF/BCF idd een bit in een file wijzigen echter er zijn wat nadelen
een BCF/BSF instructie is een READ MODIFY WRITE instructie
deze duurt niet 1 maar drie cycles

Ik geloof je helemaal, maar waarom staat er in de datasheet dat het 1 cycle duurt?
http://www.expandctss.com/upload/?page=download&file=BSF.jpg

En hoe zit het met bank 1 en 2 in het register. Ik heb gezien dat je soms moet overswitchen naar een andere bank.
Is het zo dat je in bank 1 de boel instelt en in bank 0 informatie opslaat en daar in werkt? In het tut zie ik op 05h PORTA staan. Regel ik hierin de in- of uitgangswaarde (welke is het of beide) van de poort? En op 85h de richting van de informatie?
Zoals ik al zei zag ik enkele keren staan dat je moet overswitchen van bank 0 naar bank 1. Kun je dan niet gewoon de bits in 85h wijzigen, vanuit bank 0?

Is 04h tot 4Fh de ruimte info in op te slaan? En hoe zit het dan met 8Ch tot CFh (zelfde vakje maar dan bank 1)?

http://www.expandctss.com/upload/index.php?page=download&file=Reg.jpg
Plaatje vanuit tut erbij is misschien wat makkelijker ;).

Misschien een hoop vragen, maar ik wil echt met µC's beginnen en snap nog niet echt veel van de indeling en fucties van de registers.

Is er misschien een andere site waar veel hierover wordt verteld?

k.p.meinesz nog bedankt, dit is nederlands genoeg ;)

Op 17 mei 2004 20:15:43 schreef Lampie:
[...]

Ik geloof je helemaal, maar waarom staat er in de datasheet dat het 1 cycle duurt?

mijn fout ik denk dat de datasheet gelijk heeft

En hoe zit het met bank 1 en 2 in het register. Ik heb gezien dat je soms moet overswitchen naar een andere bank.
Is het zo dat je in bank 1 de boel instelt en in bank 0 informatie opslaat en daar in werkt? In het tut zie ik op 05h PORTA staan. Regel ik hierin de in- of uitgangswaarde (welke is het of beide) van de poort?

dit is de poort waarde zowel in als output

En op 85h de richting van de informatie?

idd hier bepaal je of de poort in of output is
ingeval van input kun je 05h lezen
in geval van output kun je hem schrijven

Zoals ik al zei zag ik enkele keren staan dat je moet overswitchen van bank 0 naar bank 1. Kun je dan niet gewoon de bits in 85h wijzigen, vanuit bank 0?

nee kan niet 85h zit niet in bank 0 dus kun je die niet wijzigen
er zijn een paar register die in beide banken aanwezig zijn
zoals 03h en 83h hierbij maakt het niet uit in welke je wijzigt

Is 04h tot 4Fh de ruimte info in op te slaan? En hoe zit het dan met 8Ch tot CFh (zelfde vakje maar dan bank 1)?

ik dacht het wel je kunt hier bv variabelen opslaan

[afbeelding]

Misschien een hoop vragen, maar ik wil echt met µC's beginnen en snap nog niet echt veel van de indeling en fucties van de registers.

elk register heeft een adres en een functie beide staan beschreven in de datasheet

Is er misschien een andere site waar veel hierover wordt verteld?

niet in het nederlands
www.piclist.com
staat veel voorbeeld code op
kijk goed naar programmas van anderen en probeer te doorgronden wat ze doen en waarom

k.p.meinesz nog bedankt, dit is nederlands genoeg ;)

graag gedaan

Een klein beetje off-topic vraagje: Waarom zijn in vele (alle?) mcu's de registers opgedeeld in banken, is dit om de interne address bus van de cpu/geheugen van de mcu kleiner te houden, of is daar een andere reden voor?

Op 17 mei 2004 23:28:12 schreef Wouter Sijm:
Een klein beetje off-topic vraagje: Waarom zijn in vele (alle?) mcu's de registers opgedeeld in banken, is dit om de interne address bus van de cpu/geheugen van de mcu kleiner te houden, of is daar een andere reden voor?

`

Yep, typisch een economische maatregel, om de lengte van de opcode/operand combinatie klein te houden.
Anders moesten ze het geheugen flink groter maken, zelf vindt ik het banking gebeuren bij de PIC erg irritant.
Maar met het constant toepassen van bank selectie kan er weinig fout gaan.

Op 18 mei 2004 10:27:46 schreef Xenobinol:
[...]`

Yep, typisch een economische maatregel, om de lengte van de opcode/operand combinatie klein te houden.
Anders moesten ze het geheugen flink groter maken, zelf vindt ik het banking gebeuren bij de PIC erg irritant.
Maar met het constant toepassen van bank selectie kan er weinig fout gaan.

Ah, oke bedankt!

Hartelijk bedankt voor het antwoord. Het wordt al een stuk duidelijker nu. Over die banken staat heel weinig in het tutorial. Das best jammer want volgens mij is dit heel belangrijk, omdat je bij elk programmatje dingen moet instellen, zoals I/O poorten.

Op 18 mei 2004 17:46:58 schreef Lampie:
Hartelijk bedankt voor het antwoord. Het wordt al een stuk duidelijker nu. Over die banken staat heel weinig in het tutorial. Das best jammer want volgens mij is dit heel belangrijk, omdat je bij elk programmatje dingen moet instellen, zoals I/O poorten.

Er staat wel iets over in alleen niet super uitgebreid. En dat heb ik gedaan omdat het namelijk vrij lastig is. En als je de tutorial leest en uitvoert zoals die er staat dan kun je stap voor stap met een PIC leren omgaan.

Als je zulke tuts schrijft moet je compromisen maken over welke dingen er wel, en welke dingen er niet in moeten. Dat banken verhaal vond ik te ingewikkeld voor iemand die nog nooit eerder een controller heeft gezien.

Mee eens, alleen nu wist ik niet dat je in bank 1 dingen van bank 0 kunt instellen (trisa -> porta enzo) en dat je moet overschakelen naar bank 1 om deze dingen in te stellen. (4 regels ;)) Gewoon een klein stukje over de banken schrijven waar het allemaal voor dient en hoe je bepaalde registers noemt of aanspreekt is volgens mij genoeg.

Misschien is het iets om een topic of sectie te starten waar alle CO'ers samen kunnen discusieren, zodat er stukjes tutorials, wijzigingen, aanvullingen of gehele tutorials uit rollen.

Ontopic

De General Purpose Register (GPR) is volgens mij om variabelen in op te slaan, maar is een SRAM (prik weg->data weg:(). Of niet? Waar en hoe kun je in de EEPROM schrijven en lezen? Dit is soms wel makkelijk lijkt mij (prik eraf-> data behouden :)).

Ik zie dat de 16F628 4 banken heeft. De GPR is verspreid over deze banken. Moet ik perse overspringen naar een andere bank om daar data in op te slaan?
Ook zie ik in bank 1-3 onderin accesses 70h-7Fh. Betekent dit, dat dit allemaal om dezelfde registers gaat of dat ik deze registers vanuit elke bank 70h-7Fh kan noemen?

http://www.expandctss.com/upload/index.php?page=download&file=GPR.jpg
Stukje datascheet

Oja. Zijn µC's beschermd tegen statsische electriciteit (ivm. vastpakken)?