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
Lesezeichen