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
Lesezeichen