Ik heb een pic16f876a op een testprintje geboetseerd, en wil hiermee een beetje expirimenteren. Uiteindelijk wil ik hier een 1 kanaals DMX dimmer van maken. Is er iemand die mij hiermee wil helpen?

Ik loop al vast bij het instellen van de io's

LIST P=16F876A
#include <P16F876A.INC>

ORG 00h
GOTO INIT

INIT
BSF STATUS, RP0

MOVLW B'11111000'
MOVWF TRISB

Ik krijg de volgende foutmelding:

Message[302] C:\DMX\TESTBORD\TESTBORD.ASM 23 : Register in operand not in bank 0. Ensure that bank bits are correct.

Hoe kom ik in hemelsnaam hier van af?

Je moet in de goede bank zitten voordat je register kan instellen.
Weet het niet uit mijn hoofd, zie datasheet.

je kan een regeltje toevoegen zodat MPLAB de mededeling achterwege laat.
De melding is afkomstig van de bankswitch,Dit doet het programma altijd als je van bank wisselt.

Het is ook geen fout maar een Message[302]

als het goed is staat er ook Build succesful.

Gewoon negeren dus.

Okee nu heb ik de volgende code:

LIST P=16F876A
#include <P16F876A.INC>

ORG 00h
GOTO INIT

INIT

BSF STATUS, RP1

MOVLW B'11111000'
MOVWF TRISB

GOTO MAIN

MAIN

MOVLW B'00000111'
MOVWF PORTB

GOTO MAIN

END

rb0,1 en 2 worden echter nog niet hoog. Wat doe ik hier fout?

Bank terug zetten naar bank 0 met BCF STATUS,RP0 nadat TRIS is geinitialiseerd.

hmm doet nog niets. Heb al geswitcht tussen XT en HS bij de oscillator maar dat haalt ook niets uit.

Ik moet toch een bitje 0 maken om te laten sinken naar 0v?

Op 23 maart 2006 22:39:33 schreef Geranium:
hmm doet nog niets. Heb al geswitcht tussen XT en HS bij de oscillator maar dat haalt ook niets uit.

Omdat de BSF ook nog fout was: Hou je BANK in de gaten!!!!

Op 23 maart 2006 22:13:08 schreef JuuL:
Je moet in de goede bank zitten voordat je register kan instellen.
Weet het niet uit mijn hoofd, zie datasheet.

Het antwoord was je al gegeven.;-)
Maar goed, je pic start normaal op in bank 0.

Om naar de tris register te schrijven moet je naar bank 1.
Dat doe je met :
BSF STATUS RP0 (RP0 om te switchen tussen bank 0 en 1 - RP1 is voor bank 2 en 3, zie de datasheet)

Daarna stel je de tris register in :
MOVLW B'11111000
MOVWF TRISB

Daarna moet je weer terug naar bank 0 !!! dus :
BCF STATUS RP0 (deze regel ontbrak nog)

Daarna kun je verder in je programma, en schrijven naar portb. :-)

okee, ik heb em dus ingesteld op HS. komt ook daadwerkelijk klokpuls vanaf. Op CLKI aangesloten. Poorten laten sinken werkt niet. mclr komt netjes terug naar 5v na het proggen. maar de ledjes branden nog steeds niet.

\edit
ik heb de banks ingesteld zoals zojuist opgegeven maar het geheel werkt nog steeds niet
\edit

[Bericht gewijzigd door Geranium op ]

Op 23 maart 2006 22:47:00 schreef Geranium:
okee, ik heb em dus ingesteld op HS. komt ook daadwerkelijk klokpuls vanaf. Op CLKI aangesloten. Poorten laten sinken werkt niet. mclr komt netjes terug naar 5v na het proggen. maar de ledjes branden nog steeds niet.
........

Even voor de duidelijkheid:
Je steld met trisb b0, b1 en b2 in als uitgang, de rest als ingang.
Daarna maak je b0, b1 en b2 hoog(1), en blijf dat herhalen in een lus.

Wat bedoel je met "Poorten laten sinken werkt niet"? (je maakt ze hoog, dus zullen ze ook niets sinken...)
Waar heb je die leds nu op aangesloten? en hoe?

met dmx in een pic kan ik je helpen, ik ben er ook regelmatig mee bezig. Morgen zal ik uitgebreid reageren :)

Ik heb die ledjes via een weerstand aan de gnd hangen. Ik krijg nog steeds geen enkel signaal op mn portb

Op 23 maart 2006 23:40:42 schreef Geranium:
Ik heb die ledjes via een weerstand aan de gnd hangen. Ik krijg nog steeds geen enkel signaal op mn portb

checks
- probeer een blink-a-led programma van mijn site, als dat werkt dan weet je iig dat je schakeling goed is
- staat je LED goed om? led losmaken van PIC, even verbinden met de andere spanningsrail (gnd of 5v)
- weet je zeker dat je hiervoor assembler wil gebruiken? Jal, C, basic, noem maar op, lijken me een stuk makkelijker!