Code:
; Programmname: entprell
; Version: 0.1
; Datum: 27.02.2007
; Autor: Manuel Behrens
; Programmfunktion:
.include "m8def.inc"
.def temp = R16 ; Temporärer Speicher zum Beispiel zur Initialisierung
.def anschlaege = R17 ; Speichert die Anschläge des Tasters 0 an Port D
.def eingang = R18 ; Port D wird in eingang geschrieben um vergleichen zu können
.def zaehler = R19 ; zaehler wird durch Timer0 Overflow hochgezaehlt
.org 0x000
rjmp init
.org 0x009
rjmp timer0_overflow
; Initialisierungsphase
init:
;Stackpointer wird initalisiert
ldi temp, LOW(RAMEND)
out SPL, temp
ldi temp, HIGH(RAMEND)
out SPL, temp
;Timer initalisiern
ldi temp, 0b00000001
out TCCR0, temp ; Takteiler auf 1
ldi temp, 0b00000001
out TIMSK, temp ; Aktiviert Interrupt bei Overflow
;Taster 0 am Port D init.
ldi temp, 0x00
out DDRB, temp
; Programmablauf (Schleife wartet auf Taster 0 am Port D)
main:
in eingang, PIND ; Port D wird in eingang geschrieben
ldi temp, 0x00
cp eingang, temp ; eingang wird mit Null verglichen
breq main ; wenn gleich springe main
inc anschlaege ; anschlaege plus 1
ldi zaehler, 0xFF ; zaehler auf Zählanfang
sei ; aktiviert Interrupts
count:
cp temp, zaehler ; Null wird mit zaehler verglichen
brge count ; wenn größer oder gleich springe count
nop
cli ; deaktiviere Interrupts
rjmp main ; Rücksprung nach main
; Handler: Timer0 Overflow
timer0_overflow:
dec zaehler ; zaehler minus 1
rjmp count ; Sprung nach count
Moin,
wer oder was setzt mein Globales Interrupt Flag wieder auf Null. AVR Studio gibt beim simulieren
Loaded plugin Atmel AVR Assembler
Loaded partfile: C:\Programme\Atmel\AVR Tools\PartDescriptionFiles\ATmega8.xml
AVR Simulator: Please wait while configuring simulator...
AVR Simulator: ATmega8 Configured OK
Loaded objectfile: d:\C - Programme\atmel-projekte\entprell\entprell.obj
AVR Simulator: Uninitialized stack pointer used at 0x001c
AVR Simulator: Excessive stack overflow, stop sim
aus!
Danke schon mal!
Lesezeichen