PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Habe problem mit RS232!!



doolitle15
02.11.2005, 13:20
Hallo!
ich habe einen pic16f873. habe eine serielle schnittstelle und konnte auch schon daten zum pic senden!! jetzt will ich aber das etwas zum pic schicken und wenn der pic den befehl bekommen hat soll er mir den selben befehl wieder zurück schicken!!

ich habe schon etwas in assembler geschrieben aba das funktioniert nicht!!

list p=16f873
#include <P16f873.INC>

init
bsf STATUS,RP0
movlw B'00000000' ; PortB alle output
movwf TRISB
bcf STATUS, RP0 ; auf Bank 0 zurückschalten
clrf PORTB ; alle LEDs ausschalten
bsf STATUS,RP0 ; Bank1
bcf PORTC, 6 ; PortC output 6 (tx COM)
bsf PORTC, 7 ; PortC input 7 (rx COM)
bcf STATUS,RP0

; USART initialisieren
BCF STATUS,RP0 ; Bank1
MOVLW 0x20 ; Sender: RS232
MOVWF TXSTA ;
MOVLW 0x90 ; Empfänger: RS232
MOVWF RCSTA
BCF STATUS,RP0 ;
; USART Baudrate einstellen
BSF STATUS,RP0 ; Bank1
MOVLW d'25' ; Set Baud rate 2,4 kBPS bei 4 MHz
MOVWF SPBRG
BCF TXSTA, BRGH ; BRGH=0
BCF STATUS,RP0 ; Bank 0
RS232in
btfss PIR1,RCIF ; sind Daten da ?
goto RS232in ; nein, noch keine Daten da
bcf PIR1,RCIF
movfw RCREG ; RS232-Register auslesen
movwf PORTB ; und nach 'PORTB' schreiben
bsf PIR1,TXIF
goto RS232out
RS232out
btfss PIR1,TXIF ; ist Sender leer ?
goto RS232out ; nein, noch nicht leer
bcf PIR1,TXIF
movfw PORTB ; nächstes Byte holen
movwf TXREG ; und in den RS232-Sender schreiben
goto RS232in
end

ich hoffe es kann mir bitte jemand weiter helfen!! ich bin für jeden ratschlag dankbar!!!

mfg doolitle

PicNick
02.11.2005, 13:30
Schau mal da, das sollte dir helfen
http://www.sprut.de/electronic/pic/grund/rs232.htm

Angel666
05.11.2005, 14:01
Hi,
benutze zwar nen anderen controller aber:

nit
bsf STATUS,RP0
movlw B'00000000' ; PortB alle output
movwf TRISB
bcf STATUS, RP0 ; auf Bank 0 zurückschalten
clrf PORTB ; alle LEDs ausschalten
bsf STATUS,RP0 ; Bank1
bcf PORTC, 6 ; PortC output 6 (tx COM) !!!!!!!!!!!!!muss auf 1 !!!
bsf PORTC, 7 ; PortC input 7 (rx COM) !!!!!muss auf 1!!!!!!!!
bcf STATUS,RP0

; USART initialisieren
BCF STATUS,RP0 ; Bank1
MOVLW 0x20 ; Sender: RS232
MOVWF TXSTA ;
MOVLW 0x90 ; Empfänger: RS232
MOVWF RCSTA
BCF STATUS,RP0 ;
; USART Baudrate einstellen
BSF STATUS,RP0 ; Bank1
MOVLW d'25' ; Set Baud rate 2,4 kBPS bei 4 MHz
MOVWF SPBRG
BCF TXSTA, BRGH ; BRGH=0
BCF STATUS,RP0 ; Bank 0
RS232in
btfss PIR1,RCIF ; sind Daten da ?
goto RS232in ; nein, noch keine Daten da
bcf PIR1,RCIF
movfw RCREG ; RS232-Register auslesen
movwf PORTB ; u nd nach 'PORTB' schreiben
bsf PIR1,TXIF !!!!!!!!!brauchste nicht!!!
goto RS232out
RS232out
btfss PIR1,TXIF ; ist Sender leer ?
goto RS232out ; nein, noch nicht leer
bcf PIR1,TXIF !!!!!!!!!brauchste nicht!!!
movfw PORTB ; nächstes Byte holen
movwf TXREG ; und in den RS232-Sender schreiben
goto RS232in
end

Das ist mirt auf den ersten Blick aufgefallen .

SChau mal in das Datenblatt .

Die RX/TX müssen auf eines da du sonst RX = Ausgang = 0 = masse das signal auf null ziehst!!!

Ist mit auch erst letzte Woche paasiert !

mfg