Versuche hier die serielle Schnittstelle für den C515 µC zu programmieren. Die Quarzfrequenz ist 12 MHz, P3.0 = RXD, P3.1 = TXD. Kann man beim C515 den Timer2 für die serielle Schnittstelle nicht verwenden wie z. B. beim 8052? Habe es mit folgenden Unterprogrammen versucht, aber keine Antwort bekommen. SD_BAUD_9600 EQU 100h-36 ; = 0DDh SD_BAUD_4800 EQU 100h-72 ; = 0BAh SD_BAUD_2400 EQU 100h-144 ; = 074h ; =============================== SDINIT: MOV SCON,#01010000b ; set Mode 1 (8 Bit UART) ; Receive enabled ORL PCON,#00000000b ; Set SMOD=0, division by 2 MOV T2CON,#00000000b ; Clear T2CON SETB RCLK ; Set Receive Mode for T2 SETB TCLK ; Set Transmit Mode for T2 MOV TH2,#0FFh ; Set High-Counter to 0FFh MOV TL2,#SD_BAUD_9600 ; Set Low-Counter to Reload value MOV RCAP2L,#SD_BAUD_9600 ; Set Low-Reload to Reload value MOV RCAP2H,#0FFh ; Set High-Reload to 0FFh SETB TR2 ; Start Timer 2 SETB TI ; Enable TI RET ; ================================ ; SDSEND: Send 1 Byte to serial Port ; ------- ; Registers: A : Byte to be sent ; ; SDSEND: PUSH PSW ; save PSW JNB TI,$ ; Wait until sendbuffer is empty CLR TI ; Clear sendbuffer flag MOV SBUF,A ; put it into serial buffer POP PSW ; restore PSW RET ; ======================================================================== =================== ; SDRECEIVE: Receive 1 Byte from serial Port ; --------- ; Registers: A : Byte received (OUTPUT) ; ; SDRECEIVE: PUSH PSW ; save PSW JNB RI,$ ; Wait until byte is in buffer CLR RI ; Clear receivebuffer flag MOV A,SBUF ; put it into Acc POP PSW ; restore PSW RET Kann mir jemand das passend machen?
Schau mal ins Datenblatt. Da ist von Timer 1 und von einem dedizierten Baudraten-Generator die Rede: <http://www.keil.com/dd/docs/datashts/infineon/80x515_um.pdf> Seite 51ff Von Timer2 steht da nichts.
khs schrieb: > Kann mir jemand das passend machen? So trivial ist das nicht, der 515 hat eine ganz andere Schnittstelle, u.a. mit Baudrate Generator. Auszug:
1 | ; |
2 | ; Serial Port starten |
3 | ; |
4 | A51FUNC SIINIT,SERIAL |
5 | clr ES |
6 | mov trmidx,#255 |
7 | mov rcvidx,#0 |
8 | mov lrchar,#0 |
9 | mov lanaddr,#0 |
10 | mov rcvto,#0 |
11 | mov trmto,#0 |
12 | setb BD |
13 | mov a,PCON |
14 | orl a,#80h ;Baud rate gen ein |
15 | mov PCON,a |
16 | mov SCON,#01011000b ;Mode 1,Rcv ein |
17 | setb ES |
18 | setb V24RTS |
19 | setb V24CTS |
20 | setb EAL |
21 | ret |
Da kommt natürlich noch eine menge dazu, z.B. eine Interrupt Service Routine, aber das wird für dich sowieso nicht passen. Gruss Reinhard
Danke für die Antworten. Habe gestern noch im Tread Assembler Crashkurs 8051 in diesem Forum einen Link zu einem ausführlichen C515er-Datenblatt gefunden, da war auch der Timer 1 für die serielle Schnittstelle angegeben, geht scheinbar mit T2 gar nicht. T1 soll mir auch recht sein, doch in dem Auszug von Reinhard Kern kann ich widerum einige Labels nicht zuordnen, wie z. B. trmidx,lanaddr. PCON,SCON, ES, oder EAL zwar schon. Eine genauere Quellenangabe wäre von Vorteil. Der 515er ist scheinbar bei den Heimwerkern weniger vorhanden als die 40poligen, habe aber auch noch nicht so intensiv danach gesucht und gegoogelt. Vielleicht hat da doch noch jemand hilfreiches eingestellt, oder Tips dazu, Gruß Hans
khs schrieb: > Der 515er ist scheinbar bei den Heimwerkern weniger vorhanden Wie auch, die alte Krücke ist doch schon lange abgekündigt. Wenn du unbedingt etwas mit 8051 machen willst, schau bei Silabs, NXP oder Atmel rein.
Im Anhang ASM Quelltext für die S1 des 80C517. Sollte aber passen. Allerdings sind afaik die Register S0CON beim 515 z.b. nur SCON etc. weiteres sollte der Siemens A51 Pocket Guide zu tage fördern können :)
Den C515 verwende ich hier deshalb, weil ich da im Schrott eine komplette Steuerplatine mit gesockeltem Eprom und gesockeltem 68pol. MC fand. außer einem 24c02, einem Relais und einem Drucksensorwar da nichts drauf, so daß da noch jede Menge frei Ports da sind. Es gibt natürlich modernere Sachen, aber mit so einer fertigen Platine spart man sich eine neue und viel Löterei. Die Programmierung ist natürlich nicht "ISP", aber ich verwende bei der Entwicklung auch keine Eproms, sondern habe da einen Batterie-gepufferten RAM-Adapter, den ich mit einem homemade-Eprommer ruckzuck überschreiben kann. Unter der Adresse http://www.microcontroller-online.de/microcontroller/theorie/uc_doku_kapitel_08.html fand ich eine Beschreibung wo es heißt Die serielle Schnittstelle des 80(C)515/-535 ist vollständig kompatibel mit der des 80(C)51. ...der ja nur 2 Timer hat. Danke auch für das File, das mir zu der ausführlichen deutschen Beschreibung in obigem Link sicher noch mehr hilft. Gruß Hans
khs schrieb: > Den C515 verwende ich hier deshalb, weil ich da im Schrott eine > komplette > Steuerplatine mit gesockeltem Eprom und gesockeltem 68pol. MC fand. Was hast du denn vor? Möchtest du nur ein wenig spielen? Oder altes Wissen auffrischen? Oder hast du ein kleines Projekt? Heute gibt es von 5...25€ Demo Boards verschiedener Hersteller. Die Dinger haben ein paar Led, Taster, Poti, ... drauf. Ports, Schnittstellen, ADC, ... sind auf Stiftleisten geführt. Die haben Versorgung, JTAG, RS232, ... über USB. Die Quälerei mit EPROM-Emulator und dem alten MC würde ich mir schenken.
Das ganze soll eine Pumpen-/Solarheizungssteuerung werden, nicht nur zum basteln und probieren. Habe inzwischen schon gemerkt, daß die einzelnen Derivate je nach Ausstattung Unterschiede aufweisen, wie auch der 517 mit 2 mal RXD/TXD. Trotzdem habe ich am Samstag schon auf Anhieb ein einfaches Programm hinbekommen, da ich hier 12 MHz habe und den internen Baudratengenerator verwenden konnte, hier die paar Zeilen: ;********************* S1_RT.ASM ***************************************** $NOMOD51 $INCLUDE (C515.MCU) ; Übertragung mit serieller Schnittstelle ; Übertragungsrate 4800 Bd, 8Bit ORG 0 LJMP main main: NOP s1_ini: MOV SCON,#01010000b ;8 Bit,Mode 1, Receiver enable SETB BD ;Baudratengenerator einsch. ANL PCON,#01111111b ;4800 Bd SMOD = 0 = Vorgabe ; ORL PCON,#10000000b ;9600 Bd SMOD = 1 init: MOV R3,#0 ;Empfangsregister löschen mainlp: MOV P5,R3 ;Kontrollausgabe des empf. Zeichens ;---------- ISR serielle Schnittstelle 1 ;Senden: Datenwort muß in R2 stehen ;Empfangen: Datenwort ist in R3 ;seriell: PUSH ACC seriell: MOV A,SCON JNB ACC.0,seriell ;wenn I.-Request-Flipflop RI=1 empfang: MOV R3,SBUF ;empfangenes Zeichen nach R3 ANL SCON,#11111110b ;Interrupt-Request-Flipflop RI löschen MOV P5,R3 ; zum testen des Programms MOV R2,P5 LCALL senden ; Echoausgabe LJMP seriell senden: MOV SBUF,R2 ;Senden starten sen_ti0: MOV A,SCON ;Warten, bis Senden beendet, d.h. TI=1 JNB ACC.1,sen_ti0 ANL SCON,#11111101b ;TI1 löschen RET END Ist zwar noch nicht interruptgesteuert, deshalb werde ich mir das File von Georg G. auch noch vornehmen, vielen Dank dafür. Daß es für 5 € schon Demos gibt, hätte ich jetzt nicht gedacht. Habe da noch ein paar Platinen für 40pol. 51er, muß aber schon zugeben, bis man sich da durchgepiepst hat und ev. noch einiges entfernen muß braucht schon auch seine Zeit. Danke noch mal für alle Antworten, Gruß Hans
khs schrieb: > Der 515er ist scheinbar bei den Heimwerkern weniger vorhanden Siemens hat sich zu lange auf seinen alten OTP und ROM-less Dampflocks ausgeruht und die anderen im Flash-Zug an sich vorbei brausen lassen, allen voran Atmel.
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.