Scuido
15.08.2008, 23:23
Hey,
mein Problem ist, ich habe versucht eine RS232 verbindung zum PC aufzubauen. Leider kommt nicht das an was ich erwarte.
Ich habe den PIC ohne Pegelkonvertierung an den PC geschlossen. Mir ist auch klar, dass die pegel invertiert werden. Ich sitze nun schon seit drei Tagen an dem Problem und weiß nicht mehr weiter.
Gruß
André Iwers
;*****************************************
list p=16f877A
;* PORTC: I/O
;* 0 -
;* 1 - ;* 2 -
;* 3 -
;* 4 -
;* 5 -
;* 6 - TX RS232
;* 7 - RX
; Taktquelle: 4 MHz
#include <P16f877A.INC>
__CONFIG _PWRTE_ON & _WDT_OFF & _HS_OSC & _LVP_OFF
org 0x00
Init
bsf STATUS, RP0
movlw B'10111111' ; I/O
movwf TRISC
bcf STATUS, RP0
; USART initialisieren
bsf STATUS,RP0 ; Bank1
movlw 0x24 ; Sender: RS232 7 TXEN, BRGH = 1
movwf TXSTA ;
bcf STATUS,RP0 ; Bank 0
movlw 0x90 ; Empfänger: RS232
movwf RCSTA ;
; USART Baudrate einstellen
bsf STATUS,RP0 ; Bank1
movlw D'25' ; Set Baud rate 9,6 kBPS bei 4 MHz
movwf SPBRG
bcf STATUS,RP0 ; Bank 0
;************************************************* *****************
btfss PIR1,TXIF ; ist Sender leer ?
goto $-1 ; nein, noch nicht leer
movlw 'B' ; nächstes Byte holen
movwf TXREG ; und in den RS232-Sender schreiben
btfss PIR1,TXIF ; ist Sender leer ?
goto $-1 ; nein, noch nicht leer
movlw 0xAA ; nächstes Byte holen
movwf TXREG ; und in den RS232-Sender schreiben
btfss PIR1,TXIF ; ist Sender leer ?
goto $-1 ; nein, noch nicht leer
movlw 0x0A ; nächstes Byte holen
movwf TXREG ; und in den RS232-Sender schreiben
btfss PIR1,TXIF ; ist Sender leer ?
goto $-1 ; nein, noch nicht leer
movlw 0xA0 ; nächstes Byte holen
movwf TXREG ; und in den RS232-Sender schreiben
start
goto start
end
mein Problem ist, ich habe versucht eine RS232 verbindung zum PC aufzubauen. Leider kommt nicht das an was ich erwarte.
Ich habe den PIC ohne Pegelkonvertierung an den PC geschlossen. Mir ist auch klar, dass die pegel invertiert werden. Ich sitze nun schon seit drei Tagen an dem Problem und weiß nicht mehr weiter.
Gruß
André Iwers
;*****************************************
list p=16f877A
;* PORTC: I/O
;* 0 -
;* 1 - ;* 2 -
;* 3 -
;* 4 -
;* 5 -
;* 6 - TX RS232
;* 7 - RX
; Taktquelle: 4 MHz
#include <P16f877A.INC>
__CONFIG _PWRTE_ON & _WDT_OFF & _HS_OSC & _LVP_OFF
org 0x00
Init
bsf STATUS, RP0
movlw B'10111111' ; I/O
movwf TRISC
bcf STATUS, RP0
; USART initialisieren
bsf STATUS,RP0 ; Bank1
movlw 0x24 ; Sender: RS232 7 TXEN, BRGH = 1
movwf TXSTA ;
bcf STATUS,RP0 ; Bank 0
movlw 0x90 ; Empfänger: RS232
movwf RCSTA ;
; USART Baudrate einstellen
bsf STATUS,RP0 ; Bank1
movlw D'25' ; Set Baud rate 9,6 kBPS bei 4 MHz
movwf SPBRG
bcf STATUS,RP0 ; Bank 0
;************************************************* *****************
btfss PIR1,TXIF ; ist Sender leer ?
goto $-1 ; nein, noch nicht leer
movlw 'B' ; nächstes Byte holen
movwf TXREG ; und in den RS232-Sender schreiben
btfss PIR1,TXIF ; ist Sender leer ?
goto $-1 ; nein, noch nicht leer
movlw 0xAA ; nächstes Byte holen
movwf TXREG ; und in den RS232-Sender schreiben
btfss PIR1,TXIF ; ist Sender leer ?
goto $-1 ; nein, noch nicht leer
movlw 0x0A ; nächstes Byte holen
movwf TXREG ; und in den RS232-Sender schreiben
btfss PIR1,TXIF ; ist Sender leer ?
goto $-1 ; nein, noch nicht leer
movlw 0xA0 ; nächstes Byte holen
movwf TXREG ; und in den RS232-Sender schreiben
start
goto start
end