PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RS232- Wie



Import-Script
20.01.2002, 12:24
Hallo <BR> <BR>Kann mir jemand vonn Euch sagen wie ich herausfinden kann, wie ich am 89C52 die RS323 <BR>Schnittstelle benutzen kann? <BR>Han jemand ne Homepage wos erkl&auml;rt ist oder schonmal ein programm geschrieben <BR>Ich w&auml;r dankbar f&uuml;r jede Hilfe;-&#41;

Import-Script
20.01.2002, 14:05
Unter www.8052.com hab ich viele Informationen zu Controllern bekommen, auch f&uuml;r f&uuml;r die serielle Schnittstelle. Die Sache hat nur einen Haken: Die Seite ist angels&auml;chsisch, sprich englisch! Zum 89C52 kann ich dir nix sagen, hab mit dem noch nie gearbeitet, aber mit dem 80C32. Soweit ich weiss, sind die ja identisch, bis auf das Geh&auml;use und den internen PROM.

Import-Script
22.01.2002, 14:56
Hi Creek, <BR>nach Deiner Frage nehme ich an, dass Du noch ziemlich am Anfang mit den MCUs stehst. <BR>Ich gehe mal davon aus, dass Du einen Assembler und die M&ouml;glichkeit hast, Deinen 89c52 zu brennen sowie einen Experimentieraufbau um den Controller laufen zu lassen. <BR>Du solltest m&ouml;glichst die PROG-Studio Software von Batronix benutzen, weil die ganzen Definitionen in den u.a. Rutinen den dort f&uuml;r den 89C52 definierten entsprechen. <BR>Du musst f&uuml;r Deinen Controller dann noch ein RS232-Interface haben, da ja die MCUs nur 5V Pegel liefern und akzeptieren, w&auml;hrend RS232 mit &#43;-10V &#40;etwa&#41; arbeitet. Das geht ausgehend von 5V gut mit dem MAX232-IC und ein paar Kondensatoren &#40;oder mit dem RS232-Modul von Batronix&#41;. <BR>Dann ist das mit der RS233 eigentlich sehr einfach. <BR> <BR>Nachfolgend die notwendige ASM-Routinen zur Einrichtung der seriellen Schnittstelle unter Verwendung von Timer 2 und die elementaren Zeichen-Eingabe-Asugabe Routinen. Sie stammen aus einem Monitorprogramm, das ich f&uuml;r 80c51-kompatible geschrieben habe &#40;ein reines Entwicklungsprogramm, also nicht auf Eleganz geschrieben und nur teilweise auf meinem eigenen Mist gewachsen!&#41;. <BR> <BR> <BR>Include 89C52.mc <BR> <BR>;Belegte Speicheradressen: <BR>Position EQU 0h <BR>Inchar EQU 3Fh <BR>hexhi EQU 3eh <BR>hexlo EQU 3dh <BR>tem1 EQU 3ch <BR>tem2 EQU 3bh <BR>tema1 EQU 3ah <BR>tema2 EQU 39h <BR>sw1 EQU 38h <BR>sw2 EQU 37h <BR>Sendebusy BIT 0h <BR>Charrec BIT 1h <BR> <BR>;&Uuml;berspringe Interruptvektoren: <BR>LJMP Initialisierung <BR> <BR>;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42; &#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42; <BR>;Serieller Interrupt <BR>&#40;0023h&#41;: <BR> IF BIT TI THEN ;Byte gesendet: <BR> CLR TI ; L&ouml;schen des Transmit Interrupt &#40;TI&#41; Bits <BR> CLR Sendebusy ; L&ouml;schen des Sendebusy Bits <BR> ELSE ;Byte empfangen: <BR> CLR RI ; L&ouml;schen des Receive Interrupt &#40;RI&#41; Bits <BR> MOV Inchar,SBUF ; Anzeigen des empfangenen Wertes <BR> SETB Charrec <BR> END IF <BR>RETI ;R&uuml;ckkehr aus der Interruptroutine <BR> <BR>;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42; &#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42; <BR>&#40;0100h&#41;: <BR>Initialisierung: <BR> MOV SP, #81h <BR> MOV SCON,#01010000b ;Modus 1, 8bit UART, REN = 1 <BR> ORL PCON,#80h ;Bit SMOD setzen <BR> MOV TMOD,#00100000b ;Timermodus 2, Autoreload <BR> MOV TH1,#F3h ;Baudrate ist 9614 &#40;~ = 9600 Baud&#41; <BR> MOV tl1,#f3h <BR> SETB TR1 ;Timer 1 starten <BR> SETB ES ;serielle Interruptfreigabe <BR> SETB EA ;globale Interruptfreigabe <BR> SJMP Hauptprogramm <BR>;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42; &#42;&#42;&#42; <BR>WRT: ;Write Character in A <BR> MOV SBUF, A <BR> SETB Sendebusy <BR> _waits: <BR> JB Sendebusy, _waits ;Wait until sent <BR> RET <BR>RDT: ; Read 1 Character from Terminal <BR> JNB Charrec, RDT <BR> MOV A,Inchar ; truncate to upper case alphanumeric <BR> CLR charrec <BR> ANL A,#7fh <BR> IF A &#62; #60h THEN <BR> CLR C <BR> SUBB A,#20h <BR> END IF <BR> LJMP wrt ; and Echo <BR> <BR> <BR>Das Programm &#40;mon_001.asm&#41; macht nat&uuml;rlich noch mehr. Es ist ein vollst&auml;ndiges Monitorprogramm f&uuml;r 80c51-kompatible. <BR>Das ganze Programm kannst Du mit FTP von dem Public-Bereich auf meinem Rechner ziehen. Log Dich mal mit Benutzername &#34;anonymous&#34; und Deiner e-mail Adresse als Password auf &#34;lumb.ifm.uni-kiel.de&#34; ein. <BR>Da findest Du auch ein Applikationsblatt von Phillips &#40;c51_baud.pdf&#41; f&uuml;r Quarz und Baudratenauswahl. <BR> <BR> <BR>Weitere Hilfe entweder hier im Forum oder &uuml;ber meine e-mail &#40;<A HREF="mailto:hphansen@ifm.uni-kiel.de">hphansen@ifm.uni-kiel.de</A>&#41;. <BR>HPH