PIC microcontroller tutorial

Gepost door Bastiaan Steenbergen op donderdag 4 december 2003

Testbordje

Een testbordje is erg handig om je geschreven programma te testen. Of om bijvoorbeeld te leren hoe een microcontroller kan worden toegepast in een schakeling. Je kunt deze bordjes onder andere kopen bij Conrad. Je kunt er je onderdelen in 'prikken' en gemakkelijk weer uit verwijderen. Ze zitten vast in een soort klemmetjes. Hieronder zie je een plaatje van zo'n bordje. Op de voorkant kun je onderdelen zetten. Voor het gemak heb ik ook even de achterkant getekend zodat je ziet hoe de doorverbindingen lopen.

Een testbordjeEen testbordje

Meer info

Wil je meer info over microcontrollers dan kun je op internet zeer veel erover vinden.
Ook zijn er boeken geschreven waarin veel dingen worden opgehelderd.

Heb je vragen hebt naar aanleiding van deze tutorial dan kun je deze in het forum of hieronder kwijt. Let er wel op dat je geen dingen vraagt die je zelf gewoon in deze tutorial kunt vinden.

Links

Handige links voor meer info.

Copyright © 2002-2004 Bastiaan Steenbergen

Reacties

Gepost door Prutsertje op zondag 23 juni 2002 08:50:21

Bij deze wil ik de auteur van deze tutorial heel erg bedanken voor de heldere uitleg.

Gepost door Erik op zondag 23 juni 2002 11:08:32

als je leest zieje dat bastiaan hetheeft gemaakt

Gepost door Thomas op zondag 23 juni 2002 11:26:55

Het is heel goed en eenvoudig uitgelegd,veel beter dan die amerikaanse sites!

Gepost door Jeroen Boere op zondag 23 juni 2002 23:09:33

Het is heel goed en eenvoudig uitgelegd,veel beter dan die amerikaanse sites!

helemaal mee eens, ik denk dat de taalbarriëre voor de meeste mensen een probleem is en dat daarom men het zich meestal moeilijker voorstelt dan het feitelijk is :D

Gepost door lheeden op vrijdag 12 juli 2002 22:33:00

Een heel aardige aanzet tot expirimenten. Mensen die nog meer eenvoudige voorbeelden willen kunnen ook op mijn site www.lheeden.tk terecht.

Gepost door Shift op donderdag 1 augustus 2002 19:58:46

Kan deze zelfgemaakte programmer ook de PIC16C54 programmeren ?

Gepost door Bastiaan op vrijdag 2 augustus 2002 13:00:20

Kan deze zelfgemaakte programmer ook de PIC16C54 programmeren ?

Nee, in theorie niet. Wel de wat meer uitgebreide JDM programmer die op internet is te vinden.

Gepost door Sjaak Boomschaak op dinsdag 4 maart 2003 13:01:54

Goed uitgelegd mischien wel leuk als nieuwe hobby!!!

Gepost door Sjaak Boomschaak op maandag 10 maart 2003 18:59:27

nog even een vraagje welk ic moet ik uit de conrad hebben:

* PIC16F84-04/P = 84A DIP
* PIC16F84-04/SO = 84A SO
* PIC16F84-10/P = 84A-20/P DIP
* PIC16F84-10/SO = 84A SO

Wil het graag gaan maken maar moet wel het goeie ic hebben alvast bedankt.

Johan

Gepost door Bastiaan op woensdag 12 maart 2003 21:34:13

Dip is een normale behuizing. SO is SMD behuizing.
04 of 10 is de maximale frequentie van de klok die die aankan volgens de fabrikant. Maar je kunt gerust bij een 04 een 10 MHz kristal of zelfs meer gebruiken.

Gepost door Ledlover op donderdag 12 juni 2003 13:11:25

iik ben hier erg blij mee :)

Gepost door mauritzzz op dinsdag 8 juli 2003 09:51:58

bij het politie project geeft de microcontroller een puls van 5v ?

Gepost door Bastiaan op vrijdag 12 september 2003 13:14:51

bij het politie project geeft de microcontroller een puls van 5v ?

Klopt.

Gepost door Sindalaa op dinsdag 8 juli 2003 19:36:34

Hallo, ik ben aan het proberen om dat knipperlichtje in de PIC te krijgen, maar IC-Prog loopt helemaal vast (privileged instruction) Is dat normaal? Of werkt het niet p win2000?

Gepost door Bastiaan op vrijdag 25 juli 2003 16:38:21

Hallo, ik ben aan het proberen om dat knipperlichtje in de PIC te krijgen, maar IC-Prog loopt helemaal vast (privileged instruction) Is dat normaal? Of werkt het niet p win2000?

Kijk even in het forum.

Gepost door Rave17 op zondag 24 augustus 2003 17:45:40

Hallo, ik ben aan het proberen om dat knipperlichtje in de PIC te krijgen, maar IC-Prog loopt helemaal vast (privileged instruction) Is dat normaal? Of werkt het niet p win2000?

Ga in IC-Prog naar Options -> Misc -> Enable NT/2000/XP Driver, dan moet hij het wel doen :)

Gepost door menno op maandag 15 september 2003 16:30:36

Ik vind vooral de pagina 'Testbordje' erg verhelderend. (de rest heb ik nog niet gelezen; eerst dit verwerken).

[Reactie gewijzigd op maandag 15 september 2003 16:31:35]

Gepost door Nick Hendriks op dinsdag 16 september 2003 23:23:31

je heb een wereld voor me geopend ;)
erg heledere uitleg, zelfs me broertje kan dit doen:)

Nick

Gepost door AND op maandag 20 oktober 2003 13:12:18

Goede uitleg ! ;)

Gepost door Ferry 7 op maandag 3 november 2003 15:43:08

Hallo Ik wil graag uit de pic het volgende signaal kunnen halen. ik weet niet of dit mogelijk is maar dat is nou juist de vraag.
Er moet om de 20ms een puls van 1ms of 1,5ms of 2ms worden uitgestuurd. Als dit niet zou kunnen zou ik dan wel 3 555 kunnen aansturen met de pic die alle 3 een andere pulslengte hebben. Alvast Bedankt

Gepost door Ben Devos op zondag 9 november 2003 11:29:23

Is het waar dat je de pic 16f84 veel in muizen van computers vind???

Gepost door kevinonline op woensdag 12 november 2003 00:16:24

hallo mensen
ik wil even mededelen dat ik dit project aan het uitvoeren ben.
ik heb op mij werk de nodige onderdelen besteld en heb de programmer ook al gemaakt.
mijn probleem met het prog. om het ic te schrijven staat al op deze forum.
verder ist afwachten wanneer de onderdelen binnen zijn en dan kan ik verder.
de reacties op de forum vind ik erg leuk om te zien. en ik denk dat het mij ook wel gaat lukken om dit een beetje te leren.
leuke reacties.
op mijn werk zeten ze me met open ogen aan te kijken dat ik met een project bezig was op eeproms..... te programmeren.
ik heb er zin in. en uhh jullie horen wel hoe het gaat.
mvg. Kevin.

