Hallo Joe,
hab mir deinen Code nochmals angesehen. Beim Schreiben könnte es
eventuell ein Timing Problem beim WR-Signal sein.
write_DataRegister(daten);
pause();
clear_bit(0x37A,WR); //WR = 0;
set_bit(0x37A,WR); // WR = 1; vor set_bit noch pause(); einfügen
clear_bit(0x37A,ALE); // ALE = 1 vor clear_bit ALE acuh eine pause
Bist du dir eigentlich sicher, dass du korrekt auf den LPT-Port
ausgeben kannst. Haste mal ein Oszi drangehängt, notfalls hänge mal ein
74xx753 Latch mit LEDs an die LPT um zu sehen ob deine Daten richtig
ankommen. (Oder mit einem Multimeter messen)
Das gleich gilt fürs Einlesen.
Kannst du, wenn du z.B. 0x3A in Canregister xy schreibst diesen Wert
wieder korrekt auslesen? Wenn das schon nicht geht kann das ganze CAN
nicht funzen.
Was mir auch noch aufgefallen ist:
set_bit(0x37A,WR); // WR = 1; hier macht set_bit eine 1
set_bit(0x37A,ALE); // ALE = 0 hier macht set_bit eine 0
hast du ALE,WR... dementsprechend richtig definiert?
Ansonsten fällt mir auch nichts mehr ein.
Volker