www.vorhilfe.de
- Förderverein -
Der Förderverein.

Gemeinnütziger Verein zur Finanzierung des Projekts Vorhilfe.de.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Impressum
Forenbaum
^ Forenbaum
Status VH e.V.
  Status Vereinsforum

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Suchen
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Sonstiges - Informatik" - Digitaltechnik / Interrupts
Digitaltechnik / Interrupts < Sonstige < Schule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Sonstiges - Informatik"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Digitaltechnik / Interrupts: Programmieren
Status: (Frage) überfällig Status 
Datum: 01:11 So 28.02.2010
Autor: hansmann

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ß

        
Bezug
Digitaltechnik / Interrupts: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
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é

Bezug
        
Bezug
Digitaltechnik / Interrupts: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 01:20 Di 02.03.2010
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Sonstiges - Informatik"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
ev.vorhilfe.de
[ Startseite | Mitglieder | Impressum ]