Gepost door kevinonline op woensdag 12 november 2003 22:48:09

daar was ik weer.
weet iemand de rede waardoor ik na het branden de foutcode "verificatie mislukt op adres 0000h" krijg ???????
help me please!!

Gepost door Mr.Nonflex op vrijdag 30 juli 2004 10:44:25

daar was ik weer.
weet iemand de rede waardoor ik na het branden de foutcode "verificatie mislukt op adres 0000h" krijg ???????
help me please!!

ik had het zelfde probleem, perongeluk een weerstand van 1.5k ipv 15k. toen zitten prutsen en transistor omgedraaid, toen 1.5k vervangen door 15k. toen weer transistor omgedraaid, en hij deed het. dus mischien transistor verkeerd om?

btw hij doet het nu bij mij. Leuk als electronica noob.

veel sucses

Gepost door kevinonline op zondag 30 november 2003 14:46:16

ja daar was ik weer.
ik ben lekker bezig met programmeren
en het wil ook werken maar ik barst van het
volgende bericht:
message 302 register in operand not in bank 0. ensure that bank bits are set cottect.
weet iemand hoe ik dit kan oplossen???
ik word er gek van.

Gepost door Bastiaan op donderdag 4 december 2003 21:19:20

ja daar was ik weer.
ik ben lekker bezig met programmeren
en het wil ook werken maar ik barst van het
volgende bericht:
message 302 register in operand not in bank 0. ensure that bank bits are set cottect.
weet iemand hoe ik dit kan oplossen???
ik word er gek van.

Het is een message, geen error dus. Oftwel de assembler geeft je alleen ff een tip dat je dat moet controleren of het wel juist is. De hex file wordt gewoon gegenereerd dus je kunt je code zo in je PIC'ie stoppen.

Gepost door hansmbakker op donderdag 22 januari 2004 20:13:51

is er een winkel in nederland, amsterdam waar de pic's nog een beetje goedkoop zijn?
Bij twee winkels hier vragen ze 15 euro voor 16F84, op internet (www.microchip.com) vragen ze +- 5 euro (ook als je er maar 1 bestelt) + verzendkosten

of is dat normaal?

Gepost door Bastiaan op dinsdag 27 januari 2004 19:22:36

is er een winkel in nederland, amsterdam waar de pic's nog een beetje goedkoop zijn?
Bij twee winkels hier vragen ze 15 euro voor 16F84, op internet (www.microchip.com) vragen ze +- 5 euro (ook als je er maar 1 bestelt) + verzendkosten

of is dat normaal?

Gaat wel, microcontrollers kosten over het algemeen meer dan een normaal 74hcxx ICtje. Daarnaast is de 16F84 intussen iets verouderd in die zin dat er een nieuwere betere en goedkopere is, de 16f628. Kijk eens bij www.voti.nl voor de leukere prijzen.

Gepost door cyberbrain op vrijdag 27 februari 2004 09:54:01

Dit werkt echt goed!

Voor de personen die in de buurt van Arhnem / Nijmegen wonen:

In Arhnem zit Radio Piet, heeft alles op het gebied van electronica,
In Nijmegen zit Technica, heeft nog veel meer.

Gepost door PdieDB op vrijdag 12 maart 2004 19:53:04

mooi optijd maarja...
vorig jaar a gelezen ECHT EEN SUPER STUKJE!!!
ik snapte het voorheen nie na de tijd volledig...wacht nu met smach/gt op de uitbreiding:P...pwm, ccp etc

Gepost door IvoS op maandag 15 maart 2004 20:03:46

Mooie duidelijke uitleg. Ikzelf heb wel interesse in het werken in BASIC, (met een basic2asm programma), en ook daar is het goed voor om de structuur van de chip te volgen :D

Is het trouwens ook zo dat de 16F877 compatible is met 16F84 code? de 877 heeft namelijk meer geheugen, dus makkelijker.

Alleen de prijzen in NL vallen mij een beetje tegen, zelfs bij Voti...

Gepost door Tp21 op vrijdag 9 april 2004 20:00:30

ik heb een vraag over de voeding hoort dat ding in het midden heel warm te worden???
verder goede handleiding!

[Reactie gewijzigd op vrijdag 9 april 2004 20:03:16]

Gepost door Mr.Nonflex op vrijdag 11 juni 2004 08:28:01

kan ik ergens een schema vinden om met een optocoupler de hd-led output aan een ingang te koppelen?

Gepost door Mr.Nonflex op zondag 13 juni 2004 15:33:56

Ik voel me echt een noob, maar ik heb de hele website http://www.ic-prog.net afgezocht, maar ik kan het programma nergens downloaden.

heeft iemand een link waarmee de download begint?

Gepost door Mr.Nonflex op vrijdag 30 juli 2004 10:50:00

Ik voel me echt een noob, maar ik heb de hele website http://www.ic-prog.net afgezocht, maar ik kan het programma nergens downloaden.

heeft iemand een link waarmee de download begint?

http://www.ic-prog.net/icprog105C.zip
http://www.ic-prog.net/icprog105A.zip
http://www.ic-prog.net/icprog105.zip
http://www.ic-prog.net/icprog_driver.zip
http://www.ic-prog.net/icprog.chm

[Reactie gewijzigd op vrijdag 30 juli 2004 10:50:21]

Gepost door Bastiaan op donderdag 5 augustus 2004 19:12:49

Eén van die dus he. Je kunt het beste de nieuwste versie nemen. 105C is dat op dit moment dacht ik.

Gepost door ocmer op maandag 13 september 2004 19:04:22

-

[Reactie gewijzigd op maandag 13 september 2004 19:45:42]

Gepost door ocmer op maandag 13 september 2004 19:25:43

-

[Reactie gewijzigd op maandag 13 september 2004 19:29:51]

Gepost door elkapresley op donderdag 7 oktober 2004 00:32:06

Goedenacht,

Zojuist heb ik net mijn eerste PIC (16F84A-04/P) succesvol geprogrammeerd onder WIN2k@600MHz en getest bovendien. Ik ben blij! Fantastisch dat ik van zo'n eenvoudige opzet en goed te volgen handleiding gebruik mocht maken! Waar ik eerst nog problemen mee had is de melding: 'verify failed at adress 0000h !' Tsja ik kan de tikfout ook niet helpen, maar het probleem bleef zich voordoen. Na veel veranderen en nauwkeurig doorlezen van de handleiding bleef het probleem zich voordoen of in ieder geval een andere melding, maar wel op verschillende adressen gaf hij een fout. Dan weer op 005h en dan weer op 006h. Toen heb ik gewoon in Settings>Hardware (F3) de I/O-delay aangepast en op z'n hoogst gezet (dat is 40). Toen werkte het direct. Misschien is deze ervaring ten overvloede, maar pak gewoon een oude computer die net de systeemeisen heeft voor MPLAB en IC-prog. Dan gaat het in ieder geval goed.

