Ferdinand
06.05.2005, 21:11
Hi
was mus ich endern wen ich hir
; ---------------------------------------
; Test-Projekt: blinkende LED an Port PB0
; ---------------------------------------
;
.include "2313def.inc" ;Definitionsdatei laden
.cseg ;Beginn eines Code-Segmentes
.org 0 ;Startadresse=0
;
start: ldi r16,low(ramend) ;Stackpointer auf
out spl,r16 ;RAM-Ende setzen
ldi r16,0b00000001 ;PortB: PB0 auf Ausgang
out ddrb,r16 ;setzen
clr r16 ;Anfangswert setzen
;
loop: out portb,r16 ;Daten an PortB ausgeben
rcall wait ;Warteschleife aufrufen
inc r16 ;Datenwert erhöhen
rjmp loop ;Schleife neu beginnen
;
; Warteschleife (ungefähr 500ms)
;
wait: ldi r19,10 ;r19, r18 und r17
clr r18 ;ergeben zusammen
clr r17 ;einen 3-Byte-Zähler
wait1: dec r17 ;niedrigstes Byte -1
brne wait1 ;0 erreicht? nein -> Schleife
dec r18 ;mittleres Byte -1
brne wait1 ;0 erreicht? nein -> Schleife
dec r19 ;höchstes Byte -1
brne wait1 ;0 erreicht? nein -> Schleife
ret ;Schleifenende, Rückkehr
stat minus plus schalten wiel
danke
by Ferdinand
was mus ich endern wen ich hir
; ---------------------------------------
; Test-Projekt: blinkende LED an Port PB0
; ---------------------------------------
;
.include "2313def.inc" ;Definitionsdatei laden
.cseg ;Beginn eines Code-Segmentes
.org 0 ;Startadresse=0
;
start: ldi r16,low(ramend) ;Stackpointer auf
out spl,r16 ;RAM-Ende setzen
ldi r16,0b00000001 ;PortB: PB0 auf Ausgang
out ddrb,r16 ;setzen
clr r16 ;Anfangswert setzen
;
loop: out portb,r16 ;Daten an PortB ausgeben
rcall wait ;Warteschleife aufrufen
inc r16 ;Datenwert erhöhen
rjmp loop ;Schleife neu beginnen
;
; Warteschleife (ungefähr 500ms)
;
wait: ldi r19,10 ;r19, r18 und r17
clr r18 ;ergeben zusammen
clr r17 ;einen 3-Byte-Zähler
wait1: dec r17 ;niedrigstes Byte -1
brne wait1 ;0 erreicht? nein -> Schleife
dec r18 ;mittleres Byte -1
brne wait1 ;0 erreicht? nein -> Schleife
dec r19 ;höchstes Byte -1
brne wait1 ;0 erreicht? nein -> Schleife
ret ;Schleifenende, Rückkehr
stat minus plus schalten wiel
danke
by Ferdinand