015
31.05.2010, 19:48 Uhr
Enrico
Default Group and Edit
|
So, hab das nun endlich gefunden. Sieht richtig übel aus, wenn man da nach so langer Zeit mal wieder drüber schaut. Erstlingswerk in allerbestem Spaghetti-Code:
Quellcode: | KBD_READ: SETB KB_CLK MOV R0,#08 PUSH DPH PUSH DPL MOV DPTR,#0 KBR0: JB RI,SIO_EMPFANGIN JB KOUT,RESET_TASTE INC DPTR MOV A,DPH CLR C SUBB A,#15H ;Timeout bis 1500H JZ TIMEOUT JB KB_DATA,KBR0 JB KB_CLK,KBR0 KBR1: JNB KB_CLK,KBR1 KBR2: JB KB_CLK,KBR2 MOV C,KB_DATA ;8 Datenbits bernehmen RRC A KBR3: JNB KB_CLK,KBR3 DJNZ R0,KBR2 KBR4: JB KB_CLK,KBR4 KBR5: JNB KB_CLK,KBR5 KBR6: JB KB_CLK,KBR6 KBR7: JNB KB_CLK,KBR7 CLR KB_CLK POP DPL POP DPH RET
TIMEOUT: CLR A ACALL SIO_SEND
|
D.h., wenn von der Tastatur 1500 Schleifendurchläufe lang nichts kommt, wird 00h gesendet. Wie lang das jetzt auch immer ist. Ausprobieren kann ich da z.Z. leider nichts.
Eigentlich sollte das ja kein Problem sein, da die SIO einen 3 Bytes Empfangspuffer hat. -- MFG Enrico Dieser Beitrag wurde am 31.05.2010 um 19:50 Uhr von Enrico editiert. |