Hallo,

also ich nutze die Version 1.11.9.3
Mir steht aktuell auch nur diese Version zur Verfügung.
Nachfolgend der aktuelle Testcode - welcher noch immer den Fehler mitbringt.

Sogar im Bascom-Simulator taucht die "55" aus der Sub Lcd_put in der Sub Analog auf.

Also die Variablen _w1, _w2 und _w3 haben manchmal den Wert 55 obwohl sie mit _w1=10 , _w2=20 und_w3=30 übergeben werden.


Code:
$regfile = "M32def.dat"
$crystal = 12288000
$hwstack = 128
$swstack = 96
$framesize = 64
$baud = 57600
'$sim


'### LCD #######################################################################
Dim Lcd_cnt As Byte
Declare Sub Lcd_put(byval _x As Byte , Byval _reg As Byte)
'###############################################################################


'### Timer0-Systemtakt #########################################################
On Oc0 Isr_timer0
Tccr0 = &B1000_1011                                         'ctc-mode, prescaler=64
Ocr0 = 191                                                  '95=500µs   /   191=1ms
Timsk.ocie0 = 1



'### DA-Wandler ################################################################
Declare Sub Analog(byval _w1 As Byte , Byval _w2 As Byte , Byval _w3 As Byte )
Dim W1_alt As Byte , W2_alt As Byte , W3_alt As Byte



Enable Interrupts


Do
   Call Analog(10 , 20 , 30 )
Loop
End



'### ISR's #####################################################################
Isr_timer0:
   Incr Lcd_cnt                                             'nächstes Zeichen im Display-Puffer
   If Lcd_cnt <= 80 Then Call Lcd_put(5 , 1)                'Zeichen ausgeben
   If Lcd_cnt = 81 Then Call Lcd_put(2 , 0)                 'Cursor at home (2ms)
   If Lcd_cnt = 250 Then Lcd_cnt = 0
Return





'### Sub's #####################################################################

'### DA-Wandler ################################################################
Sub Analog(_w1 , _w2 , _w3 )
   If _w1 <> W1_alt Or _w2 <> W2_alt Or _w3 <> W3_alt Then
'   If _w1 <> W1_alt Then
      Sreg.7 = 0
      Print _w1 ; Chr(9) ; W1_alt ; Chr(9) ; _w2 ; Chr(9) ; W2_alt ; Chr(9) ; _w3 ; Chr(9) ; W3_alt
      Sreg.7 = 1
      W1_alt = _w1
      W2_alt = _w2
      W3_alt = _w3
    End If
End Sub


'### LCD #######################################################################
'
Sub Lcd_put(_x , _reg )
   _x = 55
End Sub