Groeten,

tEis

Gepost door Bastiaan op zaterdag 9 oktober 2004 22:18:42

Bedankt voor je fijne reactie. Ik (de auteur) hoop dat je in de toekomst de opgedane kennis goed kunt gebruiken.
En misschien dat anderen aan de hand van je tip hun probleem nu kunnen oplossen :)

[Reactie gewijzigd op zaterdag 9 oktober 2004 22:19:55]

Gepost door tjerndebiel op zondag 10 oktober 2004 14:35:51

moet die zener echt 5.1V zijn? kan het geen 5.6V type zijn?

Gepost door Bastiaan op maandag 11 oktober 2004 14:42:54

De 5,1V is nodig voor de PIC om hem te voeden. Het is niet de bedoeling dat je hier een andere spanning voor gebruikt. Maar als je even in de datasheet kijkt dan kan je zien of de PIC ook tegen 5,6v als voeding kan.

[Reactie gewijzigd op maandag 11 oktober 2004 14:43:10]

Gepost door School projectje op maandag 11 oktober 2004 10:44:38

Hallo ik heb een project voor school waarbij we een PIC moetten gebruiken nou vondt ik deze tutorial wel handig om er bekend in te worden.
nou is het helemaal gelukt om het printje en programma te maken (dankzij de heldere uitleg)
met mplab heb ik van het led filetje een hex code kunnen maken en nu moet ik met ic-prog het in de pic16F84A zetten maar ik krijg deze fout melding: "priviliged instruction"
nou zou ik dat opkunnen lossen door naar options/misc te gaan en enable NT/2000/xp driver aan te zetten maar dan krijg ik de fout melding: "error ocured while starting driver.
wat kan ik hier aan doen?

Gepost door Bastiaan op maandag 11 oktober 2004 14:41:52

Moet je even kijken op de site van de software. Daar staat hoogst waarschijnlijk een oplossing voor dat probleem.

Gepost door School projectje op maandag 11 oktober 2004 15:30:08

dankje op de officele pagina stond
inderdaad een help file waar in stond dat de driver icprog.sys in dezelfde file moest staan als icprog.exe maar er staat nergens waar ik die driver kan downloaden.

Gepost door School projectje op maandag 11 oktober 2004 15:34:10

helmaal onder in waar je het programma kon downloaden stond een zip file met icprog.sys
het programma werkt dank je voor deze geweldige tutorial

Gepost door Bastiaan op maandag 11 oktober 2004 17:37:17

helmaal onder in waar je het programma kon downloaden stond een zip file met icprog.sys
het programma werkt dank je voor deze geweldige tutorial

Graag gedaan, en fijn dat het nu wel is gelukt met het programma.
Ik hoop dat je veel hebt aan de opgedane kennis over microcontrollers :)

Gepost door tjerndebiel op maandag 11 oktober 2004 17:59:37

dus het kan met een 5.6 zener?

Gepost door microchip_consultant op vrijdag 29 oktober 2004 20:33:32

Dit is wel QD (quick and dirty) programmeren, ik had iets meer inspiratie verwacht.

Gepost door Bastiaan op dinsdag 2 november 2004 13:08:26

Dit is wel QD (quick and dirty) programmeren, ik had iets meer inspiratie verwacht.

Kun je dat misschien wat beter toelichten?
Trouwens wat is de essentie van een dergelijke beginners tutorial nu? Dat men een inleiding krijgt in de wereld van microcontrollers of dat men SC (slow and clean) leert programmeren?
Mij lijkt dat 1e veel belangrijker dan het 2e.
Als jij iemand leert autorijden dan interesseert het je in het begin toch ook niks of die persoon de bochten geheel strak neemt, het is in dat stadium veel belangrijker dat men de auto kan besturen. Andere factoren (zoals mooie bochten) kunnen zelfs alleen maar storend werken op dat moment in het leerproces.

Inspiratie moet van de mensen zelf komen. Ik laat ze even proeven, ik neem ze even aan het handje mee de wereld in, de rest moeten ze daarna zelf doen.

[Reactie gewijzigd op dinsdag 2 november 2004 13:12:46]

Gepost door bartjekoek op zondag 7 november 2004 19:01:09

mij lijkt het wel leuk om te doen maar kan je ook bestaande code's downloadenzoals de NE 555

Gepost door Lamborghini op woensdag 10 november 2004 19:14:07

mij lijkt het wel leuk om te doen maar kan je ook bestaande code's downloadenzoals de NE 555

Je kan zo'n µC laten doen wat jij wilt. Dus als die de functie van een 555 moet hebben dan kan dat. Er zullen alleen weinig mensen zijn die dat willen, want dan kan je beter gewoon een 555 kopen, dus zo donwloaden zal niet gaan. Maar je kan het wel zelf schrijven.

Gepost door Joeppie op maandag 29 november 2004 19:03:31

Deze handleiding was voor mij een uitstekend begin om te beginnen met PICs.
(mijn complimenten!)

Voor de volgende stap, het tot stand brengen van serieele RS232 tweerichtings-communicatie met de PIC 16F84 / 16F84A, heb ik wat meer tijd nodig gehad, totdat ik deze uitstekende pagina vond:

http://www.electronic-engineering.ch/microchip/projects/rs_test/rs_tes…

Als je het politie-project hebt gemaakt en nu iets verder wilt gaan, dan is dit een mooi project.
Nieuwere PIC processors hebben hardware-ondersteuning voor RS232 communicatie (zodat het iets eenvoudiger wordt), maar voor de PIC 16F84(A) heb je dit echt nodig.

Gepost door mts plus op zondag 5 december 2004 13:57:46

Ik vind het een goede uitleg. Ik zit slechts met 1 probleem als je mplab wil downloaden. Krijgje de nieuwste vesie en dus niet de versie die besproken is. Om deze vesie te krijgen ga je naar de site van mplab en doe je bij search v5.70.

Gepost door Joeppie op donderdag 16 december 2004 17:32:38

Ik gebruik deze programmer ook voor de PIC 16F628A en voor de 18F248 (PIC16F628A PIC18F248) icm. icprog.exe
Heb wel (uiteraard) bij de PIC18F248 de pinouts moeten veranderen, omdat op die PIC de signalen op andere pinnen binnenkomen.
Ik neem aan dat elke PIC die het zgn. ICSP (in system serial programming) heeft, dit mogelijk is.

Ik ben blij dat het programmeren zo goedkoop kan (geen dure programmer van 130 euros).. nu kan ik het vrij gekomen budget voor 'nog leukere' dingen benutten :-).

Op naar het volgende project (CAN-bus) voor mij!

Gepost door mts plus op woensdag 29 december 2004 22:48:49

Hoe kan je de andere pinnen aan sturen van poort a? met 03h
of met een ander commando?

[Reactie gewijzigd op woensdag 29 december 2004 22:52:08]

