Pitt1986
16.04.2006, 16: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
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