Moin, ich muss eine Aufgabe bewältigen und bin zu unerfahren in der Programmierung. Es ist ein lauffähiges Programm zu entwickeln, das in einer Endlosschleife den Wert einer Hexadezimalziffer im Dualcode mit den Bitstellen 2^0, 2^1, 2^3 im Wertebereich 0,1,2,...E,F über die Tastatur des PC's einliest, diesen in einen 7-Segment-Code mit den Leuchtbalken a,b,c,d,e,f und g umwandelt und dann wieder ausgibt. Randbedingungen: Ausgabe des 7-Segment-Codes auf den acht niederwertigen Bitstellen von Port 3 (P30...P37) Leuchtbalken mit gemeinsamer Anode, low-aktiv. Folgender Anfang ist gegeben: #include <stdio.h> /* standard I/O .h-file */ #include <reg167.h> /* special function register XC167 */ 10000,-10000,-14257,333,25345,32146}; void main (void) { /* initialize the serial interface */ #ifndef MCB167 /* do not initialize if you use Monitor-166*/ P3 |= 0x0400; /* set port 3.10 output latch (txd) */ DP3 |= 0x0400; /* set port 3.10 direction control (txd output)*/ DP3 &= 0xF7FF; /* reset port 3.11 direction control (rxd input)*/ S0TIC = 0x80; /* set transmit interrupt flag */ S0TIC = 0x00; /* delete receive interrupt flag */ S0BG = 0x40; /* set baudrate to 9600 BAUD */ S0CON = 0x8011; /* set serial mode */ #endif ... } Entwicklungsumgebung ArmKEIL Über Hilfe wäre ich sehr dankbar (Vorgehensweise, Tipps...) Datenblatt ist natürlich vorhanden
Dann zeig doch mal wie du die Tastatur mit dem controller verbunden hast. ;-) Dann reden wir weiter Thomas
Die Aufgabe ist rein theoretisch. Habe keinerlei Hardware...
Hergen C. schrieb: > Die Hergen C. schrieb: > Die Aufgabe ist rein theoretisch. Habe keinerlei Hardware... Heißt übersetzt: Ich habe keine Ahnung und kann nicht mal die Aufgabe richtig formulieren. Macht das mal für mich, damit ich beim Prof glänzen kann. Thomas
Die Aufgabe ist genauso formuliert (das habe ich mir nicht ausgedacht). Und ja, ich kann mit den beigestellten Lernheften diese Aufgabe nicht bewältigen/lösen (habe, wie bereits gesagt, zu wenig Kenntnisse).
Claus M. schrieb: > Hergen C. schrieb: >> ArmKEIL > > Wohl kaum, das ist nämlich kein arm mikrocontroller. Soll laut Aufgabe mit der C166 Entwicklungsumgebung armKEIL getestet werden.
OK wenn das so ist überleg dir mal wie die Tastatureingaben in den Mikrocontroller kommen. Claus M. schrieb: > Wohl kaum, das ist nämlich kein arm mikrocontroller. Keil macht auch Compiler für C167 controller. Thomas
Hergen C. schrieb: > Die Aufgabe ist genauso formuliert (das habe ich mir nicht ausgedacht). > Und ja, ich kann mit den beigestellten Lernheften diese Aufgabe nicht > bewältigen/lösen (habe, wie bereits gesagt, zu wenig Kenntnisse). In der Praxis kommt so was häufiger vor als gedacht, dann muss man mit dem Kunden reden und ihm aus der Nase ziehen, was er erreichen möchte und macht dann wieder weiter. Grundsätzlich würde ich sagen: Serielle Schnittstelle an das Ding ran, die einlesen und dann entsprechend ausgeben. Fertig. PS: Mit rein theoretischen Aufgaben habe ich bei Profs auch so meine Erfahrungen gemacht: 0 Punkte in der Prüfung nach der Korrektur. Als ich dann dem Prof 1 Stunde erklärt habe, wie das Programm funktioniert und warum dies ganz anders als in seiner Vorlesung war, alle Punkte. War aber etwas nervenaufreibend, ihn dazu zu bringen überhaupt einmal zuzuhören.
:
Bearbeitet durch User
Thomas schrieb: > OK wenn das so ist überleg dir mal wie die Tastatureingaben in den > Mikrocontroller kommen. Durch eine Abfrageschleife und einer Matrix, in der Zeilen und Spalten abgefragt werden. Die Spaltenleitungen geben dann an pull-up oder pull-down Widerständen angeschlossen (je nachdem - in diesem Fall soll das Ganze ja low-aktiv sein). So habe ich das erst einmal verstanden. Korrgier mich wenn das falsch ist.
Hergen C. schrieb: > Durch eine Abfrageschleife und einer Matrix, in der Zeilen und Spalten > abgefragt werden. Die Spaltenleitungen geben dann an pull-up oder > pull-down Widerständen angeschlossen (je nachdem - in diesem Fall soll > das Ganze ja low-aktiv sein). > So habe ich das erst einmal verstanden. Korrgier mich wenn das falsch > ist. Ja so baut man eine Tastatur. Nur hast du ja gar keine Tastatur am controller angeschlossen....(Deine Worte) Also lies noch mal genau die Aufgabenstellung... Steht da wirklich Tastatur oder vielleicht eher was über eine serielle Schnittstelle? Thomas
Thomas schrieb: > Hergen C. schrieb: >> Durch eine Abfrageschleife und einer Matrix, in der Zeilen und Spalten >> abgefragt werden. Die Spaltenleitungen geben dann an pull-up oder >> pull-down Widerständen angeschlossen (je nachdem - in diesem Fall soll >> das Ganze ja low-aktiv sein). >> So habe ich das erst einmal verstanden. Korrgier mich wenn das falsch >> ist. > > Ja so baut man eine Tastatur. Nur hast du ja gar keine Tastatur am > controller angeschlossen....(Deine Worte) > Also lies noch mal genau die Aufgabenstellung... Steht da wirklich > Tastatur oder vielleicht eher was über eine serielle Schnittstelle? > > Thomas Also eigentlich steht das da für mich eindeutig: ....Wert einer Hexadezimalziffer im Dualcode mit den Bitstellen 2^0, 2^1, 2^3 im Wertebereich 0,1,2,...E,F über die Tastatur des PC's einliest, diesen in einen 7-Segment-Code mit den Leuchtbalken a,b,c,d,e,f und g umwandelt und dann wieder ausgibt. Aber da anscheinend die Aufgabe etwas "verwirrend" ist würde ich bei der Uni nochmals nachhaken ob das alles seine Richtigkeit hat...
Hergen C. schrieb: > den Wert einer Hexadezimalziffer im Dualcode mit den > Bitstellen 2^0, 2^1, 2^3 im Wertebereich 0,1,2,...E,F über die Tastatur > des PC's einliest Ohne 2^2 wird das schwer.
Nun statt nachzufragen will ich dich dazu bringen nachzudenken... Weil dann lernst du was bei der Aufgabe. Die ist ja klassisch nach EVA aufgebaut. Sowas programmieren Lehrlinge im ersten Lehrjahr oder nach den ersten Stunden Info an der Schule. Thomas
nachtmix schrieb: > Hergen C. schrieb: >> den Wert einer Hexadezimalziffer im Dualcode mit den >> Bitstellen 2^0, 2^1, 2^3 im Wertebereich 0,1,2,...E,F über die Tastatur >> des PC's einliest > > Ohne 2^2 wird das schwer. Natürlich mit 2^2 - mein Tippfehler.
Eingelesen werden hex-Werte von 0 bis F. Ausgegeben wird ein Bitmuster für die Segmente mit den Leuchtbalken a,b,c,d,e,f und g. 0. Ein Array mit 16 Elementen wird vorbesetzt mit dem Bitmuster für die Segmente a,b,c,d,e,f und g. 1. Nur die Tasten 0 .. F werden als Eingabe akzeptiert. 2. Die Tasteneingaben 0 .. F werden in Ziffern 0 .. 15 umgewandelt und in I gespeichert. 3. Ausgegeben wird dann das Bitmuster ARRAY[I].
Dazwischen kann man natürlich auch noch eine Umwandlung in den Binärcode einfügen, z.B. als Punkt 2b. Dafür gibt es geeignete verfahren, einfach mal suchen. Das dürfte aber bei dieser Aufgabenstellung schon vermittelt worden sein.
Bernadette schrieb: > Eingelesen werden hex-Werte von 0 bis F. > > Ausgegeben wird ein Bitmuster für die Segmente mit den Leuchtbalken > a,b,c,d,e,f und g. > > 0. Ein Array mit 16 Elementen wird vorbesetzt mit dem Bitmuster für die > Segmente a,b,c,d,e,f und g. > > 1. Nur die Tasten 0 .. F werden als Eingabe akzeptiert. > 2. Die Tasteneingaben 0 .. F werden in Ziffern 0 .. 15 umgewandelt und > in I gespeichert. > 3. Ausgegeben wird dann das Bitmuster ARRAY[I]. Dafür gibts nur die halbe Punktzahl. Weil nach Aufgabenstellung soll nur 0 und 1ausgewertet werden und die Hexzahl aus Binär Werten gebaut werden. Thomas
Hergen C. schrieb: > über die Tastatur des PC's einliest Hergen C. schrieb: >> Ja so baut man eine Tastatur. Nur hast du ja gar keine Tastatur am >> controller angeschlossen....(Deine Worte) >> Also lies noch mal genau die Aufgabenstellung... Steht da wirklich >> Tastatur oder vielleicht eher was über eine serielle Schnittstelle? >> >> Thomas > > Also eigentlich steht das da für mich eindeutig: Da steht von der Tastatur des PCs. Sie hängt also am PC. Ansonsten wäre es die Tastatur des Prozessors. Wenn die Tastatur am PC hängt, müssen die Tastendrücke irgendwie an den Prozessor übertragen werden. Also über eine Schnittstelle zwischen PC und Prozessor. Da letzterer virtuell ist, musst Du erst herausfinden, wie Du in Deinem Simulator Tastendrücke an den Prozessor überträgst.
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.