Gepost door Bastiaan op vrijdag 31 december 2004 01:15:23

Hoe kan je de andere pinnen aan sturen van poort a? met 03h
of met een ander commando?

Commando blijft hetzelfde, alleen de waarde wordt anders. Welke waarde het wordt ligt aan de pinnen die je aan wilt sturen. Daarbij moet je kijken naar de bitwaarde van de desbetreffende pinnen. Bijvoorbeeld pin 3 aansturen is (in bits 0000.1000) dus 08h. Wil je pin 3, 4 en 5 aansturen dan wordt het (in bits 0011.1000) dus 38h.
enz. enz.

[Reactie gewijzigd op vrijdag 31 december 2004 01:16:00]

Gepost door mts plus op zondag 2 januari 2005 22:20:57

als ik het dus goed begrijp is:
ra0 = 01h
ra1 = 02h
ra2 = 04h
ra3 = 08h
ra4 = 16h

Je werkt natuurlijk bnair dus eigenlijk is het logisch

Bedankt

Gepost door mts plus op maandag 3 januari 2005 00:18:27

Het prgramma zit in de pic maar nu wil ie maar 1 led laten branden. Deze brand fel, zwwak, fel enz maar gaat niet uit! hoe kan dit?? Ook met het proramma wat je op de site kan downloade doet ie et niet. rara hoe kan dat?

Gepost door Bastiaan op maandag 3 januari 2005 00:31:03

Het prgramma zit in de pic maar nu wil ie maar 1 led laten branden. Deze brand fel, zwwak, fel enz maar gaat niet uit! hoe kan dit?? Ook met het proramma wat je op de site kan downloade doet ie et niet. rara hoe kan dat?

Ik raad je aan daar even een apart topic op forum voor te openen.

Gepost door logic op zaterdag 29 januari 2005 04:14:38

Van 2 posts geleden:

als ik het dus goed begrijp is:
ra0 = 01h
ra1 = 02h
ra2 = 04h
ra3 = 08h
ra4 = 16h

Nee, ra4 = 10h , niet 16h!

0000.0001 = 01h
0000.0010 = 02h
0000.0100 = 04h
0000.1000 = 08h
0001.0000 = 10h
0010.0000 = 20h
0100.0000 = 40h
1000.0000 = 80h

Gepost door richardbloe op zaterdag 29 januari 2005 23:40:50

Hoi,

Ik heb zojuist de simpele programmer gebouwd en het politie project op zo'n testbordje. Het werkte perfect en meteen de eerste keer. Ik was nog even bang dat de capaciteit bij de oscillator een probleem zou zijn maar ook met een 20 MHz krystal werkte het meteen en perfect. Leuk!

Gepost door Bastiaan op donderdag 10 februari 2005 13:37:45

Fijn, leuk om te horen ;)

Gepost door delta brafo (danny) op zondag 20 februari 2005 00:50:09

hhhhhhhhhhheeeeeeeellllllllllp alsje bleif wat van kabel heb ik nodig om van de programmer naar de comp te gaan mijn bijde delen zijn male comp male prog male probeer nu met een nul modem te doen maar wil niet

Gepost door lampjes op woensdag 16 maart 2005 21:16:58

Doet het hier ook toppie! Hij deed het eerst niet omdat ik alleen 10nF had. Ik dacht dat dat ook goed was blijkbaar niet. Maar kun je niet erbij zetten hoe je de interne occilator gebruikt. (ga ik nu uitzoeken:))

Je kan ook in basic programeren!
http://www.oshonsoft.com/downloads.html

Stel je microcontroller in bij options select microcontroller.
Druk ctrl c
plak dit erin:

TRISA = 0x00
loop:
PORTA.0 = 1
WaitMs 1000
PORTA.0 = 0
WaitMs 1000
Goto loop

Save hem in een map
CLick tools - compile assemble and load
(maakt een hex aan in je map)
Laad deze in IC-prog klaar! En je hebt een knipperlicht.

[Reactie gewijzigd op dinsdag 22 maart 2005 16:26:47]

Gepost door kevin_ op zondag 20 maart 2005 09:48:45

nice!:)
goede uitleg
alleen de link naar de datacheet werkt niet meer:(

[Reactie gewijzigd op woensdag 23 maart 2005 15:35:05]

Gepost door joriske op vrijdag 25 maart 2005 22:04:43

nu de exames voorbij zijn moest ik dit toch ook eens probeeren, wat vrijwel foutloos ging. Het was ook allemaal goed uitgelegd. Maar ik heb nog een vraag, als je een ingang maakt hoe gebruik je die? en stel je zou kortsluiting maken over de weerstand en de LED, wat gebeurt er dan?

Gepost door Lucky Luke op woensdag 6 april 2005 15:35:49

handig :)

maar wel een hele lap tekst.

ga mn eerstvolgende vrije tijd hieraan offeren!

Gepost door Lucky Luke op woensdag 6 april 2005 15:36:49

jandorie de link naar de datasheet werkt niet! :(

Gepost door Lim@ op donderdag 21 april 2005 20:59:04

hey!
batiaan, je hebt me enorm geholpen. Ik was al een tijd aan het zoeken naar een nederlandse handleiding die vanaf nul begint. En eindelijk heb ik deze nu gevonden. Ik ga morgen al het nodige gaan kopen ne begin er meteen aan! Mijn bedoeling is om een RGB kleurmixing te maken door een rgb-led aan te sturen. Maar ik ga toch eerst eens het politie project maken!
We lerne op school porgrammeren in C-taal, en ik heb het goed odner de knie. Maar dit is toch helemaal anders. Met die hexadecimale cijfers enen het begrijpen van de structuur van de PIC heb ik het nog wat moeilijk maar dat zal wel lukken.
Ik ga nog wel wat links plaatsen als het rgb kleurmixen gelukt is!
Grtzz,
Lim@

Gepost door elekdax op donderdag 28 april 2005 14:41:43

Hallo geweldige tutorial maar ik zit met 1 probleem :s
als ik "program all" kies krijg ik telkens de melding "programming failed at code address 0000h!" ik heb de tut zeer goed nagekeken en ik weet echt niet wat er mis kan zijn. Ook heb ik bij hardware de I/o delay op een andere waarde geplaatst en ook met een andere poort (com2) geprobeerd de win2k driver is ook geselecteerd. Kan iemand mij helpen?

Gepost door Bastiaan op zaterdag 30 april 2005 12:01:09

Kijk even op het forum, er zijn je zeeeerrr veel mensen voorgegaan die ook een dergelijk probleem hadden.

Gepost door frits 297 op dinsdag 3 mei 2005 17:13:44

Hoe laat ik een led'je branden op a4?

Gepost door bazzzie op maandag 30 mei 2005 15:02:54

Kan ik met de program device schakeling uit het artikel ook een pic16f628 programmen?

Bedankt!

Gepost door chlodovech op maandag 6 juni 2005 09:16:15

moet je eerst de pic resetten voordat je hem herprogrameert of doet het programma dat uit zichzelf???

Gepost door joriske op woensdag 8 juni 2005 22:05:12

nee je hoeft hem niet te resetten. dat doet het programma van zelf.

Gepost door Lucky Luke op woensdag 22 juni 2005 22:21:31

heb ook dat probleem met fout op 000h. ding is 100% goed gesoldeerd, maar ik zie hierboven een (mogelijke) oplossing staan en die ga ik proberen.

de oude versie van mplab is ook te downloaden via het archief van microchip.

mooie toturital. maar michien kan ie meer up-to-date? (16f628a ipv 16f84a, is toch +/- hetzelfde naar ik gehoord heb) en de nieuwe versie van mplab uitleggen?

verder (Y) (duim omhoog)

ik heb de i/o vertraging nu op 40 gezet, werkt heel traag, maar: geen foutmeldingen meer!

:)

