Forum: Mikrocontroller und Digitale Elektronik PIC 16F628-USART


von Vladimir Ko (Gast)


Lesenswert?

Hallo alle,

Ich will uber PIC16F628 die Daten ins PC
uebertragen. Der chip hat USART -Moeglichkeit, da
benutze ich ganz simple Stueck von Quellcode:

Start
     bsf  STATUS,RP0
      movlw  19h  ; 9600 baud @4MHz
  movwf  SPBRG
  bsf  TXSTA,TXEN  ; Enable transmit
     bcf  STATUS,RP0
  clrf    PORTB           ;Clear PORT_B
  bsf  TXSTA,BRGH  ; Select high baud rate
  bcf TXSTA, SYNC;
      bsf  RCSTA,SPEN  ; Enable Serial Port

Main
  movlw  'a'    ; es soll ZB. die Buchstabe 'a'
  movwf  TXREG    ; gesendet werden
  goto  Main
        end
..und da passiert nicht viel ! An PC-ende sturtz dass
Empfanger-programm ab. Das Programm ist aber selbst unschuldig-
dass habe ich separat geprueft.
Ich habe auch an TX Pin (RB2) die Spannung gemessen. In Wait-Zustand
ist U=5 V, weil wahrend des Sendens geht die Spannung nicht auf 0,
sondern.. nur auf 1.9 V !

Ist mein Chip durchgebrannt ?- wenn jemand eine Idee hat, bitte
antworte..

Danke
Vladimir

von Michael B. (Gast)


Lesenswert?

Vielleicht den MAX232 falsch angeschlossen ?

von dds5 (Gast)


Lesenswert?

Hallo Vladimir,
Du schaltetst in der Zeile
     bcf  STATUS,RP0
von Bank 1 zurück auf Bank 0.
Deshalb wird an Stelle von TXSTA (Bank 1) nun das Register RCSTA (hat
die selbe Adresse auf Bank 0) angesprochen.

Probier mal folgendes

     bsf  STATUS,RP0
      movlw  19h  ; 9600 baud @4MHz
  movwf  SPBRG
  bsf  TXSTA,TXEN  ; Enable transmit
  bsf  TXSTA,BRGH  ; Select high baud rate
  bcf  TXSTA, SYNC;
     bcf  STATUS,RP0
  clrf    PORTB           ;Clear PORT_B
     bsf  RCSTA,SPEN  ; Enable Serial Port


Dieter

von Vladimir (Gast)


Lesenswert?

Hallo,

ich danke euch fuer interessente Antworten !

Es ist besser geworden.. ich weiss nicht warum ! Na ja, teilweisse lag
es an chip: je fester man ihm ins Socket druckt, desto weniger war dass
Signal..

Und teilweise an der Baudrate, ich dachte der Takt war 4 Mhz, aaaber
es war 8.

Na ja, trotzdem habe ich 4 Messages von Compiler:
'Register in operand not in bank 0'.. obwohl ich habe auf Bank 1
ungeschaltet !
Ich soll vieleich Microchip fragen.. da gibt's sehr schones Formulare
im Web.

Yours
Vladimir

von Chief Brady (Gast)


Lesenswert?

'Register in operand not in bank 0'

Und nocheinmal:

Das ist "nur" eine Warnung. Die soll dich darauf aufmerksam machen,
dass der Operand (z.B. SPBRG) nicht in Bank 0 ist und du darauf achten
sollst, in die korrekte Bank zu schalten. Wenn du (irgendwann) genau
weisst was du machst, kannst du die Ausgabe dieser Warnung unterdrücken
(wie, steht im Assemblerhandbuch).

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
Noch kein Account? Hier anmelden.