Mit PIC und DTMF ein Relais schalten

Gast #1510509
Hi Leute,

im Rahmen meiner Ausbildung hab ich ein Projekt bekommen in dem ich 
mittels DTMF Decoder und einem PIC 16f877 oda 16F84a ein Relais 
schalten.

Vorgabe ist: mit der Kombination Ton 1,2,3,4 ein Relais zur Ansteuerung 
bringen..Quasi ein kleines Zahlenschloss.

Das mit den Ausgängen und der Codetabelle ist mir klar..nur es hapert an 
der Programmierung des PICs

Nun meine Fragen:

Muss ich unbedingt eine zeitliche Abfrage machen ob und wie lange das 
DTMF Signal am Eingang anliegt machen oder ist es auch ohne möglich?

Habe über google diverse Quellcodes gefunden(siehe Anhang), wie müsste 
ich den umändern damit nur ein Realis mit dem richtigen Code geschaltet 
wird?(mir liegen grad erst di grundlagen mit PIC-.-)
Angehängte Dateien:
Gast
ja davor ist ein dtmf decoder mt8870

nur ich hab keine ahnung wie ich dem beibringe die werte einzulesen und 
sich zu merken..der unterricht an der berufsschule ist nicht so 
tierfgründig.. über die Q-Ausänge wird ja der jeweilige binärcode 
eingelesen...über portb z.b.

der soll aber erst die 1(ton 1= q1 high)einlesen...alles andere soll 
nicht gelten und dann die 2(ton2= q2 high)...

bedingungen hab ich nicht drauf und wir arbeiten direkt mit der 
programmierumgebung von microship..

thx für die antwort
Gast
nee nen komplettes programm kann ich ja nicht verlangen^^ auch wenn es 
top wäre..

ich brauche eher nen anstoß wie ich die bedingungen realisiere...im 
bascom kann ich ja IF Then Else verwenden...das hab ich eben noch 
gefunden...

bin grad dabei mir das im bascom zu schreiben...denke da komme ich wohl 
eher zum ziel, weil wie ich das nicht hinbekomme mit der bedingung der 
richtigen codeeingabe....

ich versuche es grad mit xor-verknüpfung des eingangsports..kann das 
aber erst ende der woche "in real life" testen...

zur simulation nutze ich proteus da läuft es soweit...

viell hast du ne idee? hoffe ich habs so gut es geht verständlich 
geschrieben^^

greetz
Gast
xor ist eine gute Idee. Subtraktion würde auch gehen.

Du XORst dein eingelesenes Byte mit deinem Vergleichswert. Ist das 
Ergebnis gleich Null (das Bit STATUS,Z ist auf 1 gesetzt) dann waren die 
verglichenen Bytes gleich. Auswerten tust du das Bit mit btfss oder 
btfsc. Darüber kannst du dann auch deine Verzweigung realisieren.

Schau dir die Befehle einfach mal an (sprut.de ist dein Freund). Ist im 
Assembler der 16F recht umständlich gemacht, funktioniert aber.

Gruß
Sven
Gast
Hallo,
habe mal ne Schaltung aus Elektor nachgebaut, dort war ein PIC16C84 
verbaut, hat auch gut funktioniert.
Bin noch am Suchen, das war schon ein älteres Heft, wenn ich es finde, 
melde ich mich wieder.
Gruß
Marcus

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.