OK, es geht in die richtige Richtung

Die LED leuchtet deshalb nicht hell, weil Dein Programm in das end hineinläuft. Das bedeutet, der Controller springt an die Adresse 0000 zurück und Dein Programm beginnt von vorn.
Dort werden die Ausgänge und somit die LED wieder ausgeschaltet.
Da die LED danach wieder eingeschaltet wird, ist das Programm nicht ganz in Ordnung. Zuerst musst Du dafür sorgen, dass das Programm nach dem Einschalten der LED stehenbleibt.

Bitte halte Dich an die Schreibregeln:

Wenn Du eine HEX-Zahl verwendest, dann schreibe 0x4C oder h'4C'
Wenn Du eine DEZIMALE-Zahl verwendest, dann schreibe d'255'
Wenn Du eine BINÄRE-Zahl verwendest, dann schreibe b'00001111'
Wenn Du einen Buchstaben aus der ASCII-Tabelle verwendest, dann schreibe a'T'

Hier sind ein paar Kommentare und Ergänzungen:


Code:
;*****************************************************************
;Programm
;*****************************************************************
   
     
	movlw 3		; BITTE SCHREIBE movlw d'3' FÜR DEZIMALE ZAHL
	movwf 0x20	; Speicherzelle wird die Zahl3 geladen

anf   
	btfsc PORTA, 0	; Taster gedrückt = 0! zur Verschachtelen Zählschleife springen
	goto anf		; DU VERWENDEST EINEN ÖFFNER???

;*************************************************************************
;Zählschleife
;*************************************************************************
     
	movlw 255		; LADE REGISTER MIT movlw d'100'
	movwf 0x21

S1
	movlw 255		; LADE REGISTER MIT movlw d'200'
	movwf 0x22	; 100 x 200 = 20000 TAKTE+Zusatzbefehle (goto...)  

S11      	
	decfsz 0x22, 1	; SCHREIBE NUR decfsz 0x22
	goto S11	
	decfsz 0x21, 1	; SCHREIBE NUR decfsz 0x21
	goto S1     

;*************************************************************************
	goto weiter   	; RAUS, DAS goto IST ÜBERFLÜSSIG
weiter   			; RAUS, DIE SPRUNGMARKE IST ÜBERFLÜSSIG
	nop		; RAUS, BEFEHL IST ÜBERFLÜSSIG
	nop		; RAUS, BEFEHL IST ÜBERFLÜSSIG
	nop		; RAUS, BEFEHL IST ÜBERFLÜSSIG
	nop		; RAUS, BEFEHL IST ÜBERFLÜSSIG

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
; DER TASTER WIRD GERADE GEDRÜCKT, ALSO WARTE, BIS WIEDER LOSGELASSEN

t_los       
	btfss PORTA, 0	;Taster losgelassen =1? zum Counter übergehen
	goto t_los

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
; NOCHMAL ZEITSCHLEIFE, WEIL DER TASTER AUCH BEIM LOSLASSEN PRELLEN KANN
	
	movlw d'100'	; LADE REGISTER MIT movlw d'100'
	movwf 0x21

S2
	movlw d'200'	; LADE REGISTER MIT movlw d'200'
	movwf 0x22	; 100 x 200 = 20000 TAKTE+Zusatzbefehle (goto...)  

S22      	
	decfsz 0x22	; SCHREIBE NUR decfsz 0x22
	goto S22	
	decfsz 0x21	; SCHREIBE NUR decfsz 0x21
	goto S2     
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!	
	
	
         
	decfsz 0x20, 1	; Counter = 0 - Led an ; SCHREIBE NUR decfsz 0x20
	goto anf
	bsf PORTB, 0      
	clrw		; RAUS, BEFEHL IST ÜBERFLÜSSIG
			
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!	
loop	
	goto loop		; ENDLOS-SCHLEIFE, HIER BLEIBT DAS PROGRAMM STEHEN UND LÄUFT NICHT IN end
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       
end