Hallo liebe Elektronik Freunde,
ich bin absoluter Neuling in Sachen elektronik, Wenns um das Verständnis
von Grundlagen geht stöß ich schon auf meine Grenzen,
es geht um das Programmieren eines Mikrocontrollers der Familie 80C517A
von Siemens. ich weiß dass die maschine binär arbeitet, wir haben den
Fall dass wir mit hexadezimaldarstellung also mit einem 16 bit rechner
arbeiten. Wenn ich mir aber so meine Klausuraufgaben anschaue, fehlt mir
jeglicher ansatz. Die Aufgabenstellung jeder Klausur ist dieselbe, es
wird nur ein anderes Beispiel abverlangt
Zwei Beispiel:
1)Realisieren Sie eine Zeitüberwachung für ein Uhrenpendel. Das
Uhrenpendel hat einen Sollfrequenz von einem Hertz.Geben Sie den Fehler
über die serielle Schnittstelle aus
a) Erstellen Sie einen Anschlussplan an den 80C517A
b) Schreiben Sie einen Struktogramm für diese Aufgabe
c) Schreiben Sie einen Prorgamm für den 80C517A
2.) Realisieren Sie einen Tankfüllmessgerät. Pro dm Höhe(Länge) erhöht
sich die Spannung um 0,5 V. Der Durchmesser beträgt 20 dm. Geben Sie die
Füllmenge in Liter als BCD Wert aus.Hinweis: V = D(quadrat)*pi/4*h
a) Erstellen Sie einen Anschlussplan mit Messaufbau an den 80C517A
b) Schreiben Sie einen Struktogramm für diese Aufgabe
c) Schreiben Sie einen Prorgamm für den 80C517A
Ich habe wirklich absolut kein Schimmer wie ich die a)-c) lösen soll.
Könnt mir z.B. sagen wie ich bei a) überhaupt vorgehen muss. ich weiß,
dass ich irgendwie ein Multiplexer/Demultiplexer habe der Steuereingänge
hat, Irgendwie habe ich einen taktflnkengesteuerten D_Flipflop zum
speichern der einzelnen Bits, also des high und Low pegels. ich weiß im
Prinzip gar nicht wie ich dazu noch ein Programm schreiben soll
Ich kenne mich mit den Assembler Befehlssatz zumidest aus
Vielen dank für eure Hilfe
Das hier ist kein Hausaufgaben- und auch kein "Ich habe im Unterricht
lieber {mein Smartphone massiert|die schönen Schnecke aus der dritten
Reihe angehimmelt|gefehlt|Zeitung gelesen} - jetzt muss mir jemand ganz
dringend helfen !!111eineinself"-Forum.
Klingt vielleicht hart, ist es sicherlich auch, aber wenn Dir in einer
Klausur tatsächlich komplett unlösbare Aufgaben gestellt werden, dann
können die Deine Mitschüler auch nicht lösen und der zuständige Lehrer
bekommt Ärger.
Solltest aber nur Du Probleme mit dem Verständnis haben, gibt es
etwas, was Dich von Deinen Mitschülern unterscheidet. Na?
Elektronik_Neuling schrieb:> wir haben den> Fall dass wir mit hexadezimaldarstellung also mit einem 16 bit rechner> arbeiten.
Nö. Der 80C517 ist eine 8-bit Maschine wie alle MCS51 Derivate.
Mir scheint, du hast allerdings so gut wie nicht aufgepasst, denn diese
Fragen sind ja nicht vom Himmel gefallen. Als Tipp: Du wirst einen Timer
benötigen, einen genauen Taktoszillator und ein wenig Rechnerei, um
Aufgabe 1 zu lösen.
Du wirst dich also mit der Onchip Peripherie des 80C517 beschäftigen
müssen. AD Wandler und Timer vor allem.
Ansonsten gilt hier
Beitrag "Einheitlicher Umgang mit faulen Schülern etc.?"
@ Elektronik_Neuling (Gast)
>es geht um das Programmieren eines Mikrocontrollers der Familie 80C517A>von Siemens.
Einer der Dutzenden 8051 Kopien.
> ich weiß dass die maschine binär arbeitet, wir haben den>Fall dass wir mit hexadezimaldarstellung also mit einem 16 bit rechner>arbeiten.
???
> Wenn ich mir aber so meine Klausuraufgaben anschaue, fehlt mir>jeglicher ansatz.
Schlecht.
>1)Realisieren Sie eine Zeitüberwachung für ein Uhrenpendel. Das>Uhrenpendel hat einen Sollfrequenz von einem Hertz.Geben Sie den Fehler>über die serielle Schnittstelle aus>a) Erstellen Sie einen Anschlussplan an den 80C517A>b) Schreiben Sie einen Struktogramm für diese Aufgabe>c) Schreiben Sie einen Prorgamm für den 80C517A
Hier soll die Periodendauer des Pendels gemessen werden. Dazu hat man
wahrscheinlich einen Sensor, der beim Durchschwingen einen digitalen
Puls ausgibt. Wie der genau funktioniert ist nebensächlich, du sollst
die Auswertung programmieren. Zeiten misst man mit einem Timer. Wenn es
besonders genau sein soll, mit der Capture Compare Einheit, die fast
alle Controller haben. Wenn also ein Capture-Ereignis erkannt wird, kann
man das per Polling oder Interrupt feststellen. Dann liest man den
gespeicherten Zeitstempel aus und bildet die Differenz zum vorherigen
Zeitstempel. Das ist dann die Periodendauer. Die kann man dann per UART
ausgeben. Für den Anfang reicht Polling, das ist einfacher. Das sollte
als Ansatz genügen.
>2.) Realisieren Sie einen Tankfüllmessgerät. Pro dm Höhe(Länge) erhöht>sich die Spannung um 0,5 V. Der Durchmesser beträgt 20 dm. Geben Sie die>Füllmenge in Liter als BCD Wert aus.Hinweis: V = D(quadrat)*pi/4*h
Was nettes mit dem ADC.
>a) Erstellen Sie einen Anschlussplan mit Messaufbau an den 80C517A>b) Schreiben Sie einen Struktogramm für diese Aufgabe>c) Schreiben Sie einen Prorgamm für den 80C517A
ADC einlesen, in Volumen umrechnen und auf dem Terminal (UART) oder LCD
ausgeben. Siehe auch Festkommaarithmetik.
>Ich habe wirklich absolut kein Schimmer wie ich die a)-c) lösen soll.
Dann hast du die ganze Zeit im Unterricht gepennt.
>Könnt mir z.B. sagen wie ich bei a) überhaupt vorgehen muss. ich weiß,>dass ich irgendwie ein Multiplexer/Demultiplexer habe der Steuereingänge>hat, Irgendwie habe ich einen taktflnkengesteuerten D_Flipflop zum>speichern der einzelnen Bits, also des high und Low pegels.
Nö. Wenn gleich viel von dem Kram im uC drinsteckt, muss dich das als
Programmierer keine Sekunde interessieren. Du willst programmieren,
nicht den uC nachbauen.
> ich weiß im>Prinzip gar nicht wie ich dazu noch ein Programm schreiben soll
Schon wieder gepennt? Oder Kreide holen gewesen?
>Ich kenne mich mit den Assembler Befehlssatz zumidest aus
Na dann leg mal los. Aber die Befehle kommen am Schluß. Arebite die
Aufgabe in der Reihenfolge ab, wie virgegeben, dass passt schon.
Rufus Τ. F. schrieb:> Klingt vielleicht hart, ist es sicherlich auch, aber wenn Dir in einer> Klausur tatsächlich komplett unlösbare Aufgaben gestellt werden, dann> können die Deine Mitschüler auch nicht lösen und der zuständige Lehrer> bekommt Ärger.
Absolut richtig. Laß es darauf ankommen. Wenn alle Anderen auch krachen
gehen, dann ist derjenige, der das Rüstzeug hätte erklären sollen, ein
Stümper. Diese Formulierungen lassen auch darauf schließen:
Elektronik_Neuling schrieb:> a) Erstellen Sie einen Anschlussplan mit Messaufbau an den 80C517A> b) Schreiben Sie einen Struktogramm für diese Aufgabe> c) Schreiben Sie einen Prorgamm für den 80C517A
Kurz nach der sog. Wende mußte ich auf diese Weise auch einmal einen
Knilch, der sich Dozent nannte, "abschießen".
MfG Paul
@ Paul Baumann (paul_baumann)
>Stümper. Diese Formulierungen lassen auch darauf schließen:
Wieso?
>> a) Erstellen Sie einen Anschlussplan mit Messaufbau an den 80C517A>> b) Schreiben Sie einen Struktogramm für diese Aufgabe>> c) Schreiben Sie einen Prorgamm für den 80C517A
Was ist daran zu beanstanden? Eine ganz normale Textaufgabe, bei der
halt nicht alles vorgekaut ist.
Ich konnte den Unterricht wegen deppressiven Störungen nicht besuchen,
und zweitens möchte ich nur ein Ansatz/eine kleine Hilfe wie ich bei
solchen Aufgaben vorgehen muss und keine ausgearbeitete Lösung der
Aufgabe um gottes willen. Davon habe ich absolut gar nichts und das
schadet mir.
Ich weiß z.b. nicht wie ich bei der Erstellung des Anschlussplans an den
Messaufbau mit Berücksichtigung der Pinbelegung vorgehen muss und
verstehe denn sinn und zweck eines Sprungbefehls und eines
Unterprogramms nicht. Ich bedanke mich ganz herzlich für diejenigen die
mich bei meiner Anfrage verstanden haben.
MFG
Elektronik_Neuling
@Adem Bektas (elektronik_neuling)
>Ich konnte den Unterricht wegen deppressiven Störungen nicht besuchen,
Wenn das wirklich stimmt, fehlt dir ein Jahr Unterricht. Das kann man
nicht einfach mal so nachholen oder gar mit ein bischen Hausaufgaben und
Übung ersetzen.
>und zweitens möchte ich nur ein Ansatz/eine kleine Hilfe wie ich bei>solchen Aufgaben vorgehen muss und keine ausgearbeitete Lösung
OK.
>Ich weiß z.b. nicht wie ich bei der Erstellung des Anschlussplans an den>Messaufbau mit Berücksichtigung der Pinbelegung vorgehen muss
Nun, man muss die Signale dort anschließen, wo man sie sinnvoll
verarbeiten kann. Den digitalen Sensor für die Pendelmessung muss man
dort anschließen, wo auch die Input Capture Funktion beim deinem
Mikrocontroller eingebaut ist. Das gleiche gilt für den AD-Wandler
Eingang.
> und>verstehe denn sinn und zweck eines Sprungbefehls und eines>Unterprogramms nicht.
Uffff! Wenn dir DERMAßEN Grundlagen fehlen, dann darfst du diese
Aufgabenstellungen hier vorerst vergessen. Dann musst du erstmal das
kleine 1x2 des Programmierens lernen. Fang mit "Hello World" an.
@ Paul Baumann (paul_baumann)
>> Was ist daran zu beanstanden?>> Schreiben Sie einen Struktogramm>> Schreiben Sie einen Prorgamm
Das sind Tippfehler vom OP, eher nicht vom Dozenten. Ausserdem sind wie
hier nicht bei den Germanisten, wenn gleich mehrheitlich bei den
Germanen ;-)
Adem B. schrieb:> möchte ich nur ein Ansatz/eine kleine Hilfe wie ich bei solchen> Aufgaben vorgehen muss und keine ausgearbeitete Lösung der Aufgabe um> gottes willen. Davon habe ich absolut gar nichts und das schadet mir.
Dann stelle bitte genauer dar, woran es hapert bzw. wo genau Deine
fehlstundenbedingten Wissenslücken sind. Das Ausgangsposting klang
nämlich für mich schon eher nach "Ich weiss so gut wie nix und brauche
Lösung für Problem 1 a-c und 2 a-c. Und wenn ich schon am rant-en bin:
Ein aussagekräftiges Subject ("Wichtige Anfrage" ist das Gegenteil
davon) erhöht die Wahrscheinlichkeit für zielführende Antworten.
> Ich weiß z.b. nicht wie ich bei der Erstellung des Anschlussplans an> den Messaufbau mit Berücksichtigung der Pinbelegung vorgehen muss
Ohne den Siemes-Controller zu kennen: Du musst die Pins zweckmässig
bewschalten. Beispielsweise ist es sinnvoll, an den Pins für die
Spannungsversorgung die Versorgungsspannung anzuschliessen, an den
Taktpins deine Taktversorgung, an Eingänge deinen Sensor etc.
> und verstehe denn sinn und zweck eines Sprungbefehls und eines> Unterprogramms nicht.
Naja, Sprungbefehle sind schon nützlich, beispielsweise hast Du
einen Sensor, dessen Messwert mit einem Grenzwert verglichen wird,
wenn der überschritten ist, dann soll eine rote Lampe leuchten.
Dazu gibt es zum Beispiel einen bedingten Sprungbefehl, nennen wir
ihn SPRINGGRÖ, der springt, wenn der Vergleichswert grösser als
die Vorgabe ist. Das Programm könnte dann so aussehen:
PROGRAMMBEGINN:
LAMPEAUS;
LESE Sensorwert ins Arbeitsregister ein
SPRINGGRÖ Grenzwert 'LAMPEEIN'
SPRINGE 'PROGRAMMBEGINN'
PROGRAMMENDE!
LAMPEEIN:
PINEINSCHALT Pin_an_Lampe;
RETURN;
Das ist zwar unelegant (die Lampe ist immer ausgeschaltet und wird
nur kurz durch das Unterprogramm eingeschaltet), funktioniert aber
prinzipiell. Mit einem DELAY im Unterprogramm wird es schon ein
bisschen besser. Etc...
MfG, MdB
Falk B. schrieb:> Das sind Tippfehler vom OP, eher nicht vom Dozenten.
So? Na dann schreib doch mal ein Struktogramm...
Adem B. schrieb:> Ich konnte den Unterricht wegen deppressiven Störungen nicht besuchen
Was ne blöde Ausrede! Dann laß Dir halt ein Jahr zusätzlich geben und
mach das nochmal. Bei ernsthaften gesundheitlichen Gründen genehmigt das
die HS auch, ansonsten liegts wohl an Dir.
Falk B. schrieb:> Wie der genau funktioniert ist nebensächlich, du sollst> die Auswertung programmieren.
Zumindest fehlt schonmal die Info, ob der Sensor 1 (maximaler Ausschlag)
oder 2 (Nulldurchgang) Impulse pro Periode liefert. Für die Bestimmung
der Gangabweichung nicht ganz unerheblich. Und so eine typische beliebte
Falle, wo der Prof dann "Ätsch, daran hast Du nicht gedacht. Sechs,
setzen." sagen kann.
Standardliteratur für 8051-er ist das "Mikrocontroller-Kochbuch" von
Andreas Roth.
Die Aufgaben sind nicht so, dass man sie aus dem Stehgreif bearbeiten
könnte, nur weil man mal was über Bin und Hex gehört hat.
Den enstsprechenden Controller mit Beispielanwendungen und Peripherie
werdet ihr sicher eine Zeitlang durchgekaut haben.
Elektronik_Neuling schrieb:> ich bin absoluter Neuling in Sachen elektronik, Wenns um das Verständnis> von Grundlagen geht stöß ich schon auf meine Grenzen,
Ohne Grundlagen geht gar nichts weiter...
Elektronik_Neuling schrieb:> es geht um das Programmieren eines Mikrocontrollers
Na, dann brauchst eigentlich nur programmieren können, obwohl
keine Ahnung von Strom, Spannung, Widerstand - also URI...
Du kannst auch Dein Leben programmieren, obwohl Du die
Grundlagen nicht verstanden hast!
So wird das NICHTS!
Ich bin Analogtechniker, habe mit Programmen nichts am Hut, aber
ich weiß, wie ich mit ein paar Bauteilen etwas funktionelles
zusammenbauen kann, dafür braucht man viele Grundlagen...
Es ist sicher besser, Du wirst Verkäufer, dann kannst Du mangels
Grundlagen irgend einem Trottel etwas aufschwatzen, von dem auch
Du selbst keine Ahnung hast !!!
Such Dir einen anderen Beruf!
Mani
>Es ist sicher besser, Du wirst Verkäufer, dann kannst Du mangels>Grundlagen irgend einem Trottel etwas aufschwatzen, von dem auch>Du selbst keine Ahnung hast !!!
Sonst ist unser Mani W. doch immer der Friedensengel in Person und um
salbungsvolles Geseire nicht verlegen.
Und jetzt pisst du anderen Leuten sogar unter Diffamierung ganzer Berufe
wie z.B. Verkäufer ans Bein?!
Ziemlich erbärmlich für dein sonst zur Schau gestelltes
Selbstverständnis.
Hallo Manni W,
wenn du mit Grundlagen wie Strom, Spannung Widerstand, Sensorik
verstehst, dann hast du mich missverstanden. das habe ich nicht gemeint.
Ich habe mich speziell auf die TTL Logik bezogen. Ich weiß dass ich bei
bestimmten Spannungswerten einen High bzw. Low pegel habe. Aber die
Elektrotechnischen Grundlagen dürften schon drin sein bei mir. Ich habe
mich jetzt auf den Acker gehauen und frische mir mein Assembler
Verständnis auf. Aber ich danke dir für deine tollen Bemerkungen, man
sollte alle Berufe wertschätzen. wenns kein Verkäufer auf der Welt gibt,
dann bekommen wir kein Essen, muss man bedenken. Also aufpassen!
Natürlich ist mein eröffneter Beitrag nicht mit den Norm des Forums
angemessen, in Zukunft werde ich darauf achten.
Vielen Dank für diejenigen dir mir weitergeholfen haben
naja, falk hat dir ja in seinem Beitrag schon die entsprechenden
Hinweise gegeben, wie der Rahmen-Ablauf deiner beiden Aufgaben ist.
Falk B. schrieb:> (Aufgabe 1)> Hier soll die Periodendauer des Pendels gemessen werden. Dazu hat man> wahrscheinlich einen Sensor, der beim Durchschwingen einen digitalen> Puls ausgibt. Wie der genau funktioniert ist nebensächlich, du sollst> die Auswertung programmieren. Zeiten misst man mit einem Timer. Wenn es> besonders genau sein soll, mit der Capture Compare Einheit, die fast> alle Controller haben. Wenn also ein Capture-Ereignis erkannt wird, kann> man das per Polling oder Interrupt feststellen. Dann liest man den> gespeicherten Zeitstempel aus und bildet die Differenz zum vorherigen> Zeitstempel. Das ist dann die Periodendauer. Die kann man dann per UART> ausgeben. Für den Anfang reicht Polling, das ist einfacher. Das sollte> als Ansatz genügen.
"verstehst" du denn seine Hinweise, und wärest du in der Lage, daraus
ein Struktogramm zu erstellen? Ein Struktogramm ist halt einfach nur
eine bestimmte (strukturierte) Darstellungsform eines Ablaufplanes.
bedenke: "programmieren" ist zwar auch das benennen spezieller
programmierbefehle (in Assembler, C oder welche Sprache auch immer),
aber das kommt "ganz zum Schluss". Zu allererst einmal musst du dir des
Ablaufs bewust werden.
Überlege dir dazu als Übung [zur Strukturierung und zum "Detail-denken"]
z.B. mal folgende "einfache" Aufgabenstellung: Das Schälen einer Banane.
Du (als Mensch) greifst mit der linken Hand eine Banane am Frucht"ende",
und mit der rechten machst du nun ....
Eine Machinensteuerung, welche zwei Roboterarme hat, kennt das alles
nicht, man muss es sehr genau vordenken und beschreiben was zu tun ist.
ein Ablauf wär dann in etwa:
1. Identifziere Anfang und Ende der Banane
2. Bewege deinen Arm über die Banane (sie liegt auf dem Tisch)
3. greife mit der linken Hand den Anfang der Banane
4. Bewege deinen Arm über den Tisch, so daß der rechte Arm frei tätig
werden kann
....
--> das der "Schritt 2." zur Ansteuerung eines Roboter-Armes (anstelle
deines menschlichen Armes bzw. Hand) eine komplexe Teil-Aufgabe ist, und
dass dazu komplizierte Maschinenbefehle benötigt werden, ist erst mal
egal. Fakt ist auf jeden Fall, dass dieser Schritt 2 elementar notwendig
ist.
Genau so ist es mit deinen Aufgabenstellungen: denke genau vor, was
alles in einzelnen Schritten zu tun ist. Beschreibe diese, und gehe die
einzelne Abfolge immer wieder gedanklich durch, ob das gewünschte raus
kommt.
Wenn dann ales genau durchdacht ist, kannst du dir Gedanken über
zugehörige Programmierbefehle, oder Registerbelegungen machen.
Wegstaben V. schrieb:> naja, falk hat dir ja in seinem Beitrag schon die entsprechenden> Hinweise gegeben, wie der Rahmen-Ablauf deiner beiden Aufgaben ist.>> Falk B. schrieb:>>> (Aufgabe 1)>>> Hier soll die Periodendauer des Pendels gemessen werden. Dazu hat man>> wahrscheinlich einen Sensor, der beim Durchschwingen einen digitalen>> Puls ausgibt. Wie der genau funktioniert ist nebensächlich, du sollst>> die Auswertung programmieren. Zeiten misst man mit einem Timer. Wenn es>> besonders genau sein soll, mit der Capture Compare Einheit, die fast>> alle Controller haben. Wenn also ein Capture-Ereignis erkannt wird, kann>> man das per Polling oder Interrupt feststellen. Dann liest man den>> gespeicherten Zeitstempel aus und bildet die Differenz zum vorherigen>> Zeitstempel. Das ist dann die Periodendauer. Die kann man dann per UART>> ausgeben. Für den Anfang reicht Polling, das ist einfacher. Das sollte>> als Ansatz genügen.>> "verstehst" du denn seine Hinweise, und wärest du in der Lage, daraus> ein Struktogramm zu erstellen? Ein Struktogramm ist halt einfach nur> eine bestimmte (strukturierte) Darstellungsform eines Ablaufplanes.
Wichtig:
Dieses Struktogramm muss auch erst mal überhaupt nichts mit einem
Computer zu tun haben. Das ist einfach erstmal nur ein formales
'Kochrezept' wie man vorgeht. Es ist noch nicht falsch, wenn die erste
Version eines Struktogramms dafür geeignet wäre die Fragestellung zu
beatworten: Wie würde ich als Mensch das machen, wenn ich diese
Aufgabenstellung lösen müsste und welche Hilfsmittel brauche ich dazu?
Offenbar braucht man ja eine Uhr und irgendeinen Mechanismus, mit dem
man zweifelsfrei eine immer gleiche Schwingposition des Pendels
feststellen kann. Mit diesen beiden Hilfsmitteln, wie ist dann der
Ablauf, wenn du als Mensch die Aufgabe lösen sollst? Welche Schritte
gilt es in welcher Reihenfolge zu machen, welche Entscheidungen sind zu
treffen? Welche Schritte hängen von diesen Entscheidungen ab.
Wenn du so ein Kochrezeot hast und das deiner kleinen Schwester (7 Jahre
alt) vorlegen kannst und sie kann die Aufgabe ganz alleine lösen indem
sie sich einfach nur an dieses Kochrezept hält, dann hast du dein erstes
Zwischenziel erreicht.
Und erst dann, nachdem klar ist, wie die generelle Lösungsstrategie
funktioniert, erst dann bewegt man sich in Richtung Programmieren, wobei
auch hier man immer noch nicht beim Code schreiben ist.
Marek N. schrieb:> dass man sie aus dem Stehgreif bearbeiten könnte
Sowas gibts ja auch gar nicht... ;-)
Ein Stegreif diente dagegen Reitern als Hilfsmittel. Und er mussste
deshalb seine Aufgaben "aus dem Stegreif" erledigen können.
Adem B. schrieb:> Ich konnte den Unterricht wegen deppressiven Störungen nicht besuchen,> und zweitens möchte ich nur ein Ansatz/eine kleine Hilfe wie ich bei> solchen Aufgaben vorgehen muss und keine ausgearbeitete Lösung der> Aufgabe um gottes willen.
Eine kleine Hilfe ist nicht möglich, weil Dir die elementarsten
Grundlagen fehlen.
Um ein Jahr Nichtteilnahme am Unterricht aufzuholen, brauchst Du ein
Jahr.
also ohne die Grundlagen zu lernen kann ich so lange auf der Aufgabe
rumprobieren wie ich will. Deshalb bin bin ich noch in der
Wiederholungsphase. ich verstehe folgende Sachen nicht
- wann ich bei einem Datenspeicher die direkte oder indirekte
Addressierung benutzen muss. Zudem ist mir der Special Function
Register, Data Pointer wildfremd. obwohl ich mir die Erklärungen dazu
angeschaut habe. Hinzu kommt der Stackpointer.
und ja der Carry macht mir das leben schwer.
- Der Interrupt Flag???. Der Begriff Flag ist mir nicht geläufig.
ich habe mir die Erklärungen angeschaut. nicht weitergekommen.
Kann mir da jemand eine vernünftige Erklöärung zaubern. ICh bedanke mich
sehr der Anfrage bei dir
MFG
ein flag ist ein bit mit welchem die cpu das programm über verschieden
Zustandsänderungen informiert.
"carry" steht für einen Accu übertrag .
mit "interrupt" flag wird angezeigt das ein Interrupt eingetroffen ist.
...
was das programm damit macht entscheidet der programmierer.
Die Kenntnis der Register und Flags sowie deren Verwendung ist
essentiell für den ASM Programmierer. Die Benutzung höhrer
Programmiersprachen befreit in aller regel davon.
Namaste
@ Adem Bektas (elektronik_neuling)
>also ohne die Grundlagen zu lernen kann ich so lange auf der Aufgabe>rumprobieren wie ich will.
So sieht es aus.
> Deshalb bin bin ich noch in der>Wiederholungsphase.
Gut.
>- wann ich bei einem Datenspeicher die direkte oder indirekte>Addressierung benutzen muss.
Direkte Adressierung nutzt man bei einfachen Variablen wie a, b, tmp und
wie du sie immer nennen willst.
Die Indirekte Adressierung nimmt man bei Arrays, also Datenblöcken mit
mehreren, gleichen Elementen, welche über den Namen + Index angesprochen
werden. Also test(5) oder so. In Assembler ist die Schreibweise aber
anders.
Such dir ein Tutorial mit Beispielen für den 8051, hier gibt es nur AVR
und der hat einen andere ASM-Syntax. Das verwirrt dich nur.
> Zudem ist mir der Special Function>Register,
Das sind alle, speziellen Hardware-Register, welche die Hardware steuer.
Also die IO-Ports, Timer, UART, ADC etx. Diese haben spezielle Namen und
sitzen logisch nicht in der CPU sindern im Speicher.
https://www.mikrocontroller.net/articles/Speicher#Register> Data Pointer wildfremd.
Braucht man immer bei indirekter Adressierung. Damit zeigt man auf die
Speicherstelle, welche man lesen oder schreiben will.
> obwohl ich mir die Erklärungen dazu>angeschaut habe. Hinzu kommt der Stackpointer.
Auch ein Pointer, allerdings ein spezieller. Der zeigt auf einen
Speicherbereich, wo beim Aufruf von Unterprogrammen oder Interrupts die
Rücksprungadresse abgelegt wird. In Hochsprachen, teilweise auch
Assembler, werden dort auch die Parameter von Funktionen/Unterprogrammen
abgelegt, wenn diese aufgerufen werden.
>und ja der Carry macht mir das leben schwer.
Das Carry ist ein Statusbit, das anzeigt, daß bei der vorherigen
Addition, Subtraktion, vergleich oder anderen arithmetischen Operation
das Ergebnis größer als 8 Bit wurde. Beispiel: 250 + 10 = 260. Das passt
nicht in ein 8 Bit Register, also ist das Ergebnis 4 + Carry=1. Man kann
es auch als 9. Bit betrachten, welches bei einer Operation entsteht.
>- Der Interrupt Flag???. Der Begriff Flag ist mir nicht geläufig.
Das zeigt an, daß ein Interrupt bearbeitet werden kann. Wenn es
ausgeschaltet ist, können keine Interrupts bearbeitet werden, es wird
wie ein Hauptschalter.
Interrupt
Adem B. schrieb:> - Der Interrupt Flag???. Der Begriff Flag ist mir nicht geläufig.
Flag = Bit mit spezieller Bedeutung.
Z.B. Carry, Parity, Timer Overflow, Interrupt pending usw.
Im Gegensatz zu anderen MCs hat der 8051 aber kein Zero-Flag!
JZ und JNZ prüfen immer das ACC-Register.
Leih Dir mal "Das Microcontroller Kochbuch MCS51" aus, da ist alles
erklärt.
Meint Ihr, daß da noch was kommt von Adam Brezel? Ich glaube, er hat
inzwischen erkannt, daß er nichts weiß und ist in seine Depressionen
zurückgefallen.