... org 4 int movwf w_temp ; save off current W register contents movf STATUS,w ; move status register into W register movwf status_temp ; save off contents of STATUS register ;RS232-Empfänger-Interupt? btfss PIR1,RCIF goto intEnde ; Interrupt kam von wo anders bcf Daten,0 ; Zeichen fuer gueltige Daten ruecksetzen movfw RCREG ; RS232-Register auslesen movwf Zeichen ; und in den Speicher nach 'Zeichen' schreiben bsf Daten,0 ; Zeichen fuer gueltige Daten setzen bcf PIR1,RCIF ; interrupt-Flag löschen intEnde ; geretteten Status wieder zurückschreiben movf status_temp,w ; retrieve copy of STATUS register movwf STATUS ; restore pre-isr STATUS register contents swapf w_temp,f swapf w_temp,w ; restore pre-isr W register contents retfie ; return from interrupt ... Main bsf INTCON,GIE ; generell Interrupts erlauben Main_1 btfss Daten,0 ; Zeichen fuer gueltige Daten pruefen goto Main_1 Auswertung Z_01 bcf INTCON,GIE ; generell Interrupts sperren bcf Daten,0 ; Zeichen fuer gueltige Daten ruecksetzen btfsc Flags_Empf_1,0 ; wenn 1. Zeichen schon erkannt, sofort weiter goto Z_02 incf PORTB,f ; zur Kontrolle: Wert Port B erhoehen movfw Zeichen ; empfangenes Zeichen nach w kopieren bcf STATUS,Z ; Z-Flag auf Null setzen sublw 'C' ; Subtraktion: gesuchtes Zeichen-w btfsc STATUS,Z ; wenn Zeichen nicht erkannt naechsten ueberspringen bsf Flags_Empf_1,0 ; 0. Flags_Empf_1 setzen goto Main Z_02 btfsc Flags_Empf_1,1 ; wenn 2. Zeichen schon erkannt, sofort weiter goto Z_03 u.s.w....