;AD-Wandler - Programm für 80C552 ;Assembler ist von Metalink (umsonst bei Philips.de etc.) $mod552 datanf set 0 datend set 7fh org 0 sjmp start org 3 clr EX0 ;Taste deaktivieren acall _reti ;weitere Interrupts enablen acall _ppause ;große Pause für die Taste reti org 0bh dec A reti org 53h mov 20h,ADCON ;Low-Byte von ADC mov 1fh,ADCH ;High-Byte von ADC anl ADCON,#239 ;vor Neustart ADCI löschen! orl ADCON,#8 ;neue Wandlung starten anl 20h,#11010000b ;Bit1-0 + ADCI bleiben reti org 80h start: mov IEN0,#83h ;Enable All + T0/EX0 -Interrupt mov TMOD,#0 ;Timer0/16bit orl PCON,#1 ;warten auf Tastendruck /EX0 mov DPTR,#datanf-1 ;initialisieren Speicher setb EAD ;AD-Wandler-Interrupt aktivier. orl ADCON,#8 ;Start AD-Wandler acall _click ;Programm zur Aufnahme von Volt clr EAD ;danach Interrupt sperren acall _pause ;zum Auslaufen d. letzt. Wandl. anl ADCON,#239 ;danach ADCI löschen (falls ;Unterprogramm _click öfter ;aufgerufen wird) ;hier kommen noch Befehle für Unterprogramme (Schnittstelle), die ;natürlich hier auch noch fehlen! org 100h _click: jnb 20h.4,_click ;warten auf ADC-fertig/K1 clr 20h.4 ;Statusbit init./Bit1-0 remain mov B,20h ;Bit1-0 retten/K1 mov A,1fh ;Bit9-2 laden/K1 inc DPTR movx @DPTR,A ;Bit9-2 von K1 speichern jnb 20h.4,$ ;warten auf ADC-fertig/K2 clr 20h.4 ;Statusbit init./Bit1-0 remain mov A,1fh ;Bit9-2 laden/K2 rr A rr A anl A,#00111111b ;Bit9-4 bleiben übrig orl A,B ;Bit1-0/K1+Bit9-4/K2 inc DPTR movx @DPTR,A ;speichern mov A,1fh ;Bit9-2 erneut laden/K2 anl A,#00000011b ;Bit3-2 bleiben übrig orl A,20h ;Bit1-0+3-2 rr A rr A mov B,A ;Bit3-0 retten jnb 20h.4,$ ;warten auf ADC-fertig/K3 clr 20h.4 ;Statusbit init./Bit1-0 remain mov A,1fh ;Bit9-2 laden /K3 swap A ;Bit9-6 als unteres Nibble anl A,#00001111b ;bleiben übrig orl A,B ;Bit3-0/K2+Bit9-6/K3 inc DPTR movx @DPTR,A ;speichern mov A,1fh ;Bit9-2 erneut laden /K3 swap A ;Bit5-2 anl A,#11110000b ;bleiben übrig mov B,A ;Bit5-2 retten mov A,20h ;Bit1-0 laden/K3 swap A ;Bit1-0 auf Bitposition 3-2 orl A,B ;Bit5-0 mov B,A ;Bit5-0 retten/K3 jnb 20h.4,$ ;warten auf ADC-fertig/K4 clr 20h.4 ;Statusbit init./Bit1-0 remain mov A,1fh ;Bit9-2 laden/K4 rl A rl A anl A,#00000011b ;Bit9-8 bleiben übrig orl A,B ;Bit5-0/K3 + Bit9-8/K4 inc DPTR movx @DPTR,A ;speichern mov A,1fh ;Bit9-2 erneut laden/K4 rl A rl A anl A,#11111100b ;Bit7-2 bleiben übrig mov B,A ;Bit7-2 retten mov A,20h ;Bit1-0 laden/K4 rl A rl A orl A,B ;Bit7-0/K4 inc DPTR movx @DPTR,A ;speichern mov A,#datend ;bis Speicher voll ist o.ä. cjne A,DPH,Q000 ret ;sonst Rücksprung Q000: ajmp _click org 200h _pause: djnz ACC,_pause ret org 280h _ppause: mov A,#10 setb TR0 jnz $ clr TR0 reti org 300h _reti: reti end ;**************************************************** ;Programm läßt den AD-Wandler fast ohne Unterbrechung ;laufen, speichert die Resultate in 1fh/20h ab - muß ;sein, da sonst die Resultate "erschüttert" sind (der ;Monitor auf dem PC legt diesen Ausdruck nahe); ;während die nächste Wandlung läuft, wird das alte 10bit- ;Ergebnis redundanzfrei ;, d.h. ohne Speicherplatzverschwendung, abgespeichert; ;insgesamt werden bei einem U-Programm-Durchlauf 4 mal ;10bit-Resultate auf 5 mal 8bit -Speicherplätze abgespeichert ;(KGV von 8 und 10 ist 40); ;wer will, kann sich von mir das komplette Programm gegen ;eine Gebühr von Porto + Diskette (kann nicht viel sein) ;schicken lassen (erst mal umsonst, da ich nicht weiß, was ;ich selber bezahlen muß); dazu gehört jedoch noch Controller- ;seitig das Schnittstellen-Programm und zur grafischen Wieder- ;gabe ein PC-Programm (läuft unter DOS), das die Stichproben ;des AD-Wandlers auf dem Monitor anzeigt, d.h. auf 8bit reduziert ;bzw. mit Page-Wechsel auch 10bit; dieses Programm ist sicher ;noch verbesserungswürdig! der Code ist in jedem Fall free! ;zu erhalten bei Thomas Strauß Landsberger Allee 81 10407 Berlin - Prenzlauer Berg 0175-254 80 83 Postkarte schicken!
ich habe 8 sensoren die wandeln mir die tempeatur um in spannungen von 0-5v.ich verwende jedoch den AT90S8535.ich will jeden eingang des ad wandlers fur einen sensor benutzen.kann mir dein programm helfen die 8 analogen daten einzulesen und seriell in einem protokoll verpackt wieder rauszugeben. die analogen spannungen werden ununterbrochen eingelesen 24 h am tag.und sollen gleich rausgegeben werden.
Hallo Gill Man kann mein Programm dazu verwenden, beliebig viele Analog-Eingänge hintereinander abzufragen und vier * 10bit-Resultate auf 5*8bit Ramplätze abzulegen; dazu müsste man in der Interrupt-Routine den Eingang entsprechend umschalten. Z.B. alternierend im ADCON-Control-Register die Pin-auswählenden Bits hochzählen und dann wieder von Null bis zum höchsten Wert. z. B. mit folgender Syntax: inc bit2-0 ;Bits für die 8 Inputs anl bit2-0,#7 ;max. 7 etwas schematisch; vielleicht muß das Register erst in den Akku geladen werden und alles nach rechts rotiert werden, bis das Bit, was für Eingang 0 zuständig ist, auf Bitposition 0 ist, und anschließend alles zurückgeschrieben werden in das ADCON-Register. Das sähe dann etwa so aus: mov A,ADCON ror A ror A ... inc A anl A,#7 mov ADCON,A Der AT80535 ist meiner Vermutung nach ein Siemens SAB80535 - Nachfolger, von Atmel. Der SAB80535 hat jedoch nur einen 8bit- AD-Wandler, so daß mein Programm hierfür nicht verwendet werden kann; falls Dein Chip jedoch auch über einen 10bit-Wandler (1024 Stufen-Auflösung)verfügt, könnte mein Programm - nach Anpassung auf die anderen Special-Function-Registern und mit oben genannter Umschaltung, für dein Problem interessant sein; Das Protokoll würde dann nur darin bestehen, die Daten in der richtigen Reihenfolge zu entschlüsseln; die Reihenfolge der Daten entspräche dann den Sensoren; bei einem Chip mit 8bit-AD-Wandler würde es auch reichen, die Reihenfolge der abgelegten Bytes (AD-Resultate)beim Empfangsgerät einzuhalten; aber sehr sicher ist diese Methode natürlich nicht. Man könnte vorab eine 3-stellige Binärzahl zu dem AD-Resultatsbyte absenden, die die 8 möglichen Sensoren angibt, zu dem das Byte gehört; das heißt jedoch, man muß dann 11bit abspeichern mit Einhalten der Reihenfolge oder man nimmt 16bit, wobei das erste Byte die Nummer des Sensors enthalten würde, das zweite Byte die Information dazu! Das ist natürlich leichter abzuspeichern. Die Reihenfolge ist dann immer noch wichtig; ein Protokoll, was sicher sein soll, muß dann schon komplizierter sein; die Nummer des Sensors vorab, und davor vielleicht eine Kennung, daß jetzt eine neue Information kommt, unabhängig von der vorhergehenden... Mit solchen Problemen habe ich mich bisher noch nicht beschäftigt, das ist Nachrichtentechnik und ein weites Feld; am besten beschäfigt man sich dann mit Nachrichtenübertragung und dergleichen;
Das vollständige Programm ist noch umfangreicher; ich werde es demnächst mit einem dazugehörigen DOS-Programm als Open-Source und als ausführbare Datei absenden; das Dos-Programm kann insge- samt über 32000 Stichproben als Kurvendiagramm anzeigen, 624 Stichproben mit 8bit und jeweils 16 Stichproben mit 10bit Auflösung als Zoom; Ausdrucken geht auch. Zur grafischen Auswertung von x-y-Kurven (Temperatur-Zeit etc.).
Hallo. Ich benutze einen 89c2051. Gibts dafür auch eine Rutine?? Der hat ja auch 2 analoge Eingänge
Der 89C2051 hat aber keine AD-Eingänge! Das sind einfache Vergleichseingänge (Komparator). Diese können zwei analoge Spannungen miteinander vergleichen, aber viel mehr nicht. Gruß Elektrikser
Hallo, Ich bin auf der Such nach einem Elektroniker der uns weiterhelfen kann. Wir sind eine Gruppe von 9 Bikern und haben ein Problem wo uns bis jetzt keiner weiter helfen konnte. Ich hoffe das Sie uns dabei helfen können. Mir ist bei der Suche nach einem Miniatur Sender / Empfänger Ihre Seite in die Hände gefallen. Ich suche verzweifelt nach einem A/D D/A Wandler ( Konverter) der in der Lage sein sollte auf der einen Seite den Bluetooth USB auf zu nehmen und die Digitalen Informationen umwandelt in Analoge Informationen und auf der anderen Seite einen Line / IN und Line /out haben sollte. Das Problem ist folgendes: Wir haben sowohl Radio als auch Funk an den Motorrädern, nun ist mir das Kabel vom Helm zum Moped irgendwie zu viel und möchte das ganze über Bluetooth machen, leider finde ich nicht einen geeigneten Wandler Der meinen Bluetooth Stick aufnehmen kann und mir die Möglichkeit bietet, die analogen Sachen wie mein Radio und Funk über diesen Bluetooth Stick zu senden. Habe schon bei Conrad und Konsorten nachgeschaut aber ich finde nicht das was ich suche, Könntest Sie uns vielleicht weiter helfen. Ich stehe Ihnen gerne für weitere Infos zu Verfügung. Danke im Voraus Gruß Manfred
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.