hallo,
ich programmiere seit zwei tagen in assembler und ich bekomme es nicht hin eine led blinken zu lassen.
hier mein code
Code:
.NOLIST ; List-Output unterdrücken
.INCLUDE <m32def.inc> ; das gibt es für jeden Controllertyp
.LIST ; List-Output wieder aufdrehen
.CSEG ; was nun folgt, gehört in den FLASH-Speicher
.org $000
.EQU fq = 16000000 ; Quarzfrequenz festlegen
;------------------------------------------------------
; Start Adresse 0000
;------------------------------------------------------
RESET:
rjmp INIT ; springen nach "INIT"
;------------------------------------------------------
; ISR VECTORS
;------------------------------------------------------
; ..... hier kommen dann die Sprungadressen für die Interrupts rein
; dazu kommen wir noch
.org $016
rjmp wait
.ORG INT_VECTORS_SIZE ; dadurch haben wir für die Vektoren Platz gelassen
wait: ;timer Warteschleife
inc r17 ;r17 um eins erhöhen
cpi r17,61 ;vergleichen von r17 mit einer variablen
breq main ;wenn r17 gleich variable dann springe zu main
reti ;rücksprung
INIT:
;------------------------------------------------------
; INITIALIZE
;------------------------------------------------------
.DEF Stackpointer = r24
ldi r24,high(RAMEND) ;Stack Pointer setzen
out SPH,r24 ; "RAMEND" ist in m8def.inc (s.o.) festgelegt
ldi r24,low(RAMEND) ;
out SPL,r24 ;
sei
ldi r16,0b00000101
out TCCR0,r16 ;101: Clock = Taktfrequenz / 1024
ldi r16,0b00000010
out TIMSK,r16 ;1: Int bei Überlauf
ldi r16,0b00000000
out TIFR,r16
ldi r16,0b10000000
out ddrd,r16 ;portd.7 = output
ldi r16,0
out portd,r16 ;portd.7 = low
main:
clr r17 ;r17 wieder auf null setzen
com r16 ;invertieren des registers r16
main1:
out portd,r16 ;invertieren von portd
rjmp main1 ;rücksprung zu main1
ich hoffe dass ich wenigstens einigermasen alles deklariert habe
währe schön wenn ihr mir helfen könnt
mfg franzl
Lesezeichen