falls es jemanden interessiert habe nun folgenden code:
	Code:
		LIST P=16F628, R=DEC    ; Use the PIC16F628 and decimal system 
        #include "P16F628.INC"  ; Include header file 
        
     
        ORG    0x000            ; Program starts at 0x000 
; --------------------------------
; SET ANALOG/DIGITAL INPUTS PORT A
; --------------------------------
		movlw 7					; lädt 7 in das W-Register
		movwf CMCON				; 0x1F = 7 
; ---------------- 
; INITIALIZE PORTS
; ---------------- 
		movlw b'00100000'	
		movwf PIE1				; USART Receive Interrupt Enable Bit
	
		movlw b'00000000'   	; lädt 0 in das W-Rgeister
        movwf PORTA				; alle low an PORTA
        
        movlw b'00000100'		; W-Register
        movwf PORTB				; lädt in 0x06
        bsf STATUS,RP0      	; im Register Status wird das RP0 bit auf 1 gesetzt
        movlw 0xFC				; schreibt den wert FE in W
        movwf TRISA				; bis auf RA0,RA1 alle Eingäng(high)
        movlw 0xFF 				; alle Eingänge RB1(RX)=Eingang 
        movwf TRISB
; ------------------------------------
; SET BAUD RATE TO COMMUNICATE WITH PC
; ------------------------------------
; Boot Baud Rate = 9600, No Parity, 1 Stop Bit
        movlw 0x19              ; 0x19=9600 bps (0x0C=19200 bps)
        movwf SPBRG
        movlw b'00000100'       ; brgh = high (2)
        movwf TXSTA             ; schaltet brgh high ein
        bcf STATUS,RP0          ; RAM PAGE 0
        movlw b'10010000'       ; schaltet seriellen port ein 
        movwf RCSTA
; ---------
; MAIN LOOP
; ---------
	
loop    call receive       
		call vergleich
		call vergleich2
		call vergleich3
		call vergleich4              
        goto loop
; -------------------------------------------
; SIGNALE VON DER RSR232 SCHNITTSTELLE EMPFANGEN
; -------------------------------------------
receive btfss PIR1,RCIF         ; checkt ob im register PIR1 das RCIF bit (USART Receive Interrupt Flagbit) wenn der receive buffer voll ist geht weiter
        goto receive
        movf RCREG,0            ; speichert das Empfangende in W
        movwf 0x7F				; speichert das Empfangene in Speicherzelle 7F
		return
; -------------------------------------------------------------
; "VERGLEICHT" DIE BEIDEN SIGNALE
; -------------------------------------------------------------
vergleich
	movf 0x7F,0					; das aus der RS232 Empfange Byte in W schreiben
	sublw 1						; das Signal wird mit 1 subtrahiert, wenn 0 herraus kommt wird Zero Bit gesetzt
	btfss STATUS,Z				; wenn Zerobit gesetzt wurde, wird nächster befehl übersprungen
	return
	bsf PORTA,0 				; PORTA Bit 0 wird gesetzt
	return
			
vergleich2
	movf 0x7F,0					; das aus der RS232 Empfange Byte in W schreiben
	sublw 2						; das Signal wird mit 2 subtrahiert, wenn 0 herraus kommt wird Zero Bit gesetzt
	btfss STATUS,Z				; wenn Zerobit gesetzt wurde, wird nächster befehl übersprungen
	return
	bsf PORTA,1 				; PORTA Bit 1 wird gesetzt
	return
vergleich3
	movf 0x7F,0					; das aus der RS232 Empfange Byte in W schreiben
	sublw 3						; das Signal wird mit 3 subtrahiert, wenn 0 herraus kommt wird Zero Bit gesetzt
	btfss STATUS,Z				; wenn Zerobit gesetzt wurde, wird nächster befehl übersprungen
	return
	bcf PORTA,0 				; PORTA Bit 0 wird gelöscht
	return
vergleich4
	movf 0x7F,0					; das aus der RS232 Empfange Byte in W schreiben
	sublw 4						; das Signal wird mit 4 subtrahiert, wenn 0 herraus kommt wird Zero Bit gesetzt
	btfss STATUS,Z				; wenn Zerobit gesetzt wurde, wird nächster befehl übersprungen	
	return
	bcf PORTA,1 				; PORTA Bit 1 wird gelöscht
	return
	
END
 damit kann ich über RS232 Schnittstelle 2 Relaisschalten
einzeld an und einzeld aus
also zumindestens kalppts mit dem PIC Simulator
leider ist der PIC noch nicht angekommen
MFG vielen Dank für die Hilfe hier   DHigh
						
					
Lesezeichen