Hallo zusammen,
ich schreibe momentan ein über ein Kreuz aus vier Tastern steuerbares
Snake-Spiel (12x10 LED-Matrix) für einen atmega8. Der µc ist auf einer
SMD-Platine fest mit der Matrix verbunden, daher muss ich mich mit den
übrig gebliebenen Pins begnügen. Nun meine Frage: ich muss das
D-Register gleichzeitig als Input und als Output nutzen, eine andere
Möglichkeit gibt die feste Pinbelegung nicht her. Kann dies zu Problemen
führen?
Hier der Ausschnitt aus dem C-Code, der mir Sorgen macht:
1 | uint_8 p=1, x=5, y=4;
|
2 |
|
3 | DDRD = 0b11110000; //PD0-PD3 inputs, PD4-PD7 outputs?
|
4 | PORTD = 0x00;
|
5 |
|
6 | if(((PIND & (1<<0)) == (1<<0))&&p!=2){ //if PD0 high...
|
7 | p=1;
|
8 | }
|
9 | if(((PIND & (1<<1)) == (1<<1))&&p!=1){ //if PD1 high...
|
10 | p=2;
|
11 | }
|
12 | if(((PIND & (1<<2)) == (1<<2))&&p!=4){ //if PD2 high...
|
13 | p=3;
|
14 | }
|
15 | if(((PIND & (1<<3)) == (1<<3))&&p!=3){ //if PD3 high...
|
16 | p=4;
|
17 | }
|
18 |
|
19 | if(p==1){
|
20 | x++;
|
21 | }
|
22 | if(p==2){
|
23 | x--;
|
24 | }
|
25 | if(p==3){
|
26 | y++;
|
27 | }
|
28 | if(p==4){
|
29 | y--;
|
30 | }
|
Aus irgendeinem Grund resultiert das immer in "y++" bzw. "p=3" - so, als
sei PD2 immer HIGH.
Hat jemand eine Idee weshalb es dazu kommt?
Würde mich freuen, wenn mir jemand weiterhelfen könnte.
Ich habe das Snake-Programm mal auf einen steuerbaren Punkt herunter
gebrochen und in den Anhang gepackt - das Problem existiert nach wie vor
– der Punkt bewegt sich auf der Matrix immer in Richtung y++ und lässt
sich nicht steuern.
Gruß