LCD und PS2 Tastatur an Atmega 8

OP #4030620
Lesenswert?

Hallo und schönen Abend erstmal euch allen und schonmal vielen 
herzlichen Dank fürs öffnen und evtl. lesen des Threads :)

Also erstmal meine Problemstellung und vorweg es handelt sich weder um 
eine Hausaufgabe, noch um einen Troll oder ähnlichem.

Und zwar habe ich hier eine alte Ps2 tastatur rumfahren und versuche sie 
über, wie oben genannt, einen einem Atmega 8 (mit Quarz auf 16 Mhz) die 
Eingabe auszulesen und dann für den Anfang an einem Text LCD (40*2) 
auszugeben.

Alle Versuche scheiterten bis jetzt kläglich und ich bitte nun um 
Sinvolle Links und Hilfestellungen.
"Gegoogelt" habe ich auch schon, aber keiner der Links hat mir  WIRKLICH 
weiter geholfen.

Ich benutze Bascom AVR in der Demo und würde es auch gerne weiter 
benutzen.

Mit freundlichen Grüssen,

Bastian
OP #4030717
Lesenswert?

Hallo nochmal
hab nen Code gefunden der wenigstens Teilweise Funktioniert :)
zum ASM Teil, bin mich grade noch am zurechtfinden, also verzeiht bitte 
mein Leien-Dasein

Nur zu dem was nicht funktioniert:
Ich bekomme die Anschläge mit, jedoch wird mir immer ein griechisches 
"Alpha" angezeigt, bitte um Hillfestellung.

MFG Bastian
1
$regfile = "m8adef.dat"
2
$crystal = 16000000
3

4
Config Lcd = 40 * 2
5
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.1 , Rs = Portc.0
6
Config Keyboard = Pind.1 , Data = Pind.0 , Keydata = Keydata
7

8
Cursor On Blink
9
Dim Text As String * 40
10
Dim I As Byte
11
Dim L As Byte
12

13
$serialinput = Kbdinput
14
$serialinput2lcd
15

16
Text = "This is a Test!"
17
L = Len(text)
18
Cursor Off
19
Cls
20
Print Text
21

22

23
Do
24

25
Cls
26
Cursor Blink
27
Cursor On
28
Print "Enter Text :"
29
Locate 2 , 1
30
Input Text
31
L = Len(text)
32

33
Cls
34
Print Text
35
For I = 1 To 16
36
 Shiftlcd Right
37
 Wait 1
38
Next I
39
Wait 1
40
L = L + 16
41
For I = 1 To L
42
 Shiftlcd Left
43
 Wait 1
44
Next I
45
Loop
46

47
End
48

49
Kbdinput:
50

51
$asm
52

53
push r16           ; save used register
54

55
push r25
56

57
push r26
58

59
push r27
60

61
Kbdinput1:
62

63
rCall _getatkbd    ; call the function
64

65
tst r24            ; check for zero
66

67
breq Kbdinput1     ; yes so try again
68

69
pop r27            ; we got a valid key so restore registers
70

71
pop r26
72

73
pop r25
74

75
pop r16
76

77
$end Asm
78

79
Return
80

81
I = Getatkbd()
82

83
Keydata:
84

85
Data 0 , 0 , 0 , 0 , 0 , 200 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &H5E , 0
86
Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0
87
Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0
88
Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0
89
Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0
90
Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0
91
Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0
92
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
93

94
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
95
Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 , 87 , 34 , 0
96
Data 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0
97
Data 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 , 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0
98
Data 0 , 59 , 75 , 73 , 79 , 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0
99
Data 0 , 0 , 0 , 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0
100
Data 0 , 62 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0
101
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren