Vielen Dank erstmal für die Antwort . Ich habe das Programm schon mal soweit aufgebaut, aber es scheint irgendwie nen Fehler zu haben, da es nicht aus der Schleife rausspringt . Vieleicht kannst du mir ja helfen den Fehler zu finden. MFG Nils (EGSLER)

;config
list p=16f628
#include <P16f628.INC>
__CONFIG _PWRTE_ON & _WDT_OFF & _HS_OSC & _LVP_OFF
;************************************************* *******
; Variablennamen vergeben

w_copy Equ 0x20 ; Backup für Akkuregister
s_copy Equ 0x21 ; Backup für Statusregister

;************************************************* *************
; los gehts mit dem Programm

org 0
goto Init

;************************************************* *************
; die Interruptserviceroutine

org 4
intvec bcf INTCON, GIE ; disable Interrupt

movwf w_copy ; w retten
swapf STATUS, w ; STATUS retten
movwf s_copy ;

movlw D'131' ; 256-125=131 ((1MHz : 32 ): 125 = 250 Hz)
movwf TMR2

; Intrrupt servic routine
Int_serv

incf PORTA, f


;hier folgt die eigentliche Interrupt-Routine,
;die 250 mal pro Sekunde aufgerufen wird


Int_end swapf s_copy, w ; STATUS zurück
movwf STATUS
swapf w_copy, f ; w zurück mit flags
swapf w_copy, w

bcf INTCON, PEIE ; Interrupt-Flag löschen
bsf INTCON, GIE ; enable Interrupt

retfie

;************************************************* *************

;Initialisierung am Anfang des Programms

Init

bsf STATUS, RP0 ; auf Bank 1 umschalten
movlw B'11110000' ; PortA RA0 output
movwf TRISA
bcf STATUS, RP0 ; auf Bank 0 zurückschalten
BSF CMCON, CM0 ;

Comparatoreingang auf Digital umschalten
BSF CMCON, CM1
BSF CMCON, CM2

; Vorteiler 16:1 und Timer2 einschalten
BSF T2CON,T2CKPS1 ; Vorteiler 16:1
BSF T2CON,TMR2ON ; Timer2 ein

; Frequenz auf 10 kHz einstellen
BSF STATUS,RP0 ; Bank1
MOVLW D'124'
MOVWF PR2 ; 2,5 kHz
BCF STATUS,RP0 ; Bank1


bsf INTCON, PEIE ;
bsf INTCON, GIE ; Interrupt erlauben
loop goto loop ; eine Endlosschleife

;************************************************* *********


end