Digitaltechnik / Interrupts < Sonstige < Schule < Informatik < Vorhilfe
|
Aufgabe 1 | Spielidee" Treffen eines Lauflicht"
Port 2 Ausgabe
7 0
0 0 0 x 0 0 0 0
Externer Interrupt 0 -> Stopt das Lauflicht und zeigt an Treffer: P3.5 leuchtet
Externer Interrupt 1 setzt wieder alles zurück und es wird neu gestartet
Also man muss ein Lauflicht Porgrammieren das immer von rechts nach links geht und wenn man ein Taster drückt zeigt es entweder an ob es ein Treffer war bei P3.5 wenn nein geht es weiter wenn ja zeigt es den Treffer an und danach wird zurückgesetzt.
Ich kanns leider nicht besser wiedergeben, da mir das Thema einfach nichgt liegt :( |
Aufgabe 2 | Aufgabe 2:
Interrupt Timer 0
Bei Überlauf soll Port 2 0,1 Sekunden leuchten.
Auch hier verstehe ich das Thema leider nicht :( |
Zur ersten Aufgabe habe ich ein Ansatz, doch ich weiß nicht wie ich den zweiten Interrupt einbauen soll, für mich irgendwie unnötig, aber Aufgabe will es so. Hier mal ein Ansatz:
code at 100h
org 100h
include reg_51.pdf
include c51rd2.inc
jmp main
main:
MOV P2,#00000000b
CLR IE0
SETB EA
SETB EX0
org 0003h
ljmp stop
stop:
Mov A,P2
cjne A,#00010000b,Lauflicht
ljmp anzeige
org 50h
jmp Lauflicht
Lauflicht:
mov P2,#00000001b
ACALL prellen
MOV P2,#00000010b
ACALL prellen
MOV P2,#00000100b
ACALL prellen
MOV P2,#00001000b
ACALL prellen
MOV P2,#00010000b
ACALL prellen
MOV P2,#00100000b
ACALL prellen
MOV P2,#01000000b
ACALL prellen
MOV P2,#10000000b
ACALL prellen
SJMP Lauflicht
prellen:
mov R0,#20h
mov R1,#0A1h
mov R2,#07h
ljmp Pause
Pause:
djnz R0,Pause
djnz R1,Pause
djnz R2,Pause
ret
anzeige:
setb P3.5
acall prellen
clr P3.5
end
Bei Aufgabe zwei habe ich von nichts eine Ahnung vllt könnt irh mir das Thema näher bringen.
Wir programmieren über RIDE.
Gruß
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 02:10 So 28.02.2010 | Autor: | Rene |
Moin!
1.) Es ist schwer dir zu helfen, wenn du nicht genau definierst, wo dein Problem liegt!
2.) Du erwartest doch nicht etwa, das jemand deine Gedanken zu dem Assemblercode nachvollziehen kann ohne irgendeinen Kommentar.
zur Aufgabe2:
Wenn ich das richtig verstehe, sollst du einen Timer konfigurieren, der bei Überlauf diese Signalisiert in dem du am Port 2 (welchen Pin auch immer oder alle) zum Beispiel eine LED für eine Sekunde leuchten lässt!
Soll heißen, definiere für den Timer einen Zählendwert (ev. auch den maximalen Wert). Wenn dieser erreicht wird, schaltest du in der ISR Port2 ein und startest zum Beispiel einen zweiten Timer, der nach 0,1s einen Interrupt auslöst und den Port2 wieder ausschaltet.
zu Aufgabe 1:
erzeuge ein Lauficht, ev. mit nem Timer, der alle n ms einen Interrupt auslöst und den Wert der aktuell am PORT2 ausgegeben wird nach links shiftet (mit carryflag).
Am INT0 Eingang hängt ein Schalter, der zum auslösen des Interrupt da ist. Ziel ist es offenbar, den Schalter genau dann zudrücken, wenn am PORT2 0b00010000 leuchtet. Hat man diese Punkt getroffen, wird das Lauflicht gestoppt (Timer stoppen). Dann wird ausgewertet. Hat man den Wert getroffen, wird P3.5 eingeschaltet. Wenn nicht, bleibt P3.5 aus -> Spiel ist beendet.
Über einen Schalter am Eingang INT1 soll eine neue Runde gestartet werden, also P3.5 ausschalten, Ausgang PORT2 auf 0 setzen, Timer neu starten.
So würde ich das verstehen!
MFG
René
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 01:20 Di 02.03.2010 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|