Aufgabe Vorschlag C - 2 - Assemblerprogrammierung und Mik… · Abitur Hessen Technische Informatik LK 2022
Thema: Assemblerprogrammierung und Mikrocontrolleraufbau · Aus der Prüfung LK (2022)
Aufgabenstellung
Für die Bewässerung wird eine Pumpe in Kombination mit einem Durchflusssensor verwendet. Die Pumpe wird von einem Gleichstrommotor angetrieben, der ein- (1) und ausgeschaltet (0) werden kann. Der Durchflusssensor gibt 8 Pulse pro Liter Flüssigkeit, die ihn durchfließt, ab. Die steigende Flanke des Pulses gibt jeweils an, dass ein weiterer achtel Liter den Sensor passiert hat. Die Dauer des High-Pegels hängt dabei von der Durchflussgeschwindigkeit ab und ist somit unbestimmt.
Die Pumpe wird über das Unterprogramm bewaesserung gesteuert. Zu Beginn des Unterprogramms befindet sich die zu pumpende Wassermenge in Litern in einem festgelegten Register. Das Unterprogramm sorgt dafür, dass der Motor der Pumpe so lange läuft, bis die geforderte Menge Wasser den Durchflusssensor passiert hat.
Die Bedeutung der Signale und die Belegung des Mikrocontrollerports entnehmen Sie der folgenden Tabelle:
Die Bedeutung der Signale und die Belegung des Mikrocontrollerports entnehmen Sie der folgenden Tabelle:
2.1
Wählen Sie das Register bei dem von Ihnen im Unterricht verwendeten Mikrocontroller aus, in dem die zu pumpende Wassermenge gespeichert ist.
(2 BE)
2.3
Überführen und implementieren Sie das Unterprogramm bewaesserung sowie die Initialisierung der verwendeten Ports in den von Ihnen im Unterricht verwendeten Assembler.
(9 BE)

Lösung
Nach den offiziellen Korrekturhinweisen
2.1 Wählen Sie das Register bei dem von Ihnen im Unterricht verwendeten Mikrocontroller aus, in dem die zu pumpende Wassermenge gespeichert ist.
Lösung: R20 / Register R20
2.3 Überführen und implementieren Sie das Unterprogramm bewaesserung sowie die Initialisierung der verwendeten Ports in den von Ihnen im Unterricht verwendeten Assembler.
Lösung: ```assembly INIT_PORTS: sbi DDRD,0 ; D0 auf Ausgang für Motor cbi DDRD,1 ; D1 auf Eingang für Sensor sbi PORTD,1 ; Pullup an D1 aktivieren bewaesserung: add R20,R20 ; R20 dreimal verdoppeln, da Sensor 8 add R20,R20 ; Pulse pro Liter liefert add R20,R20 sbi PORTD,0 ; Motor an mengenschleife: sensor1: sbic PIND,1 ; wenn Sensor 0 wird, nächste Zeile überspringen rjmp sensor1 ; sonst wiederholen sensor0: sbis PIND,1 ; wenn Sensor 1 wird, nächste Zeile überspringen rjmp sensor0 ; sonst wiederholen dec R20 ; Fallende Flanke erkannt, Zähler runterzählen brne mengenschleife ; wenn wir noch nicht bei 0 sind, nochmal von vorne cbi PORTD,0 ; sonst Motor aus ret ; Unterprogramm beenden ```
Die ausführliche Erklärung Schritt für Schritt (mit KI) gibt es mit Premium. Premium
Löse sie direkt hier: automatische Korrektur, Hinweise und Lösung Schritt für Schritt.
‹ Aufgabe Vorschlag B - 3 - Assemblerprogrammierung und Mik… · LK 2022 · Aufgabe Vorschlag A - Aufgabe 3.2 · LK 2021 ›