vermutlich gibt es hier soetwas schon einmal, aber ic nicht viel zeit hab, versuch ich es so. folgendes Problem: der adc des 8051 soll die spannung einer schaltung ~60-200 mV messen und über die serielle schnittsttelle an den Computer schicken. der Computer soll diesen wert daraufhin mit einem anderen vergleichen und wenn die messung zu hohe werte ausgibt, soll vom computer aus über die serielle schnittstelle etwas zurückgeschickt werden, damit die messung beendet wird. das C-Programm mit dem Computer bekomm ich hin, aber bei Serieller schnittstellenprogrammierung via 8051 steh ich komplett an. Frage: Hat jemand vllt ein paar referenzfiles oder so etwas ähnliches sogar schon geschrieben und wil mir seine erfahrungswerte von euch zu gute kommen lassen, ist ziemlich dringend?? mfg killerkakerlake
Da wir wissen, welchen 8051 du verwendest, wird dir sicherlich irgendwann jemand seinen Code geben... Für unwahrscheinlichen Fall, dass doch niemand weiss, welche MCU du verwendest, sind folgende Schritte für einen Standard-8051 nötig: - Timer 1 einstellen, 8-Bit mit Autoreload, passende Reloadwerte berechnen, Timer starten (-> vorzugsweise Baudratenquarz verwenden) - UART konfigurieren (8/9-Bit Übertragung, etc.) - Bei Interrupt-Betrieb ES setzen (und IE nicht vergessen) Natürlich die entsprechenden Routinen für Senden/Empfangen bzw. falls gewünscht Ringbuffer, etc. nicht vergessen... Hoffe, ich hab nix vergessen... Ralf
Der C517A hat einen Baudratengenerator. Beachte das BD-Bit, das musst du setzen um den verwenden zu können. Mit dem Standard-12 MHz Quarz war der Baudraten-Wert 9Dh, wenn ich mich recht erinnere (jedenfalls etwas mit 9 und D), damit kommst du auf 9600 Baud. Aktiviere den Baudratengenerator, setze die Baudrate, und schon kannst du senden & empfangen. Senden ist denkbar einfach mit clr ti0 mov S0BUF,#irgend ein datenbyte jnb ti0,$ und empfangen kannst du mit clr ri0 jnb ri0,$ mov a,S0BUF schau mal im Handbuch nach, der BRG ist da sehr gut erklärt. PS: deine Shift-Taste klemmt.
"Welchen 8051" Wuerde man bei der Angabe "des 8051" nicht ausgehen von P8051, P80C51, P8751 oder einer anderen damit pin- und ausstattungskompatiblen Variante?
es ist ein Infineon SAF-C517A-LN ATmega 8 eingebettet in einem 8 Bit mikrocomtroller-Board, entwicklungsumgebung ist Keil µ-Vision 2 und am liebsten wäre mir ein C-Code danke im vorraus
killerkakerlake schrieb: > es ist ein Infineon SAF-C517A-LN ATmega 8 eingebettet in einem 8 Bit > mikrocomtroller-Board, entwicklungsumgebung ist Keil µ-Vision 2 und am > liebsten wäre mir ein C-Code Also ist es nun ein C517A oder ein Atmega8 ? Das sind zwei völlig verschiedene Controller. ;) Aber da du Keil benutzt, wird es wohl der C517A sein, da Keil AVR nicht unterstützt. Hier ein paar C-Code Schnipsel für Polling Betrieb mit dem C517A: // Initialisierung der seriellen Schnittstelle S0CON = 80; // Ser0: Mode=1 REN0=1 PCON = PCON | 128; // SMOD = 1 S0RELL = 0xD9; // 9615Bps bei 12MHz S0RELH = 0x03; BD = 1; // Baudratengenerator benutzen // Byte senden per RS232 S0BUF = 0xFF; // 0xFF per RS232 senden while (!TI0); // warten bis Byte gesendet TI0 = 0; // TX Flag löschen // Warten auf ein Byte per RS232 while (!RI0); // Warten bis ein Byte empfangen wurde temp = S0BUF; // Empfangenes Byte auslesen RI0 = 0; // RX-Flag löschen Schöner geht das Ganze natürlich noch im IRQ Betrieb, aber du solltest es lieber damit probieren, da IRQ Betrieb schon etwas Verständnis des Controllers vorraussetzt.
omg, wie peinlich, ja, es ist der C517A, aber der Atmega8 liegt auch daneben^^ @fox mulder Genau danach hab ich gesucht, danke Vielmals :)
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.