ook even getest of het progje ook werkt, antwoord is ja.

thnx to willie wortletje, ik heb zijn fading rgb led gemaakt.

[Reactie gewijzigd op woensdag 22 juni 2005 23:12:36]

Gepost door Gerard N op dinsdag 13 december 2005 09:39:01

Mooi hoor!!

Maar wat ik nou weer had.... Ik draai ook weer met Windows 2000 PRO

Ik heb zoals in het forum beschreven staat de delay op 40ms gezet.

Dat duurde ten eerste lang, en het ging 1 keer goed. Toen ben ik verder gaan sneupen of andere forums en kwam ik erachter dat je de prority ook goed kon veranderen.

Ik heb het nu zo, en dat gaat steeds goed:
Priority op HIGH
En de delay op 1. Gaat snel, en werkt ook nog.

Groet Gerard. Suc6
ELEKTRONICA TO THA BONEE!!

Gepost door c0 op dinsdag 3 januari 2006 10:27:48

Heb de nodige problemen ondervonden doordat ik (PIC16F en) PIC18F microcontrollers heb gebruikt. Deze vergen een hogere programmeerspanning dan de PIC16F84. Er wordt gewaarschuwd om niet een seriele programmer op een laptop aan te sluiten, aangezien een seriele poort van een laptop mogelijk niet voldoende spanning en/of stroom levert.

Ik ben na de nodige frustratie met de JDM programmer overgestapt op een Tait seriele programmer die via de parallelle poort aangesloten wordt. Hij heeft wel een externe voeding nodig van +13V voor het programmeren en +5V voor de normale bedrijfsspanning. Het voordeel is dat deze 100% compatibel is met IC prog, vrij simpel te bouwen is, 74L06 inverters gebruikt om onvolkomenheden in de signaalniveau's op te vangen, en vrij simpel op een experimenteerbordje na te bouwen is.

Link naar programmer:
http://www.semis.demon.co.uk/Pics/PICmain.htm

nog wat tips die mij de nodige hoofdbrekens hebben gekost:
Als het programmeren goed gegaan is, hang dan MCLR met een 10k (of meer) weerstand aan de voeding, zodat de chip niet in gereset blijft. Als je een hogere weerstand kiest (100k of meer) is de stroom klein genoeg om niet per ongeluk het programmeerledje te laten oplichten.

2e tip: Als je in basic een simpel progje schrijft, vergeet dan niet om eerst de pinnen als output te definieren.

Download PIC simulator IDE (www.oshonsoft.com/pic.html) en gebruik het volgende programmaatje:

TRISA = 0x00
TRISB = 0x00
TRISC = 0x00
TRISD = 0x00

loop:

PORTA = 0xff
PORTB = 0xff
PORTC = 0xff
PORTD = 0xff

WaitMs 100

PORTA = 0x00
PORTB = 0x00
PORTC = 0x00
PORTD = 0x00

WaitMs 200

Goto loop

Dit is een simpel knipperLED progje wat er voor zorgt dat ALLE poorten zullen knipperen. Erg makkelijk om als eerste mee te testen.

Succes !!
Mijn site: http://coeleveld.nl
Mijn adresgegevens: http://coeleveld.nl/uploads/doc/harald_coeleveld.vcf

Gepost door c0 op dinsdag 3 januari 2006 22:26:38
Gepost door willyp op vrijdag 10 februari 2006 20:45:46

Ik heb heel veel aan deze tutorial gehad!
Als dank deze assembler die misschien voor sommigen onder ons het nog (iets) makkelijker maakt!

Groetjes! Willyp

PS deze tekst na het woord code kun je dus direct gooien in je ASM.!

____________________________

[code]
; TIPS, HINTS en applicatie links staan ONDERAAN deze programmering! Ook hoe je een Project in MPlab Opstart!
;
;

; DEFINIEREN WELKE PIC GEBRUIKT WORDT

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Met de tekst wat ik hieronder schrijf geef ik aan welke PIC wij gebruiken, mensen met een 16F627 vullen hier dus dat in.

LIST P=16F84A
include <P16F84A.INC>

; Wat is/doet het?
; Doordat je deze functie opgeeft hoef je geen lappen EQU tekst meer te schrijven zoals jullie zagen op mijn voorbeeldprogrammering
; Hier staan dus AL de functies die jullie zagen waaronder als VB. W EQU H'0000'.
; Dit betekend dat je dit ook dus allemaal niet meer hoeft te definieren!
;
; Hou er wel rekening mee dat je dit alleen in MPLab kan toepassen ( en onder speciale voorwaarden onder Notepad)
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; GEHEUGENSTEUNEN DEFINIEREN

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Vanaf hier geef je aan: "wat gelijk is aan" ofwel het EQU gedeelte (Engels: Equalevent | Nederlands: Gelijk aan )
; Hou er rekening mee dat je alles netjes scheid met TABS en zorg ervoor dat je het overzichtelijk houdt voor jezelf én
; voor andere mensen die het moeten lezen/nakijken
;

TRISB EQU 86H ; Als je "TRISB" een 1 geeft betekend dit een ingang, een 0 betekend uitgang.
; TRISB is dus een register dat er zo uit ziet "0000 0000" en JIJ moet bepalen
; in of uitgang wordt van de PIC zijn B poort. (dus ALTIJD instellen!)
;
; Nou heb ik TRISB en PORTB als voorbeeld tóch even toegevoegd als voorbeeld. Dit HOEFT niet

PORTB EQU 06H ; PORTB ofwel 06H is direct gekoppeld aan de RB poorten van de PIC. Het moge natuurlijk duidelijk
; zijn dat dit een Ingang of uitgang kan zijn na aanleiding van de waarde in "INSTELLENPOORTB".

TELLER1 EQU 40H ; 40H is een vrije geheugen plek in de PIC16F84 waar je zelf een 8 bits lange waarde in mag
; knikkeren. Welke banken nog meer voor vrij gebruik zijn kun je terug vinden in de datasheet of
; tutorial (BLZ 7 "Hardware Sectie"). Je kunt dus ook ipv 40h 0CH zeggen, want deze is ook vrij
; Deel alleen de door jouw gebruikte geheugens wel netjes in, anders weet je later niet meer wat
; je wel en niet vrij nog hebt!

