Mit PIC und DTMF ein Relais schalten

Gast #1510509
Lesenswert?

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 #1510585
Lesenswert?

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 #1510875
Lesenswert?

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 #1511532
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren