www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupts richtig verwenden


Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
ich habe 2 verschiedene Programme.
Wenn pind.0 low ist, soll das erste programm ablaufen. wenn pind.0 high 
ist, dann das zweite programm.
beide Programme habe do loop schleifen

Autor: Frank L. (hermastersvoice)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, meinen Segen hast du.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>OK, meinen Segen hast du.
bitte?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Port-Interrupts sind i.A. flanken- und nicht zustandsgetriggert.
Also Portd.0 IRQ auf steigende UND fallende Flanke triggern lassen, in 
der ISR dann den Pegel feststellen, entsprechendes Flag setzen (Prog 
1/2) und in Deiner main() dann aufgrund des Flags Prog 1/2 ausführen, 
ferdich!

Autor: Marvin M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was Dir Frank L. damit sagen möchte:
Nachts ist es kälter als draußen.
Keine Ahnung, was Du meinst - mehr Info, bitte.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, ich möchte diese 2 Programmen Verknüpfen
Wenn pind.0 low ist, soll das programm 1 ausgeführt werden (pinp.0 high 
, dann das zweite)

Programm1:
Cls
Cursor Off

Dim Gray As Word
Dim Lobyte As Word
Dim Hibyte As Word
Locate 1 , 1
Lcd "P.G.Tester(GRAY)"
Locate 4 , 1
Lcd "Ausbildung EGS05"
Locate 2 , 5
Lcd "*-"
Locate 2 , 10
Lcd "-*"
Locate 3 , 3
Lcd "------------"

Do
Lobyte = Pina
Hibyte = Pinc
Hibyte = Hibyte And &B0000000000001111
Rotate Hibyte , Left , 8

Gray = Lobyte + Hibyte
Gray = Gray2bin(gray)

Locate 2 , 7
Lcd Gray

Waitms 200
Locate 2 , 7
Lcd "   "
Loop
End


Programm2
Cls
Cursor Off

Dim Lobyte As Word
Dim Hibyte As Word
Dim Code2 As Byte

Locate 1 , 1
Lcd "P.G.Tester(BCD)"
Locate 4 , 1
Lcd "Ausbildung EGS05"
Locate 2 , 5
Lcd "*-"
Locate 2 , 10
Lcd "-*"
Locate 3 , 3
Lcd "------------"

Do
Lobyte = Pina
Hibyte = Pinc
Hibyte = Hibyte And &B0000000000001111
Rotate Hibyte , Left , 8
Code2 = Lobyte + Hibyte
Locate 2 , 7
Lcd Code2

Waitms 200
Locate 2 , 7
Lcd "   "
Loop
End

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du brauchst ein "Überprogramm", welches den Pin abfragt und dann in die 
entsprechende Unterroutine verzweigt. Die Abfrage des Pins kann 
klassisch erfolgen (Jumper gesetzt?) oder per Interrupt (dann mit 
eigener Endlosschleife im Überprogramm, nach Erkennung Interrupt 
abschalten nicht vergessen!).

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.