TELLER2 EQU 41H ; Ook dit is weer hetzelfde als het verhaal van TELLER, alleen is dit NOG een geheugenbankje die
; gekozen wordt maar dan onder de naam 41H (want 40H heb je al gebruikt voor TELLER)

; Het volgende wat ik zeg klinkt misschien raar maar het is allemaal HETZELFDE;
;
; H'0086' is gelijk aan 86H en D'134' en B'10000110'
; Hier staat de H voor Hexadecimaal, de D voor Decimaal en de B voor binair. Je MOET aangeven WAT voor getal je gaat invoeren
;
; Even als voorbeeld:
;
; TRISB EQU 86H
; TRISB EQU H'0086'
; TRISB EQU D'134'
; TRISB EQU B'10000110'
;
; De bovengenoemde 4 "is gelijk aan" vermeldingen betekenen allemaal hetzelfde. Wil je bewijzen dat het allemaal hetzelfde is?
;
; Doe dan hetvolgende in Windows Calculator; (NB. Wel Geavanceerd calculator optie kiezen!)
;
; klik op HEX en voer daar in 86
; Vervolgens kan je dit hexidicemale getal in een oogwenk omzetten naar decimaal, octaal of binair.
;
; Klik nu op BIN en/of DEC en je ziet dat de waarde overeenkomt met 86H
;
; *Advertentie :P*
;
; Op MSN kan je me altijd vragen stellen! Voeg me toe op ****@****.nl
;
; *Einde Advertentie*
;
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; START PROGRAMMA

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Vanaf "ORG 00H" of "ORG 0" geef je aan waar de PIC als eerste naar moet kijken als hij aangezet wordt. Ook na een reset zal de
; PIC als eerste naar ORG 0 / ORG 00H gaan. Dus voor de duidelijkheid, na het indrukken van het knopje RESET/MCLR op je PICbord
; zal de PIC niet naar de label RESET gaan maar naar ORG 0. Meestal geef je na ORG 0 / ORG 00h wel weer aan dat hij naar (GOTO)
; RESET moet. Maar deze label is helemaal vrij in keuze!
;
;

ORG 00H ; BEGINADRES INSTELLEN

