-
Hi Rofo88!
Der Beispielcode sieht im Grunde gut aus, allerdings ergibt die Syntax Prüfung in BASCOM bei mir einen Fehler in den drei Zeilen wo folgendes versucht wird:
Im Senden 0 Unterprogramm:
Daten = 0 'Daten auf low
Clock = 0 'Clock auf 0
Im Senden1 Unterprogramm:
Clock = 0
Da kommt dann immer der folgende Fehler in BASCOM:
Error 230: You can not write to a PIN register [PINA.0], etc.
Irgendeine Erklärung, bzw. Modifikation des Codes um es zum Laufen zu bringen ?
Gruß,
Oscar10
-
Mach aus
Daten Alias Pina.0
Clock Alias Pina.1
einfach:
Daten Alias Porta.0
Clock Alias Porta.1
-
@zerush
Das wird leider nicht funktionieren da Daten und Clock auch als Input abgefrag werden.
@oscar10
Also ich habe Bascom 1.11.9 da läufts! Welche Version hast Du?
-
Rofo88:
Ich habe leider noch die 1.11.8.7....
-
@oscar10
So, das sollte auch mit der älteren Version laufen
Code:
$regfile = "m32def.dat"
$crystal = 16000000
Declare Sub Senden
Declare Sub Senden0
Declare Sub Senden1
Dim X As Byte
Dim Y As Byte
Dim Send As Byte
Dim Parity As Byte
'Hier bitte die Portdaten eintragen
Daten Alias Pina.0
Datenport1 Alias Porta.0
Datenport Alias Ddra.0
Clock Alias Pina.1
Clockport Alias Ddra.1
Clockport1 Alias Porta.1
For Y = 0 To 29 ' sendet "hallo AVR"
Send = Lookup(y , Dat)
Call Senden
Next
Do : Loop 'endlosschleife
'######################### Unterprogramme #################################
Senden:
Do : Loop Until Clock = 1 And Daten = 1 'warte bis PC empfangsbereit
'Startbit (immer 0)
Call Senden0
'8 Datenbists
For X = 0 To 7
If Send.x = 0 Then '0 Senden
Call Senden0
Else '1 Senden
Call Senden1
End If
Next
'parity
If Parity.0 = 0 Then
Call Senden0
Else '1 Senden
Call Senden1
End If
'Stopbit (immer 1)
Call Senden1
Parity = 0
Return
Senden0: 'Sendet eine 0 über PS2
Datenport = 1 'Daten auf Output
Datenport1 = 0 'Daten auf low
Clockport = 1 'Clock auf Output
Clockport1 = 0 'Clock auf 0
Waitus 30 '30µS warten
Clockport = 0 'Clock auf Input
Waitus 5 '5 µS warten
Datenport = 0 'Daten auf Input
Return
Senden1: 'Sendet eine 1 über PS2
Clockport = 1 'Clock auf Output
Clockport1 = 0 'Clock auf 0
Waitus 30 '30µS warten
Clockport = 0 'Clock auf Input
Incr Parity
Return
Dat:
Data &H33 , &HF0 , &H33 , &H1C , &HF0 , &H1C , &H4B , &HF0
Data &H4B , &H4B , &HF0 , &H4B , &H44 , &HF0 , &H44 , &H29
Data &HF0 , &H29 , &H12 , &H1C , &HF0 , &H1C , &H2A , &HF0
Data &H2A , &H2D , &H
-
Hallo,
was muss ich bei Dat als DATA eingeben, damit er mir nur ein "m" an den PC sendet?
Gruß
Papsi
-
http://www.marjorie.de/ps2/scancode-set2.htm
Schaue Dir die Tabelle mal an.
MakeCode : 3A BrakeCode : F0,3A
also
Data &H3A , &HF0 , &H3A
-
Aha - das mit den Daten im HexFormat ist jetzt klar...
ABER
Wenn ich dein letztes Programm probiere und es starte, dann piept mein PC nur sooft, wie die HEx Sachen gesendet werden.
Also pro &Hxx einmal
Anschluss und Portbelegung sollte nicht das Problem sein.
???
:EDIT
Muß ich evtl. noch was zw. PC und µC hängen.
Habe jetzt die beiden Ausgangspins A.0 und A.1 direkt an die PS2 Buchse geklemmt.(altes Tastaturkabel)
-
Nein, da muß nichts mehr dazwichen. Aber die Masse darfst Du nicht vergessen!
-
GND und +5V habe ich natürlich auch verbunden...