Hi Leute

ich hab da ein Problem in meinem Code.
ich weiss nich wie ich diese schleife richtig machen soll.
ich habe schon vieles versucht nur ich bekomms nich hin, das der dann immer bei 125 anfängt und nich bei 0.

also wenn ihr mir helfen könntet wäre ich euch sehr dankbar

Code:
list      p=16F84A           	  ; list directive to define processor
#include <p16F84A.inc>        	  ; processor specific variable definitions

__CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _RC_OSC

;***** VARIABLE DEFINITIONS *****
w_temp        Equ     0x0C        	  ; variable used for context saving 
status_temp   Equ     0x0D       	  ; variable used for context saving

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

T0SC	Equ OPTION_REG

ORG     0x000           	  ; processor reset vector
goto    main            	  ; go to beginning of program

;Interrupt routine falls diese mal benötigt wird
ORG     0x004           	  ; interrupt vector location
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
		
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	
;       PortA wird hier initialisiert  
BCF STATUS, RP0				  ; RP0=0
CLRF PORTA					  ; Initialisierung von PortA
; durch löschen des Data latches
BSF STATUS, RP0				  ; Markiere Bank 1
MOVLW 0x0F					  ; nutzen für den DatenVerzeichniss
		
MOVWF TRISA&0x7f			  ; SET RA<3:0> als Input
						
; SET RA4 als Output
;   	PortB wird hier initialisiert  
BCF STATUS, RP0				  ; RP0=0
CLRF PORTB					  ; Initialisierung von PortA
						
; durch löschen des Data latches
BSF STATUS, RP0				  ; Markiere Bank 1
MOVLW 0xCF					  ; nutzen für den DatenVerzeichniss

MOVWF TRISB&0x7f			  ; SET RA<3:0> als Input
						
; SET RB<5:4> als Output

; SET RB<7:6> als Output
									  
movwf   w_copy       		  ; w retten 
swapf   STATUS, w      		  ; STATUS retten 
movwf   s_copy      		  ;

NOCHMAL 
BCF STATUS, RP0				  ; auf Bank 0 wechseln
MOVLW   0x7D			  	  ; 0x83 = 131 ; 0x7D = 125
MOVWF   TMR0				  ; 131 oder 125 müsste hier drin stehen
MOVLW 1
TIMER   
BSF STATUS, RP0				  ; auf Bank 1 wechseln
;		BCF OPTION_REG&0x7f, T0SE	  ; bin mir nich sicher ob ichs brauche beim Vorteiler

;		Flanke
BSF OPTION_REG&0x7f, T0SE	  ; hier wird für RA4 die Low Flanke gewählt
MOVF T0SE, F			  	  ; hier wird es unter der Speicherzelle gesichert
		
;		movf TMR0, F			 
; das ist das Timer-Register

;		Vorverteiler Aktivieren
BCF OPTION_REG&0x7f, PSA	  ; hier mit wird der Vorverteiler auf 0 gesetzt und aktiviert
BCF OPTION_REG&0x7f, PS2	  ; damit man den vorverteiler auf 16/1 einstellt
BSF OPTION_REG&0x7f, PS1	  ; hier wird PS1 auf 1 gesetzt
BSF OPTION_REG&0x7f, PS0	  ; hier wird PS0 auf 1 gesetzt	
		
;Timer
;BSF OPTION_REG&0x7f, T0CS	  ; T0SC wird auf 1 gesetzt damit der Vorverteiler mit benutzt werden kann
BCF OPTION_REG&0x7f, T0CS     ; hier wird in der Speicherzelle T0SC die 0 gesetzt
MOVF T0CS, F			      ; nun wird es unter der Speicherzelle gesichert
		
NOP
NOP

ADDWF TMR0,W  ; +1 ergibt 0x00 in w, wenn TMR0=0xFF 
BTFSS STATUS,Z  ; Sprung, wenn Z-Flag gesetzt 
GOTO TIMER 
GOTO NOCHMAL
		
END
wenn fehler im code sind bitte sagt sie mir und ich versuche es entweder mit euch oder alleine zu lösen.

aber ich bin für alle hilfe dankbar die ihr mir gebt

mit freundlichen grüßen
d.stolarek