Hallo Community, ich bräuchte dringend mal eure Hilfe zur Entwicklung eines Programms mit C. Ich soll für mein Studium eine 3x4 Matrix-Tastaurabfrage programmieren. Wir verwenden das miniModul-537. Leider ist mein Wissen und der Gebrauch von C schon etwas länger her, sodass nur noch wesentliche Grundlagen bekannt sind. Der Prof meinte zwar, diese sind ausreichend, jedoch komme ich nicht wirklich weiter. Bekannt ist, das es 3 Eingabe und 4 Ausgabeports gibt. Die Grundlegende Struktur besteht nun darin zuerst jede der 3 Spalten abzufragen, ob sich dort eine gedrückte taste befindet, und falls ja, anschließend die einzelnen Zeilen abzufragen um die genaue Lage und somit die taste zu ermitteln. Bisher ist es mir nur gelungen die Abfrage jeder einzelnen Taste zu bilden. Die oben genannte Struktur ist klar, jedoch fehlt mir die Kenntnis, diese in C umzusetzen. Es wäre super wenn mir jemand dabei helfen könnte. Vielen Dank für eure Hilfe im Voraus ! /* FLASH.C - LED Flasher for Phytecs Rapid Development Kits */ #include <reg517.h> /* include 80517 header file */ //#include <stdio.h> /* Standard I/O functions */ //#include "serinit.h" /* Automatic baudrate detection */ // Port4.0 = Spalte 1 // Port4.1 = Spalte 2 // Port4.2 = Spalte 3 // Port4.3 = Zeile 1 // Port4.4 = Zeile 2 // Port4.5 = Zeile 3 // Port4.6 = Zeile 4 //mainprogram sbit Spalte1 = P4^0; sbit Spalte2 = P4^1; sbit Spalte3 = P4^2; sbit Zeile1 = P4^3; sbit Zeile2 = P4^4; sbit Zeile3 = P4^5; sbit Zeile4 = P4^6; void wait (void) { /* wait function */ ; /* only to delay for LED flashes */ } void main (void) { unsigned int i; /* delay var */ while (1) { /* loop forever */ Zeile1=1; Zeile2=1; Zeile3=1; Zeile4=1; //Spalte1=0; //Spalte2=0; //Spalte3=0; if(Spalte1==0 || Spalte2==0 || Spalte3==0){ if(Spalte1==0 && Zeile1==0) printf ("Taste1"); if(Spalte2==0 && Zeile1==0) printf ("Taste2"); if(Spalte3==0 && Zeile1==0) printf ("Taste3"); if(Spalte1==0 && Zeile2==0) printf ("Taste4"); if(Spalte2==0 && Zeile2==0) printf ("Taste5"); if(Spalte3==0 && Zeile2==0) printf ("Taste6"); if(Spalte1==0 && Zeile3==0) printf ("Taste7"); if(Spalte2==0 && Zeile3==0) printf ("Taste8"); if(Spalte3==0 && Zeile3==0) printf ("Taste9"); if(Spalte1==0 && Zeile4==0) printf ("Taste*"); if(Spalte2==0 && Zeile4==0) printf ("Taste0"); if(Spalte3==0 && Zeile4==0) printf ("Taste#"); }
1. Code heißt *.c und nicht *.txt 2. Code einfügen siehe unter "Formatierung". Man wie die Zeit vergeht. Beitrag "Re: 3x4 tastenmatrix auslesen ..auf ein neues"
Danke zunächst für die rasche Antwort. Den Quellcode habe ich nur ebend aus dem Programm in eine .txt kopiert damit man ihn sich besser laden kann. Der unter dem Link aufgeführte Code ist für das MiniModul 537 und dem damit verbundenem 8-Bit Controller Infineon SAB 80C537 verwendbar ? Viele Grüße
Peter D. schrieb: > 2. Code einfügen siehe unter "Formatierung".
1 | /* FLASH.C - LED Flasher for Phytecs Rapid Development Kits */
|
2 | |
3 | #include <reg517.h> /* include 80517 header file */ |
4 | //#include <stdio.h> /* Standard I/O functions */
|
5 | //#include "serinit.h" /* Automatic baudrate detection */
|
6 | |
7 | // Port4.0 = Spalte 1
|
8 | // Port4.1 = Spalte 2
|
9 | // Port4.2 = Spalte 3
|
10 | |
11 | // Port4.3 = Zeile 1
|
12 | // Port4.4 = Zeile 2
|
13 | // Port4.5 = Zeile 3
|
14 | // Port4.6 = Zeile 4
|
15 | //mainprogram
|
16 | |
17 | sbit Spalte1 = P4^0; |
18 | sbit Spalte2 = P4^1; |
19 | sbit Spalte3 = P4^2; |
20 | sbit Zeile1 = P4^3; |
21 | sbit Zeile2 = P4^4; |
22 | sbit Zeile3 = P4^5; |
23 | sbit Zeile4 = P4^6; |
24 | |
25 | void wait (void) { /* wait function */ |
26 | ; /* only to delay for LED flashes */ |
27 | }
|
28 | |
29 | void main (void) { |
30 | unsigned int i; /* delay var */ |
31 | |
32 | |
33 | while (1) { /* loop forever */ |
34 | |
35 | Zeile1=1; |
36 | Zeile2=1; |
37 | Zeile3=1; |
38 | Zeile4=1; |
39 | //Spalte1=0;
|
40 | //Spalte2=0;
|
41 | //Spalte3=0;
|
42 | |
43 | if(Spalte1==0 || Spalte2==0 || Spalte3==0){ |
44 | |
45 | if(Spalte1==0 && Zeile1==0) |
46 | printf ("Taste1"); |
47 | |
48 | if(Spalte2==0 && Zeile1==0) |
49 | printf ("Taste2"); |
50 | |
51 | if(Spalte3==0 && Zeile1==0) |
52 | printf ("Taste3"); |
53 | |
54 | if(Spalte1==0 && Zeile2==0) |
55 | printf ("Taste4"); |
56 | |
57 | if(Spalte2==0 && Zeile2==0) |
58 | printf ("Taste5"); |
59 | |
60 | if(Spalte3==0 && Zeile2==0) |
61 | printf ("Taste6"); |
62 | |
63 | if(Spalte1==0 && Zeile3==0) |
64 | printf ("Taste7"); |
65 | |
66 | if(Spalte2==0 && Zeile3==0) |
67 | printf ("Taste8"); |
68 | |
69 | if(Spalte3==0 && Zeile3==0) |
70 | printf ("Taste9"); |
71 | |
72 | if(Spalte1==0 && Zeile4==0) |
73 | printf ("Taste*"); |
74 | |
75 | |
76 | if(Spalte2==0 && Zeile4==0) |
77 | printf ("Taste0"); |
78 | |
79 | |
80 | if(Spalte3==0 && Zeile4==0) |
81 | printf ("Taste#"); |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | }
|
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.