Tach Leute... Also ich habe folgendes Problem. Ich muss den AD-Wandler des 80c537 von 1-3V einstellen. die Ports die ich verwenden möchte sind einmal P8.1 und dann P8.0. Mein Problem ist nu das ich keine Ahnung habe wie ich den proge... Ich weiß net genau wie ich erstens mal die Ports (8.0 & 8.1) auswähle und dann die Messung durchführe. Hab im Datenblatt die MX... Bits in ADCON Registern gesehen jedoch weiß ich nicht wie ich nun die genannten Ports auswähle.Ich würd ja für den Port 7.2 (Beispiel) das ADCON0 = 0x02 setzen. Damit ist MX2 auf 1 und der P7.2 ausgewählt. Aber wie komme ich auf den 8.0 und 8.1?? Da muss ich im ADCON1 das MX3 mitsetzen oder? Bitte helft mir konkret da ich das schon morgen für die Schule brauche!!!!! Vielen Dank, Mfg Reiti
He Leute .... Kommt schon!!!!!!!!!! Es ist echt dringend!!!!!! `Mfg reiti
Ich hab alle uralt ROMless 8051-Saurier in den Müll geschmissen, als Atmel 1995 seine Flash-8051 rausbrachte. Ich weiß also nur, wie man beim AT89C51CC01 den ADC verwendet. Peter
hier mal ein kleines Beispiel Die Funktion ist ewas schlauer als das, was Du vorgibst, weil Sie den Offset auf 1,25V einstellt und somit eine theoretische 10Bit-Wandlung schafft, was aber unerheblich ist, weil Du sehen kannst wie man die Register anspricht und die Ports auswählt. Das Datenblatt vom 535 ist in dieser Frage etwas schöner wenn ich mich recht erinnere. /******************* X - Koordinate einlesen *************************/ void read_x() { int dummy = -1; /* Dummy - Variable erzeugen */ istwert_x = -1; /* Wert verflschen */ ADCON0 = 0; /* Eingang auswhlen */ ADCON1 = 0; /* Eingang auswhlen */ DAPR = 0; /* ADC starten */ while (istwert_x == -1) /* solange der Wert ungltig ist ... */ { Watchdog(); if (BSY == 0 && dummy != -1) istwert_x = (1.25 / 255.0 * ADDAT + offset) * (x_poti / 5); if (BSY == 0 && dummy == -1) { dummy = ADDAT; /* zuweisen sobald ADC fertig */ feinabgleich(); } } } /******************* Feinabgleich ADC ********************************/ void feinabgleich() { Watchdog(); if (ADDAT < 53 ) {DAPR = 64; offset = 0.0;} else if (ADDAT > 42 && ADDAT < 85) {DAPR = 98; offset = 0.625;} else if (ADDAT > 74 && ADDAT < 117) {DAPR = 132; offset = 1.25;} else if (ADDAT > 106 && ADDAT < 149) {DAPR = 166; offset = 1.875;} else if (ADDAT > 138 && ADDAT < 181) {DAPR = 200; offset = 2.5;} else if (ADDAT > 170 && ADDAT < 213) {DAPR = 234; offset = 3.125;} else if (ADDAT > 202) {DAPR = 12; offset = 3.75;} }
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.