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







Zitieren
Lesezeichen