Hier mal der "vorraussichtliche" Code:
Code:
$regfile = "m8def.dat"
$crystal = 1000000
Ddrb = &B00000000 'Port B komplett als Eingang
Ddrc = &B00001111 'Am Port C PC0 bis PC3 Ausgang, Rest Eingang
Ddrd = &B11111111 'Port D komplett als Ausgang
Portb = &B00011110 'Pullup für PB1 bis PB4 aktivieren (Taster)
Portc = &B00001111 'Beim starten auf 0 setzen
Portd = &B00000000 'Beim starten auf 0 setzen
Dim Nutzdaten As String * 30
Dim Textstring As String * 30
Dim Bytewerte(30) As Byte At Textstring Overlay
Dim X As Byte
Dim Y As Byte
Led_gruen Alias Portc.0
Led_rot Alias Portc.1
Taster1 Alias Pinb.1
Taster2 Alias Pinb.2
Taster3 Alias Pinb.3
Taster4 Alias Pinb.4
Strobe Alias Portc.3
Init_signal Alias Portc.2
Busy Alias Pinb.5
Ack_signal Alias Pinb.6
'Portd ist DATA0 - DATA7 der Centronics Schnittstelle
Led_gruen = 0 'LED Grün an
Led_rot = 0 'LED Rot an
Wait 1 'Test, ob beide LEDs funktionieren
Led_rot = 1 'LED Rot aus
Do
If Taster1 = 0 Then 'Taster 1 gedrückt
Textstring = "!R! STAT1; EXIT; {012}"
Gosub Senddata 'Rote LED aus
Waitms 50 ' wegen dem Tastenprellen
End If
If Taster2 = 0 Then 'Taster 2 gedrückt
Textstring = "!R! FRPO I1, 1; EXIT;"
Gosub Senddata
Waitms 50 ' wegen dem Tastenprellen
End If
If Taster3 = 0 Then 'Taster 3 gedrückt
Textstring = "!R! ELOG; EXIT;"
Gosub Senddata
Waitms 50 ' wegen dem Tastenprellen
End If
If Taster4 = 0 Then 'Taster 4 gedrückt
Waitms 50 ' wegen dem Tastenprellen
End If
Loop
Senddata:
Led_gruen = 1 'Grüne LED aus
Do
Loop Until Busy = 1
Led_rot = 0
Init_signal = 0 'Init-Signal auf Low zum initialisieren
Waitms 50 '50 millisekunden warten
Init_signal = 1
Waitms 50
Y = Len(textstring)
For X = 1 To Y Step 1
Portd = Bytewerte(x)
Waitms 10
Strobe = 1
Waitms 10
Strobe = 0
do
'Wartet, bis der Drucker ein ACK gesendet hat, um sicher zu gehen, dass kein Zeichen verloren geht
loop until Ack_signal = 1
Next X
Led_gruen = 0 'Grüne LED an
Led_rot = 1
Return
End
Was meint die Mehrzahl dazu? Irgendwelche Verbesserungsvorschläge? Neu ist eigentlich bloß, dass mit "Do - Loop until ACK = 1" vorgesorgt wird, dass keine Bytes verloren gehen.
Lesezeichen