Dit is een gedeelte van mijn programma waarmee ik een kenteken in de
EEPROM. In dit geval slaat hij elke cycles weer de waarde op.

Cls
    For x=0 To 7
    dummy=ERead x            ;read 3 chars from eeprom table
    Print At 1,x+1,  dummy
    Next
    kenteken1 = 0           ;Opstartwaarde
    kenteken = 1            ;Opstartwaarde
   While 1 = 1
   
     If S1=0 Then Inc kenteken
     If S2=0 Then Dec kenteken
     DelayMS 10  
   If kenteken =39 Then kenteken = 0
   If kenteken =255 Then kenteken = 39
   kenteken1 = LookUp kenteken ,["ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890- "]
   Print At 1 , plaats ,  kenteken1
   Print At 2, plaats, "-" 
   DelayMS 200
   EWrite plaats-1, [kenteken1]
   If S4 = 0 Then plaats = plaats+1
   If plaats = 9 Then plaats= 1 
   DelayMS 10  
      
  If S3 =0 Then GoTo Menu 
   Wend 

Ik heb het volgende al geprobeerd maar dat gaf foutmeldingen met compileren

   If S4 = 0 Then plaats = plaats+1 and EWrite plaats-1, [kenteken1]

Ik wil de waarde pas opslaan als S4 ingedrukt wordt

Victor
@Arco
Als ik S4 indruk moet de cursor eentje opschuiven en de nieuwe waarde van kenteken1 opgeslagen worden

Ik heb de oplossing gevonden moest een : tussen ipv and, nu werkt het goed

Breek die regel eens in wat kleinere stukjes.
De compiler begrijpt niet wat je daar mee bedoelt. (En ik ook niet...)

AND is een logische operatie, die gebruik je bijvoorbeeld voor:


If (S1=0 and S2=0) Then {...}    //Voorbeeld: Als S1 en S2 ingedrukt zijn.

In jouw geval moet je hebben:


If (S4=0) Then {
plaats++
EWrite plaats-1, [kenteken1]
}

Met de dubbele punt ging het ook goed, omdat dat een nieuwe regel betekent in PicBasic, maar je moet ze ook nog even tussen haakjes zetten, anders slaat hij het altijd op in EEPROM.

Edit: Werkt niet, zie posts lager.

@Hagdos

Ik heb jouw voorbeeld geprobeerd maar krijg dan foutmeldingen in de compiler

In de manual staat dat ik het toch goed deed
Any commands on the same line after Then will only be executed if the comparison if fulfilled: -


 IF VAR1 = 1 THEN HIGH LED : DELAYMS 500 : LOW LED

Victor

Hagdos gebruikt C-code en dat werk niet in basic

Owhja, het is een beetje weggezakt. De nette manier om in BASIC meerdere commando's op 1 IF uit te voeren is


IF S4 = 0 THEN
    plaats++
    EWrite plaats-1, [kenteken1]
ENDIF

Dan wordt alles tussen IF en ENDIF alleen uitgevoerd als S4 nul is.