Ik ben bezig om een pic16f84a te doorgronden (en te leren programeren), en nu heb ik een simple oorzaak - gevolg progje geschreven voor mijn pic.
...Ik had nu graag een stukje code willen laten zien, maar helaas besloot de harddisk van mijn laptop ermee te stoppen, en guess what...
In iedergeval gebruik ik als basis dit stukje code:
porta EQU 05h
teller EQU 40h
teller2 EQU 41h
teller3 EQU 42h
instelporta EQU 85h
ORG 00h ;beginadres kiezen
BSF 03,5 ;kies bank 1
CLRF instelporta ;alles pinnen poort A uitgang maken
BCF 03,5 ;kies bank 0
dit is het begin stukje uit het demoprogje wat bij de pic tutorial hoort.
Het probleem is alleen dat er bij het compileren een fout gegenereerd wordt, welke stelt dat ik de bank select functie niet heb toegepast, en daardoor niet kan instellen of de poorten input of output zijn. gevolg, proggie werkt niet.
Wie weet wat er fout gaat bij mij???
[Bericht gewijzigd door Chris Hogevonder op ]
Confusion
There are only 10 types of people in the world - those who understand binary, and those who don't
Probeer het eerst een met een makkelijkere taal zoals Jal.
Deze genereert ook een asm file zodat je precies ziet wat er allemaal gebeurd
MADdie
Kijk ook op de site waar ik MOD van ben :) www.schakelingenonline.nl Ik heb geen leven :( ik ben student www.horizoncollege.nl Help MIJ
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op do 24-10-2002 07:20:16 schreef MADdie:
Volgens mij ben je
ORG 00h
vergeten
Die staat er toch gewoon tussen 
Op do 24-10-2002 01:22:40 schreef Chris Hogevonder:
dit is het begin stukje uit het demoprogje wat bij de pic tutorial hoort.Het probleem is alleen dat er bij het compileren een fout gegenereerd wordt, welke stelt dat ik de bank select functie niet heb toegepast, en daardoor niet kan instellen of de poorten input of output zijn. gevolg, proggie werkt niet.
Wie weet wat er fout gaat bij mij???
En die fout zit in dat stukje wat je hebt neergezet?
En is het een warning of een error? want een warning is niet erg maar een error wel.
k.p.meinesz
Een schizofreen is nooit alleen!
die fout is
MESSAGE[302](file name) 9 REGISTER IN OPERAND NOT IN BANK 0 .ENSURE BANK BITS ARE CORRECT
Op do 24-10-2002 20:21:15 schreef k.p.meinesz:
die fout is
MESSAGE[302](file name) 9 REGISTER IN OPERAND NOT IN BANK 0 .ENSURE BANK BITS ARE CORRECT
das gene error, das gewoon een Message; hoeft geen fout te zijn, moogt ge da dus gerust negeren
k.p.meinesz
Een schizofreen is nooit alleen!
LIONEL je hebt gelijk
er hoort nog iets bij nl.
BUILD COMPLETED SUCCESFULLY
en idd het werkt er niet minder om.
OK, tnx allemaal,
ik denk dat ik dan nog maar eens naar de rest van het prog ga kijken... (als ik het nog kan redden...)
en over de taal, ik begrijp wat ik aan het doen ben, maar kon de fout (of message) niet plaatsen, en dacht dat daar de fout zat... vandaar
k.p.meinesz
Een schizofreen is nooit alleen!
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Die melding klopt. Het is alleen maar een warning die de assembler geeft aan je. Hij verteld dat je moet opletten omdat je niet in bank 0 zit (daar moet je standaard inzitten). Maar we willen in dat stukje code juist in bank 1 zitten om het TRIS in te stellen. Dus het is een nutteloos bericht maar toch aardig van de assembler dat die ons ff laat opletten 
k.p.meinesz
Een schizofreen is nooit alleen!
heb ik dus mooi mijn routine net zolang aangepast dat deze dat juist niet meer deed.
blijkt dus dat ik nu juist een fout maak.
zal ik dus even terug moeten zetten 85h=05h=85h 
heb ik er ook nog wat van die raare messages de eerste weet ik nu (met dank aan deze site) maar de rest kan ik niet uit komen???
dit zijn de warnings:
Message[302] C:\PROGRA~1\MPLAB\ROBOT.ASM 9 : Register in operand not in bank 0. Ensure that bank bits are correct.
Warning[202] C:\PROGRA~1\MPLAB\ROBOT.ASM 18 : Argument out of range. Least significant bits used.
Warning[202] C:\PROGRA~1\MPLAB\ROBOT.ASM 22 : Argument out of range. Least significant bits used.
Warning[202] C:\PROGRA~1\MPLAB\ROBOT.ASM 23 : Argument out of range. Least significant bits used.
Sweet Winter Smile
A long answer is not short!
Op 24 oktober 2002 21:34:13 schreef Bastiaan:
...Hij verteld dat je moet opletten omdat je niet in bank 0 zit (daar moet je standaard inzitten)...
...SWS volgt de discussie vanuit "de bank" in de woonkamer... 
Hoezo bank 0? zit prima op mijn eigen bank hier LOL 
SWS
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op 22 januari 2003 12:20:58 schreef bart II:
heb ik er ook nog wat van die raare messages de eerste weet ik nu (met dank aan deze site) maar de rest kan ik niet uit komen???
dit zijn de warnings:
Warning[202] C:\PROGRA~1\MPLAB\ROBOT.ASM 18 : Argument out of range. Least significant bits used.
Warning[202] C:\PROGRA~1\MPLAB\ROBOT.ASM 22 : Argument out of range. Least significant bits used.
Warning[202] C:\PROGRA~1\MPLAB\ROBOT.ASM 23 : Argument out of range. Least significant bits used.
Aan alleen je warning hebben we niks. Je moet ook je code ff posten. Bij elke warning of error regel staat aangegeven om welk stukje code het gaat. Zo zie je dat de 1e warning op regel 18 zit. Post dus ff regel 18 eventjes met eventueel andere belangrijke info die wij nodig hebben om je te kunnen helpen.
hier heb je de code (grotendeels zelf geschreven dankzij deze site
:):):)
poorta EQU 05h
poortb EQU 06h
iporta EQU 85h
iportb EQU 86h
;--------POORTINSTELLEN--------
ORG 00h
BSF 03,5
CLRF iportb
BCF 03,5
;--------PROGRAMMA-------------
MOVLW 05h
MOVWF poortb
BTFSC poorta,01h
GOTO achterl
;--------SUB LINKSACHTER------
achterl BCF poortb,05h
BSF poortb,08h
GOTO time
achter2 BSF poortb,01h
GOTO time
voor1 BCF poortb,0Fh
BSF poortb,08h
;--------SUB time------------
time MOVLW 0DAh
MOVWF 40h
verder MOVLW 0FFh
MOVWF 41h
MOVLW 0FFh
MOVWF 42h
opnieuw DECFSZ 42h, 1
GOTO opnieuw
verder2 DECFSZ 41h, 1
GOTO verder2
DECFSZ 40h, 1
GOTO verder
RETFIE
END
[edit zo moet het beter gaan]
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Alleen regel 18, 22 en 23 waren voldoende geweest.
Jij zet in regel 18 neer:
BSF poortb,08h
Oftwel jij wilt op de geheugenplek poortb bitje 8 setten. Maar bit 8 bestaat niet. Je hebt bit 0 t/m 7, en dus geen 9. Hij geeft ook de warning: out of range. Oftwel je zit buiten zijn bereik. Hij gebruikt als je niks verandert de laatste 7 bits die je meegeeft. Aangezien jij 1000000 hebt zal die alleen de 00000000 gebruiken en dus niks setten op poort b.
Het programma werkt wel want het is een warning alleen in dit geval niet zoals jij wilt. Maak er dus van:
BSF poortb,07h
Op regel 22 maak je het helemaal bont door te zeggen:
BCF poortb,0Fh
Je wilt dus bitje 0Fh dit is bitje 15 clearen. Die bestaat helemaal niet.
En regel 23 is dezelfde fout als regel 18.
Lees dus even goed in de datasheet de instructie BCF en BSF nog eens na.
k.p.meinesz
Een schizofreen is nooit alleen!
Op 22 januari 2003 15:42:06 schreef Bastiaan:
Alleen regel 18, 22 en 23 waren voldoende geweest.Lees dus even goed in de datasheet de instructie BCF en BSF nog eens na.
en vooral dat stukje over READ MODIFY WRITE OPERATIONS
oa BSF BCF
anders zoek je je straks hartsikke blind naar een fout
Op 22 januari 2003 13:04:42 schreef bart II:
[edit hij wordt een beetje onduidelijk maar ik weet niet hoe ik het op moet lossen]
Zet je programma tussen de UBB-codes code en /code. Probeer maar door je laatste posting te wijzigen.
Ik dacht dat je wel 2 bits tegelijk kon clearen of setten maar dat kan dus niet hoe moet ik het dan doen bv.
als ik bit 1 en bit 4 wil clearen zoals op regel 17
achterl BCF poortb,05h
Op 23 januari 2003 10:56:19 schreef bart II:
Ik dacht dat je wel 2 bits tegelijk kon clearen of setten maar dat kan dus niet hoe moet ik het dan doen bv.
als ik bit 1 en bit 4 wil clearen zoals op regel 17
achterl BCF poortb,05h
Gewoon door twee keer onder elkaar BCF te schrijven
BCF poortb, 01h
BCF poortb, 04h
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op 23 januari 2003 10:56:19 schreef bart II:
Ik dacht dat je wel 2 bits tegelijk kon clearen of setten maar dat kan dus niet hoe moet ik het dan doen bv.
als ik bit 1 en bit 4 wil clearen zoals op regel 17
achterl BCF poortb,05h
Ik zeg toch -> Lees de datasheet. Staat alles in wat jij niet weet maar wel wil weten.
zou ik moeten doen maar ik heb de datasheet nog niet gedownt dus vandaar maar dat ga ik direct doen en dan zal ik jullie niet meer lastig vallen!! met rare proggie vragen.
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op 23 januari 2003 13:35:15 schreef bart II:
zou ik moeten doen maar ik heb de datasheet nog niet gedownt dus vandaar maar dat ga ik direct doen en dan zal ik jullie niet meer lastig vallen!! met rare proggie vragen.
Het geeft allemaal niks, je mag best dingen vragen. Alleen als je alles zelf zo, vrij simpel, kan opzoeken dan is het wel erg makkelijk gedacht om ons het maar voor je te laten doen.
Peter Luykx
All my messages have been send with 100% recycled electrons
Probeer eens met "org 0x00" en voor de verder rest, eenvoudiger notaties van hex getallen zijn 0x00 met de laatste twee karakters duiden op het hex getal.
Groet Peter