Hallo Zusammen :-) ich zerbreche mir seit 3 Tagen meinen Kopf und ich komme zur keiner Lösung ! ich habe mir eine DTMF Dekoderschaltung gebaut dazu habe ich den beliebten Mitel MT8870D-1 Chip verwendet Dekoderschaltplan befindet sich im Dateianhang. Die Schaltung funktioniert Reibungslos habe alle Tastenkombination ausprobiert und alle Ausgänge Q1-Q4 werden ordnungsgemäß mit 5V angesteuert. Habe die Schaltung erweitert und die Ausgänge Q1 - Q4 an die Ports 2.0-2.3 meines Atmel C8051ED2 Mikrocontrollers angeschlossen. Den Est (PIN 16) Ausgang habe ich an meinem P1.0 angeschlossen. Habe dazu ein kleines Programm geschrieben, womit ich ein 4 stelliges Passwort abgefragt werden kann. Programmablauf: 1. mit * also Binär 00001011b kommt man in die Eingabe 2. über den P1.0 (ESt) wird abgefragt ob eine Taste gedrückt wurde, also High Pegel (der Pegel ist nur für einen Moment da und fällt gleich wieder ab) 3.abfragebcd BCD code wird abgefragt falls die Eingabe stimmt gehts weiter zu nächsten Abfrage wenn nicht fängt das Programm von vorne an 4.falls alles Abfragen richtig waren wird auf dem Display Hallo angezeigt Mein Problem ist wenn ich das Programm im Debug laufen lasse funktioniert es ohne Probleme jedoch wenn ich es so laufen lasse funktionieren die ersten beiden Eingaben also *,9,2 und danach geht nichts mehr. Der BCD Code wird auf den Port LED's richtig angzeigt jedoch nicht in der Abfrageroutine abgefragt bzw. erkannt ! wer kann mir Helfen der Assembler Code ist hier: include c51ed2.inc Extern Code initLCD,loeschen,loeschzeile1,loeschzeile2,textzeile1,textzeile2,cursorp os,cursoran,cursoraus Extern Code textaus,zifferaus,hexaus,dezaus,dualaus,dualaus1,dualaus2,charaus Extern Code definierezeichen,loeschzeile3,loeschzeile4,textzeile3,textzeile4 Abfrage data p2 code ;at 0 public start: lcall initLCD lcall loeschen call Eingabebeginn loop1: call polling2 cjne a,#9,loop1 lcall dualaus1 call polling2 cjne a,#2,loop1 // bis hier her funktionierts lcall dualaus1 call polling2 cjne a,#9,loop1 // wird nicht mehr erkannt bzw. ausgeführt lcall dualaus1 // im Debug läuft es ohne Probleme call polling2 cjne a,#2,loop1 lcall dualaus1 call polling2 cjne a,#9,loop1 mov dptr,#Text lcall textaus Text: db 'Hallo',0 sjmp start Eingabebeginn: call abfragebcd cjne a,#11,Eingabebeginn ret polling2: mov a,p1 ANL a,#1 cjne a,#1,polling2 ;jnb P1.0,polling2 call abfragebcd ret abfragebcd: mov a,Abfrage ANL a,#15 ; Akku wird mit Konstante verundet ret entry: mov dptr,#text1 lcall textaus text1: db 'Endlich',0 ret end. Datenblatt zu dem Mitel MT8870 Chip gibt es hier http://pdf1.alldatasheet.com/datasheet-pdf/view/77085/MITEL/MT8870.html ich hoffe Ihr könnt mir da Helfen Gruß Ertan
was verwendest du für quartze??? der 8870 läuft bei mir mit 3.597M... benutzt du einen externen für dein controller??? eventuell ein Timing-Problem???
ich hab einen 3.597Mhz. verwendet und es mit dem Oszilloskop überprüft :-)!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.