PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programmierung eines Reaktionstesters in ABEL



CrunK
26.06.2007, 15:46
Hallo,
da ich ein unerfahrerner programmierer bin
und jüngst mit einer aufgabe konfrontiert wurde
der ich leider nur annähernd gewachsen bin
erhoffe ich mir durch die grenzenlose erfrahrung der community mitglieder
einen schritt weiter zu kommen! :-)
ich freue mich über jeden hilfreichen und gut gemeinten beitrag der mir evtl. weiter hilft!
vielen dank im vorraus an alle helfenden hände :-)

Aufgabe)
Es soll der proggramierbare Baustein ispLSI-1016E eingesetzt werden,
es soll ein Reaktionstester-Spiel entwickelt werden.
Dies ist mit dem Programm ispLEVER Project Navigator in ABEL Sprache zu realisieren. Es sind 3 verschiedene Stufen zu programmieren.

1 Stufe)
Es gibt zwei Mitspieler mit jeweils einer Taste. Ein Helfer gibt ein Zeichen
zum Start, worauf die Mitspieler versuchen, so schnell wie möglich ihr taste
zu drücken. Der Schnellere hat gewonnen, es leuchtet eine LED bei der Siegertaste.

2 Stufe)
Der Helfer betätigt einen Start-Schalter und das Gerät zeigt nun zusätzlich
zu Sieger-LED die Zeit an, die der schnellere Spieler für seine Reaktíon benötigt.

3 Stufe)
Der Helfer wird durch einen Zufallsgenerator ersetzt. Nach Betätigen des
Start-Schalters leuchtet verzögert eine LED, worauf die Mitspieler ihre Taste
drücken, die Zeit des schnellern Mitspielers wird angezeit.

PS: Die verwendete Prgrammiersprache soll ABEL sein!
Verwendetes Programm ispLEVER Project Navigator!
ich verlange keineswegs eine komplett lösung oder desgleichen,
es helfen schon tipps und tricks!

Thanks :-)

CrunK
26.06.2007, 16:25
Anhang:
das is die bis jetzt programmierte datei in ABEL-Sprache von mir
dass problem sie funktioniert nich so wie gewünscht :-(
wenn jemand vll. den/die fehler entdecken würde..
..wäre ich sehr erfreut über eine nachricht! :-)


ABEL-Programmierung:

MODULE rktester2
TITLE 'rktester2'
declarations
"LED1 bekommt den pin 3"
"LED2 bekommt den pin 10"
l1, l2 pin 3,10 istype 'buffer,reg';
bit7..bit0 node istype 'buffer,reg';
a1,b1,c1,d1,e1,f1,g1 pin 38,37,40,41,42,43,44 istype 'buffer,com';
a2,b2,c2,d2,e2,f2,g2 pin 4,3,6,7,8,9,10 istype 'buffer,com';
takt pin 11;
"Taster1 bekommt den pin 15"
t1 pin 15 istype 'buffer,reg';
"Taster2 bekommt den pin 17"
t2 pin 17 istype 'buffer,reg';
start pin 16;
einer = [bit3..bit0];
zehner = [bit7..bit4];

equations

"wenn Taster1 gedrückt, soll LED1 leuchten"
when t1 == 1
then l1 = 1;
else l2 = 0;
"wenn Taster2 gedrückt, soll LED2 leuchten"
when t2 == 1
then l2 = 1;
else l1 = 0;

einer.clk=takt;
zehner.clk=takt;
when (einer==9)
then{ einer := 0;
when(zehner == 6)
then zehner := 0;
else zehner := zehner + 1;
}
else {
einer := einer +1;
zehner := zehner;
}

truth_table
(einer -> [a1,b1,c1,d1,e1,f1,g1]);
0 -> [1, 1, 1, 1, 1, 1, 0 ];
1 -> [0, 1, 1, 0, 0, 0, 0 ];
2 -> [1, 1, 0, 1, 1, 0, 1 ];
3 -> [1, 1, 1, 1, 0, 0, 1 ];
4 -> [0, 1, 1, 0, 0, 1, 1 ];
5 -> [1, 0, 1, 1, 0, 1, 1 ];
6 -> [1, 0, 1, 1, 1, 1, 1 ];
7 -> [1, 1, 1, 0, 0, 0, 0 ];
8 -> [1, 1, 1, 1, 1, 1, 1 ];
9 -> [1, 1, 1, 0, 0, 1, 1 ];
truth_table
(zehner -> [a2,b2,c2,d2,e2,f2,g2]);
0 -> [0, 0, 0, 0, 0, 0, 0 ];
1 -> [0, 1, 1, 0, 0, 0, 0 ];
2 -> [1, 1, 0, 1, 1, 0, 1 ];
3 -> [1, 1, 1, 1, 0, 0, 1 ];
4 -> [0, 1, 1, 0, 0, 1, 1 ];
5 -> [1, 0, 1, 1, 0, 1, 1 ];
6 -> [1, 0, 1, 1, 1, 1, 1 ];
END

--> dies sind die fehler meldungen die auftreten beim checken der programmierung..

Syntax Error 1108:
In "rktester2.abl":Clock input is missing for registered signal l1.
Syntax Error 1108: In "rktester2.abl":Clock input is missing for registered signal l2.


--> Thanks im vorraus :-)

peter2
07.03.2008, 21:34
Hallo,
1. das hier ist kein Hausaufgaben mach Forum. Man muss schon eigeninitaive zeigen dann wird ein geholfen. (Im zweifel auch mal bei HAs)

Zu deinen Quellcode:
Der fehler steht ja eigentlich schon im Klartext da:
die FF l1 und l2 haben kein CLK Signal
Wobei ich mich frage warum du die Eingänge für die Taster überhaupt als FF ausgeführt hast. Kannst du mal kurz erläutern welchen hintergedankend as ganze hatte?

Achso und noch einen genrellen Tip kann man geben: Bei Fehler die der Compiler erzeugt immer beim ersten Fehler Anfangen nicht beim letzten.
Gruß
Peter

sparky
07.03.2008, 22:36
Leichengräber ;)

peter2
08.03.2008, 01:20
Hallo,
habe garnet aufs Datum geachtet das Logik forum schein ja etwas überbevölkert zu sein :-).
Gruß
peter