ik ben aan het proberen om met basic wat te ontvangen.
In ASM werkt dit, dus heb ik men code omgezet in basic alleen krijg ik een deel fouten waar ik maar geen oplossing voor vindt.


Symbol ErrLed = PORTA,1
Symbol DataLed = PORTA,2
Symbol BreakLed = PORTA,3
Symbol ProgramLed = PORTA,4
'geheugen van DMX
Symbol Framing = DMX_data,0
Symbol Break = DMX_data,1
Symbol Startcode = DMX_data,2
Symbol Klaar = DMX_data,3
' defineren geheugen plaats
dim Kanaal           as byte
dim teller           as byte
dim Gedaan           as byte
dim reg1             as byte
dim reg2             as byte
dim reg3             as byte
dim reg4             as byte
dim DMX_data         as byte
' poort defineren


sub procedure  interrupt

ProgramLed = 1
if RCSTA.OERR = 1 then goto overrun
else if RCSTA.FERR = 1 then goto frame
else
reg1 = RCREG  ' zet data weg....

if Framing = 1 then goto break
else if break = 0 then goto erro
Dataled = 1
if Klaar = 1 then goto ex_int
else
teller = teller - 1
If teller = 0 then reg2 = RCREG
else goto ex_int
end if
ex_int:

end sub.


main:

' laag maken poorten
PORTA = 0
PORTB = 0
PORTC = 0
PORTD = 0
PORTE = 0
' in en uitgangen instellen
TRISA = 0
TRISB = 0
TRISC = 0
TRISC.7 = 1 ' uart ingang
' instellen uart
SPBRG = 04
TXSTA.BRGH = 1
TXSTA.SYNC = 0
PIE1.RCIE = 1

RCSTA.RX9 = 1
RCSTA.CREN = 1
RCSTA.SPEN = 1
RCREG = 0 'maak regisere leeg
' zet interupts op
INTCON.PEIE = 1
INTCON.GIE = 1
' stel het kanaal in van de dmx
Kanaal = 1
teller = Kanaal
Gedaan = 0



'De while lus
While true
     PORTA = Reg2
  wend
  
overrun:

Framing = 0
Gedaan = 0
Break = 0
Klaar = 0
Errled = 1
RCSTA.CREN = 1
RCSTA.CREN = 0
RCREG = 0
RCREG = 0
RCREG = 0
RCSTA.CREN = 1
RCSTA.CREN = 0
goto ex_int

frame:

Framing = 1
RCREG = 0
teller = Kanaal
Klaar = 0
Gedaan = 0
goto ex_int

break:

Framing = 0
If reg1 > 0 then goto erro
else
Breakled = 1
Break = 1
Klaar = 0
end if
goto ex_int

erro:

Framing = 0
Gedaan = 0
Errled = 1
Break = 0
Breakled = 0
Klaar = 0
goto ex_int

end.
[/code=picbasic]
25:6 E-4 Syntax error: Expected '=' but ',' 
123:1 E-3 Identifier 'end' was not declared 
123:4 E-4 Syntax error: Expected 'end' but '.' found 
124:1 E-4 Syntax error: Expected 'sub' but '' found 
124:1 E-4 Syntax error: Expected 'end' but '' found 
124:1 E-4 Syntax error: Expected '.' but '' found

Weet hier iemand raad mee?
Ik heb zelf nog niet zoveel ervaring met basic, en heb al enkele voorbeeld codes doorgenomen maar ik kan op deze fouten geen oplossing vinden...

Moeilijk te zeggen als we niet weten wat er op de betreffende regel staat...
Er ontbreken wel zowiezo 2 END IF's in de interrupt proc.

op deze regel geeft hij de eerst fout:
ProgramLed = 1

Waar moet ik dan net men endif's zetten?

aangezien dit een lange if is ...

symbol break <- break is een gereserveerd woord ...

dit heb ik aangepast

maar er blijft een error op
de regel:


ProgramLed = 1

ik snap niet wat hier de fout is...

weet iemand hier raad mee?
Staan er nog fouten in?

Ik ben nog niet zo thuis thuis in basic

Wat probeer je in godsnaam met die goto's?

Voer alles uit in je main via een repperterende loop en zet alleen in je interrupt routine de nodige flaggetjes voor in je main routine.

*edit

Ik heb nog verder naar je code gekeken maar ik kom niet uit de spagettie.

maar je if-then-else statemends af, en schrijf ze op een nette manier


if voorwaarde=1 then
   doe je actie
else
   doe een andere actie
end if

als je een bit van een byte wil adresseren moet je een punt gebruiken.

dus PORTA.1 in plaats van PORTA,1

Ik denk dat je je goto 'functies' vanuit de asm heb overgenomen, probeer deze als je ze als code wilt hergebruiken te scrijven als functies. Maaky het een stuk leesbaarder.

Tenslotte, microe heeft veel werk gedaan in de voorbeelden, bekijk ze, compileer ze. Probeer ze uit, ze zijn echt leerzaam.

Waar moet ik dan net men endif's zetten?

Als je de code normaal formatteert met indentation, (i.p.v. een lange brij) dan zie je automatisch waar een end if mist...

Het probleem zit zich dus ergens in de config's


Device 18F452
'@CONFIG_REQ
 '@__CONFIG CONFIG1H, OSCS_OFF_1 & HS_OSC_1
 '@__CONFIG CONFIG1L, BOR_ON_2 & BORV_20_2 & PWRT_ON_2
 '@__CONFIG CONFIG2H, WDT_OFF_2 & WDTPS_128_2
 '@__CONFIG CONFIG3H, CCP2MX_OFF_3
 '@__CONFIG CONFIG4L, STVR_OFF_4 & LVP_OFF_4 & DEBUG_OFF_4
CONFIG_START
 OSC = HS
 OSCS = On
 PWRT  = On
 BOR = On
 BORV = 42
 WDT = OFF

 LVP = OFF
 Debug = OFF
 CONFIG_END
'Config HS_OSC , WDT_OFF , PWRTE_OFF , CP_OFF , DEBUG_OFF
 
XTAL = 20 

ALL_DIGITAL TRUE              ;Alle ingangen digitaal

Opnieuw:                      ;Label met zelf te verzinnen naam
Toggle PORTD.1                ;Aan moet uit, uit moet aan
DelayMS 1000                  ;500 milliseconden = 0,5 seconde
GoTo Opnieuw                  ;Spring naar 'Opnieuw' en ga zo steeds door 

End                           ;Einde programma


[/code=picbasic]

Ik hen aan het proberen dit stukje code aan de praat te krijgen.
Op het eerst zicht geen enkel probleem, toch doet die het niet, led gaat aan maar niet meer terug uit.

Men opstelling:
 - 10k weerstand van +5v naar MCLR
 - 20mhz kristal
 - led op portd.1

ja

na de weerstand groter te maken (kleiner stroom) doet die het...

Die goto had je makkelijk in een while kunnen stoppen.
Alles in die while een beetje inspringen, zie je meteen de loop.

Tevens hoor je te eindigen met een end. <- let op de punt

Is dit wel mikrobasic?

Code in de sp is wel in mikrobasic. Ik denk dat het stukje hierboven een test code van picbasic.nl is om te kijken of de schakeling wel werkt.

Wat was je weerstand waarde eerst? Alles vanaf 220R zou toch moeten werken.