jo vielen dank nochmal 
nu klappts auch mit dem PIC Simulator
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 0xFE ; schreibt den wert FE in W
movwf TRISA ; bis auf RA0 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 ; wait for a char
call vergleich
goto loop
;
; -------------------------------------------
; SIGNALE VON DER RSR232 SCHNITTSTELLE EMPFANGEN
; -------------------------------------------
; This routine does not return until a character is received.
;
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,W ; speichert das empfangende in W
return
;
; -------------------------------------------------------------
; "VERGLEICHT" DIE BEIDEN SIGNALE
; -------------------------------------------------------------
;
vergleich
sublw 1
bcf PORTA,0x0
btfss STATUS,Z ;könnte auch mit einer Speicherzelle subtrahier
return
bsf PORTA,0x0
return
END
ist echt besser so zu vergleiche so kann eigentlich jedes bit auswerten
bin mal gespant wie das in der praxis klappt...
in dem code steht ja 1 stopbit no parity ist das standart oder kann man das wo einstellen ?
und sonn watchdog timer sollte man das mit reinnehmen ?
mfg DHigh
Lesezeichen