BSF STATUS,RP0 ; KIES BANK 1. Waarom? Omdat de volgende functies TRISA / TRISB in een andere BANK zitten (zie blz 7)
; Je kunt terug vinden in welke bank jouw functie zit in de Tutorial op blz. 7 of
; de datasheet van je PIC. Je mag ook hetvolgende zeggen in MPlab om hetzelfde te
; bereiken: BANKSEL TRISA . Het programma weet dan automatisch dat je bank 1
; bedoelt (omdat TRISA in BANK1 zit) en gaat hier dus heen
; NB. In beide gevallen gaat hij NIET automatisch terug naar bank 0, dit zal je dus
; zelf moeten commanderen door óf BCF (bit clear F) STATUS,RP0 of
; BANKSEL PORTB (of een andere functie die in bank 0 ligt Bv. PORTA / TMR0 etc. Zie blz 7.

CLRF TRISB ; Vanaf hier maken we met de functie CLRF (Clear F ofwel maak F leeg) het geheugenbankje dat gekoppeld
; is aan TRISB laag (ofwel: B'00000000') Dit betekend dus dat alle PORTB pinnen
; geconfigureerd zijn als Uitgangen (0 is uitgang 1 is ingang).

; Mocht je ook willen dat je PORTA gaat gebruiken dan zul je hem dus eerst moeten definieren
; (geheugen adress eraan koppelen (bv TRISA EQU 85h). Als je MPLab gebruikt en je zorgd
; dat bovenaan de INCLUDE files goed staan dan hoef je dit niet te definieren maar gelijk TRISA
; gebruiken
; Uiteraard schrijf je de "is gelijk aan" niet hier, maar netjes in je daarvoor bestemde
; plek van je programma
; Hier (in dit stukje) geef ik alleen aan welke waarde in dát (zelfgedefineerdegeheugen moet komen
; Wil je PORTA als ingang kunnen gebruiken dan zal je

BCF STATUS,RP0 ; Ga weer terug naar BANK 0, zoals ik zei mag je ook zeggen BANKSEL PORTB / PORTA / TMR0 etc.
; Het betekend allemaal hetzelfde. Hou je wel rekening ermee dat dit alleen geld in MPLab
;
; ; Nu zijn we klaar met:
; ; - Definieren welke processor gebruikt wordt
; ; - Definieren / koppelen van geheugen aan een geheugenadres
; ; - BANK1 geconfigureerd naar wens
; ;
; ; Dit betekend dat we nu klaar zijn met dat en nu ons eigen programma kan beginnen
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Start van jouw programma, vanaf hier ben je dus klaar met alle bovenstaande functies. Je hebt je poorten geconfigureerd en
; je geheugenbanken die je wenst te gebruiken aangemaakt
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

KNIPPER MOVLW 02H ; LAAD 01H IN W (processor), 01 staat ook wel voor B'00000010' ofwel het 2e ledje ofwel LD2
; ; (B'00000010' mag je dus ook vervangen voor 02H!! Betekend hetzelfde!)

MOVWF PORTB ; ZET DE WAARDE VAN W(=02H) wat je zojuist erin hebt gegooit in PORTB
; Oftewel, zet LD 2 aan!

; Start van de Vertraging van ongeveer 255x255= 65025 instructies. Processor kan 1mhz aan instructies doen per seconden ofwel
; 1000000 instructies per seconden. Als je dan 1mhz deelt door de vertraging van 65025 instructies kom je uit op een tijd van 15,3 mS

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MOVLW 0FFH ; LAAD 0FFH IN W. De hex waarde "FF" is de grootste waarde die je kan maken voor 1 geheugenbank
; FF is gelijk aan B'11111111' ofwel de maximale waarde, de 0 & H is verplicht voor de FF (0FFH)
MOVWF TELLER2 ; Gooi de waarde W naar Teller2 (W=FF ofwel B'111111111' of Decimaal D'255')

VERDER MOVLW 0FFH ; Gooi nogmaals de HEX waarde FF in TELLER1, dit moet om zo een lus te creeren van 255 x 255
MOVWF TELLER1 ; Gooi de waarde uit W register in geheugenbank TELLER1 (W=D'255' of B'11111111' of 0FFH)

; Nu zijn beide geheugenbanken gevult met 255 decimalen / 11111111 binairen / FF heximalen en dus zijn ze klaar om afgeteld te worden

OPNIEUW DECFSZ TELLER1,1 ; DECFSZ betekend letterlijk, haal van F geheugen de ingestelde waarde af en kijk daarna of hij
; leeg is (ofwel is de decimale waarde 0 / hex waarde 00 / binaire waarde B'00000000')
; F wordt hier gedefieneerd als TELLER1 en de hoeveelheid die eraf moet is ingesteld als 1
; Deze informatie kan je helemaal uit dit : "DECFSZ TELLER1,1 " halen.
; Als na het afhalen van de ingestelde waarde het geheugen TELLER1 een 0 bevat dan "skipt" hij
; de volgende instructie. Ofwel hij zal de instructie "GOTO OPNIEUW" Skippen / overslaan.

GOTO OPNIEUW ; Hier geef ik aan dat hij naar de Label "OPNIEUW" moet springen

DECFSZ TELLER2,1 ; Als de waarde in TELLER1 hierboven zijn 0 heeft bereikt zal hij dus de instructie
; "GOTO OPNIEUW" overslaan en komt hij terecht op deze routine.
; Vervolgens gebeurd hier precies hetzelfde als bij TELLER1, hij haalt de ingestelde waarde (1)
; van TELLER2 af en kijkt of hij de waarde 0 bevat. Is deze nog geen 0? Dan zal hij gewoon door
; lopen naar de volgende instructie. De volgende instructie is dus "GOTO VERDER" en zal hij
; dus naar de Label "VERDER" gaan.
; Mocht dit register/geheugenbank TELLER2 leeg zijn dan skipt hij (net als boven bij TELLER1)
; de eerstvolgende instructie (in dit geval de instructie "GOTO VERDER") en zal hij dus
; verder gaan met de instructie "MOVLW 00H".

GOTO VERDER ; Ga naar de label VERDER de teller opnieuw te laten aftellen

; Einde van de teller, als hij verder dan hier komt heeft hij dus 255x255 instructies door lopen
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Vervolg knipperen van de LED, de 15,3 mS zijn nu voorbij en dus heeft de led 15,3mS aangestaan en is het nu tijd om hem te doven
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MOVLW 00H ; LAADT 00H IN W (00H is hetzelfde als binair B'00000000' of D'0' (D= decimaal)
;
MOVWF PORTB ; Zet vervolgens de waarde die je zojuist in W hebt gezet (W=0) over in PORTB. Omdat alles nu
; een 0 wordt in PORTB zullen de LED(s) doven.

; Start van de Vertraging van ongeveer 255x255= 65025 instructies. Processor kan 1mhz aan instructies doen per seconden ofwel
; 1000000 instructies per seconden. Als je dan 1mhz deelt door de vertraging van 65025 instructies kom je uit op een tijd van 15,3 mS

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MOVLW 0FFH ; LAAD 0FFH IN W. De hex waarde "FF" is de grootste waarde die je kan maken voor 1 geheugenbank
; FF is gelijk aan B'11111111' ofwel de maximale waarde, de 0 & H is verplicht voor de FF (0FFH)
MOVWF TELLER2 ; Gooi de waarde W naar Teller2 (W=FF ofwel B'111111111' of Decimaal D'255')

VERDER1 MOVLW 0FFH ; Gooi nogmaals de HEX waarde FF in TELLER1, dit moet om zo een lus te creeren van 255 x 255
MOVWF TELLER1 ; Gooi de waarde uit W register in geheugenbank TELLER1 (W=D'255' of B'11111111' of 0FFH)

; Nu zijn beide geheugenbanken gevult met 255 decimalen / 11111111 binairen / FF heximalen en dus zijn ze klaar om afgeteld te worden

OPNIEUW1 DECFSZ TELLER1,1 ; DECFSZ betekend letterlijk, haal van F geheugen de ingestelde waarde af en kijk daarna of hij
; leeg is (ofwel is de decimale waarde 0 / hex waarde 00 / binaire waarde B'00000000')
; F wordt hier gedefieneerd als TELLER1 en de hoeveelheid die eraf moet is ingesteld als 1
; Deze informatie kan je helemaal uit dit : "DECFSZ TELLER1,1 " halen.
; Als na het afhalen van de ingestelde waarde het geheugen TELLER1 een 0 bevat dan "skipt" hij
; de volgende instructie. Ofwel hij zal de instructie "GOTO OPNIEUW" Skippen / overslaan.

GOTO OPNIEUW1 ; Hier geef ik aan dat hij naar de Label "OPNIEUW" moet springen

DECFSZ TELLER2,1 ; Als de waarde in TELLER1 hierboven zijn 0 heeft bereikt zal hij dus de instructie
; "GOTO OPNIEUW" overslaan en komt hij terecht op deze routine.
; Vervolgens gebeurd hier precies hetzelfde als bij TELLER1, hij haalt de ingestelde waarde (1)
; van TELLER2 af en kijkt of hij de waarde 0 bevat. Is deze nog geen 0? Dan zal hij gewoon door
; lopen naar de volgende instructie. De volgende instructie is dus "GOTO VERDER" en zal hij
; dus naar de Label "VERDER" gaan.
; Mocht dit register/geheugenbank TELLER2 leeg zijn dan skipt hij (net als boven bij TELLER1)
; de eerstvolgende instructie (in dit geval de instructie "GOTO VERDER") en zal hij dus
; verder gaan met de instructie "MOVLW 00H".

GOTO VERDER1 ; Ga naar de label VERDER de teller opnieuw te laten aftellen

; Einde van de teller, als hij verder dan hier komt heeft hij dus 255x255 instructies door lopen (ofwel 15,3mS)
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; LED is nu AAN en UIT geweest en dus mag het hele programma opnieuw beginnen door terug te gaan naar het begin, ofwel "GOTO KNIPPER"

GOTO KNIPPER

END ; Altijd het einde van je programmering aangeven, dus na END komen er GEEN instructies meer (het wordt ook niet opgenomen)
; zo weet Assembler tot welke geheugenbanken hij hoeft te programmeren.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;
; HINTS / TIPS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;
; Veelal maak je een groot programma met daar veel geheugen dat je verbruikt. Het kan daarom handig zijn als je een lijst maakt
; in je assembler waar in staat welke geheugen banken (reeks) gereserveerd is. Bijvoorbeeld bij een Lichtkrant:
;
; Geheugengebruik:
;
; 0C tot 0F gereserveerd voor tekst
; 10 tot 18 gereserveerd voor tekst 2
; 19 tot 1F gereserveerd voor tekst 3
;
; etc ;)
;
;
; NB. Questions e.d. naar *******@wanadoo.nl of via MSN (zelfde email adres)
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; MPLab
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Programma MPLab kan je downloaden met deze directe link http://ww1.microchip.com/downloads/en/DeviceDoc/MP730b.exe
;
; Engelse Manual van MPLab vind je onderaan op deze wesite;
; http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&no…
;
;
;
; HET STARTEN VAN EEN PROJECT EN HET KLAAR MAKEN VOOR HET PROGRAMMEREN INSTRUCTIES;
;
; Stap 1 Ga naar File-> NEW en vervolgens krijg je een leeg scherm. Ga nu weer naar FILE->Save As en sla het bestand op als
; een .ASM bestand. Dit kan je doen door de bestandsnaam in te typen en vervolens in het dropdown menu ASSEMBLY SOURCE FILES
; te kiezen. Nadat je drukt op SAVE is het bestand opgeslagen in de gewenste locatie (HOU ALS KAN EVEN C:\Progs\V1\ als opslag)
;
; NB. Hou de directory mappen niet langer dan 10 tekens, ook de bestandsnamen niet meer dan 10! Liefst korter ivm herkenning voor
; het DOS programma Assembler.
;
;
; Stap 2 Ga naar Project -> Project Wizard en loop deze af (juiste processor selecteren en programma's)
; Bij het stukje " Steph Three " moet je aangeven hoe je project gaat heten en waar hij opgeslagen moet worden.
; Hou hier even de map C:\Progs\V1\ aan (of een andere map als je stap 1 ergens anders hebt bewaard). De naamkeuze voor je
; project is vrij, deze kan/mag je dus zelf verzinenn.
;
; Soms komt het voor dat hij vraagt om een programma MPASM.EXE (of iets dergelijks) Zoek het gevraagde programma dan even op met
; de Zoekfunctie van Windows in het mapje " C:\Program Files\MPLAB\ " en voer de correcte link naar het gevraagde programma
; even in bij de lege ruimte hiervoor.
;
; Stap 3 Klik het venster (als je die krijgt) Output af todat je een scherm ziet staan met "jouw-opgegeven-projectnaam.MCW"
; Hier zie je als het goed is een reeks met namen staan, je klikt met je rechtermuis op Source Files en klikt vervolgens op
; Add File(s) en kiest hier voor het bestand wat je in stap 1 hebt aangemaakt. Het moet een extentie hebben van .ASM.
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; PROGPIC
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Stap 1 Selecteer je HEX bestand (zoek deze op waar je hem hebt geassembleerd, gebeurd altijd in dezelfde map waar je ASM ook staat)
; Stap 2 Kies de juiste processor in het Drop Down menu
; Stap 3 Selecteer alle vinkhokjes BEHALVE low volt prog
; Stap 3a Omdat ik nog geen "Config Word" heb meegeprogrammeerd krijg je telkens de melding bij openen van het bestand "no config
; word found". Om dit juist te configurenren druk je nu op "Change" bij het vakje Config. en zet je de waarde op 3FF1
; Stap 4 Sluit je programmeerbord aan en zet hem in de Programmeer stand
; Stap 5 Klik in ProgPic op WRITE

[/code]

[Reactie gewijzigd op vrijdag 10 februari 2006 20:47:47]

Gepost door c0 op donderdag 16 maart 2006 11:45:56

Ben weer wat verder. Hier zie je mijn laatste bevindingen.

http://coeleveld.nl/feed1.php?action=content&phase=view&conten…

Gepost door HermanW op maandag 24 april 2006 00:31:04

Zeer mooie toturial, vooral voor beginners gweeldig.

Gepost door Gharryh op donderdag 8 juni 2006 17:40:38

Leuk project maar
a. is de code voor het politie project te download
b. ik probeer het programma van Microchip te gebruiken maar kan niet vinden hoe dat ding een hex file maakt

Groetjes

Harry

Gepost door dikkeduif op donderdag 24 augustus 2006 02:11:33

Dit ga ik morgen eens uitproberen. Is een mooie tutorial, vlot uitgelegd ;)

Gepost door solderende electra-freak op dinsdag 11 maart 2008 17:36:00

Deze ga ik kopen ,kan ook de hier genoemde pic progge

Gepost door hardbass op zondag 7 september 2008 00:41:00

wow,

ik wilde hier ook me beginnen en stond dus voor een hoge berg
maar jij heb die berg wel even wat platter gemaakt :P

nee serieus het allemaal een stuk duidelijker

bedankt ga zo door

Gepost door Blackov op zondag 21 september 2008 13:15:37

het verschil tussen 'call' en 'goto'
is dat gewoon dat bij 'call' zeg je 'doe eerst X en ga dan verder met de rest'
en 'goto' 'ga verder met X, en sla dus de rest over'
of zit ik mis?

mvg

Gepost door Bert277 op zondag 16 augustus 2009 00:23:24

hallo,

Ik ben net begonnen met de pic cursus en vind hem heel goed, verder ben ik bezig met de printplaat voor de PIC programmer met externe voeding te maken (deze die onder het topic schakelingen staat).

ik heb volgend probleem, ik probeer de printplaat te etsen, maar telkens zijn de dunne banen volledig weggeëts tegen dat de voledige print geëtst is. etsmidel maak ik met waterstofperoxide en zoutzuur, omdat ik deze grondstoffen makelijk kan bekomen. Wat doe ik mis? of hoe kan ik dit voorkomen?

alvast bedankt

mvg

Bert

Gepost door steven84 op woensdag 26 augustus 2009 15:38:39

dag bert,

kijk eens op
http://www.picbasic.nl/index_etsen.htm

daar staat een heel uitgebreide tutorial ivm zelf belichten en etsen, waarschijnlijk vind je daar wel het antwoord op je probleem

Gepost door markona op dinsdag 5 januari 2010 15:11:15

ik heb een vraag over de pic want in de tutorial wordt gesproken over een PIC16F84A maar in de schakeling van de politie wordt er gebruik gemaakt van een PIC16F84 wat is het verschil en kan de genoemde pic programmer met externe voeding beide pic's programmeren?

[Reactie gewijzigd op dinsdag 5 januari 2010 15:11:46]

Gepost door LosPoppelos op donderdag 14 januari 2010 20:47:11

Er staat: "Om er toch bij te kunnen moeten we de controller in een andere bank zetten, namelijk bank 1. Dit doe je met de instructie: BSF 03,5. Nadat de richting van poort A (en eventueel B) is ingesteld moet je weer terug naar bank 0 met : BCF 03,5.|"

Waarom moet je hier 03,5 gebruiken, ik kan hier geen verklaring voor vinden, de rest is duidelijk maar deze waarden kan ik niet thuisbrengen.

Gepost door DDSFM op zaterdag 13 februari 2010 11:59:32

Als je in het datasheet kijkt naar de lijst met SPECIAL FUNCTION REGISTER FILE SUMMARY, dan zie je dat het STATUS register huist op adress 03h.
Om tussen diverse banken heen en weer te te gaan, moet je in dit geval bit 5 ( RP0 ) setten of clearen.

Gepost door Giox op vrijdag 23 juli 2010 08:38:31

Een link die hier eignelik ook echt niet mag ontbreken is die naar de tutorials van Gooligum:

http://www.gooligum.com.au/tut_baseline.html

Gepost door herman1 op woensdag 9 juli 2014 12:04:22

hoe kan je zorgen dat een bepaalde bit 1 wordt als er twee andere bepaalde bits 1 zijn een gewone or-poort dus

Als je ingelogd bent kun je een reactie plaatsen.