PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mein Entprellprog. unter STK500



bigbehrens
04.03.2007, 12:55
Hallo Kollegen,

habe am Freitag das STK500 bekommen und wollte nun meine eigenen Progr. installieren.
Habe aber wieder ein kleines Problem, vielleicht könnte mal jemand drüber gucken ??? Bitte!




.include "m8515def.inc"

.def temp = R16
.def eingang = R17
.def ziehzeit = R18
.def wartezeit = R19



.cseg
.org 0x000
rjmp init
.org 0x009
rjmp timer_ov

.org 0x015

init:
; PORT D als Eingang deklariert
ldi temp, 0x00
out DDRD, temp
ldi temp, 0xFF
out PIND, temp
; PORT B als Ausgang deklariert
ldi temp, 0xFF
out DDRB, temp
ldi temp, 0xFF
out PORTB, temp
; Stackpointer init.
ldi temp, LOW(RAMEND)
out SPL, temp
ldi temp, HIGH(RAMEND)
out SPH, temp
; Timer für Entprellen init
ldi temp, 0b00000001 ; Teiler auf 1 zum Test sonst 1024
out TCCR0, temp
ldi temp, 0b00000010
out TIMSK, temp ; Interrupt bei Overflow


ldi ziehzeit, 0xFF
ldi wartezeit, 0x02 ; Testweise auf 02 sonst FF

; Wartet auf Tasteneingabe.
warte_taste:
in eingang, PIND
ldi temp, 0xFF
cp eingang, temp
breq warte_taste
dec ziehzeit
out PORTB, ziehzeit
rcall warte
rjmp warte_taste

endloop:
rjmp endloop

; Hier wird das "wartezeit" heruntergezählt.
timer_ov:
dec wartezeit
reti

; Nur jeder ca. 1000 Taster wird gezählt. Zeit dafür!
warte:
sei
lauf:
ldi temp, 0x00
cp wartezeit, temp
brne lauf
cli
ret



AVR Studio sagt zwischendurch beim Sim :

AVR Simulator: Invalid opcode 0xffff at address 0x000007

Was bedeutet das?

Funktion sollte sein, man drückt eine Taste und es zählt einen weiter. Wenn man die Taste gefrückt hällt, zählt die Taste immer nach Zeitablauf weiter.

Vielen Dank schon mal!

Rofo88
04.03.2007, 13:42
AVR Simulator: Invalid opcode 0xffff at address 0x000007
Was könnte das den nur sein??


.cseg
.org 0x000
rjmp init
.org 0x009
rjmp timer_ov

wenn Du jetzt noch mal einen Blick ins Datenblatt oder ins .Include-File wirfst steht da

.equ OVF0addr=$007 ;Overflow0 Interrupt Vector Address
.equ URXCaddr=$009 ;UART Receive Complete Interrupt Vector Address

Also was sucht der UART Receive Complete bei Dir im Programm??

.org 0x009 duch .org 0x007 ersetzen.

bigbehrens
05.03.2007, 21:49
Vielen DanK! Für die Info!