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#");
}