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
Gast
#5769575
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...
Gast
#5769618
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
Hergen C. schrieb: > ArmKEIL Wohl kaum, das ist nämlich kein arm mikrocontroller.
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.
Gast
#5769698
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.
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.
Gast
#5769772
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...
Gast
#5769793
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.
Gast
#5769803
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.
Gast
#5769823
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].
Gast
#5769828
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.
Gast
#5769834
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
Gast
#5769919
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
