PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RS232 - PIC - Geht nicht richtig



Pitt1986
16.04.2006, 15:38
hi,

versuche gerade daten vom pic zum pc über rs232 zu senden, aber des funktioniert irgendwie nicht.

mein pic läuft mit einem 10mhz takt und ich die daten sollen mit 19200bps zum pc übertragen werden.

am pc kommen immer gleich vier byte an.
1.byte 11111110
2.byte 00000000
3.byte 00000000
4.byte 00000000

es sollte aber es sollte nur ein byte ankommen und zwar 10101010

sieht also so aus als wäre da was an den warteschleifen nicht in ordnung, aber nach meinen rechnungen stimmen die.

was könnte noch sein?



hier ist noch der quelltext



sendtopc
movlw D'170'
movwf senddatatopc


;##### START OF SENDING STARTBIT
movlw D'18'
movwf loops2
bcf PORTC,1
startbitwait
nop ; 1 Befehl
nop ; 1 Befehl
nop ; 1 Befehl
nop ; 1 Befehl
decfsz loops2,1 ; 1 Befehl
goto startbitwait ; 2 Befehle
;##### END OF SENDING STARTBIT

;##### START OF SENDING 8 DATABITS
movlw D'8' ; 1 Befehl - wird bei startbit noch verwendet von der dauer
movwf loops ; 1 Befehl - wird bei startbit noch verwendet von der dauer
movlw D'21' ; 1 Befehl - wird bei startbit noch verwendet von der dauer
movwf loops2 ; 1 Befehl - wird bei startbit noch verwendet von der dauer

sendtopcbyte
btfsc senddatatopc,7 ; 1 Befehl
bcf PORTC,1 ; 1 Befehl
btfss senddatatopc,7 ; 1 Befehl
bsf PORTC,1 ; 1 Befehl
waiting
nop ; 1 Befehl
nop ; 1 Befehl
nop ; 1 Befehl
decfsz loops2,1 ; 1 Befehl
goto waiting ; 2 Befehle

rlncf senddatatopc,1 ; 1 Befehl
decfsz loops,1 ; 1 Befehl
goto sendtopcbyte ; 2 Befehle
;#### END OF SENDING 8 DATABITS

;#### START OF SENDING ENDBIT
bsf PORTC,1
movlw D'18' ; 1 Befehl
movwf loops2 ; 1 Befehl
stopbitwait
nop ; 1 Befehl
nop ; 1 Befehl
nop ; 1 Befehl
nop ; 1 Befehl
decfsz loops2,1 ; 1 Befehl
goto stopbitwait ; 2 Befehle
;#### END OF SENDING ENDBIT


movlw D'255'
call WAIT
return

EinsamerUser
19.04.2006, 11:04
Mal ein kleiner Tip.

Schau mal hier (http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en011045) nach.

Sollte denke ich genau das richtige für dich sein!

Gruß
Stefan

kalledom
19.04.2006, 11:48
Meine erste Frage, welchen PIC verwendest Du ? Hat der keine USART ?
Wenn Dir die Initialisierung der seriellen Schnittstelle nicht bekannt ist, dann sieh Dir die PIC-Assembler-Beispiele auf dieser Seite an: http://www.domnick-elektronik.de/picasm.htm

Benji
20.04.2006, 13:03
frage: machst du eine pegelanpassung zwischen pic und pc? (sprich max232 o.ä.)