Inte ens läraren kan hjälpa mig med detta (!)
iaf så vill inte datorn inte komma ur mina subrutiner.
Detta är alltså ett enkelt blinka lysdioder på portB (alla utgångar har LED )
klockas med intern 1Mhz, använder STK500, och AVRstudio.
programmet funkar fram tills jag ska in i första subrutinen..
sedan händer det inget mer.. Lite fundersam om jag lagt in subrutinerna på rätt ställe?
Tacksam för hjälp..
Kod: Markera allt
.include "m16def.inc"
.def count = r18
.def temp = r17
.org 0
jmp main ; Gå till huvudprogrammet
wait_1ms:
ldi count,0xc8 ; 200dec
loop_1ms:
dec count
cpi count,0
brne loop_1ms
ret
wait_1s:
ldi count,0xc8 ; 200 dec
loop_1s:
rcall wait_1ms
dec count
cpi count,0
brne loop_1s
ret
main:
ldi temp, HIGH(RAMEND) ; Beräkna övre del av SP
out SPH, temp ; och lagra i SPH
ldi temp, low(RAMEND) ; därefter lägre del av SP
out SPL, temp ; och lagra i SPL
ldi temp, 0xff
out DDRB, temp ; Sätter PortB = alla utgångar
ldi r28, 0
out DDRA, r28 ; Sätter PortA = Alla ingångar
ldi temp, 0x00
out PORTB, r28 ; Nollställ
loop:
ldi temp, 0x0f
out PORTB, temp
rcall wait_1s
ldi temp, 0xff
out PORTB, temp
rcall wait_1s
jmp loop
