Hejsan.
Kör AVRstudio med AVRISP programmerare.
För att testa att ladda ner ett program till min ATmega8515
och se att allt funkar så behöver jag ett program.
Är nybörjare vad det gäller assemblerprogrammering.
Är det någon som har ett simpelt program som får en lysdiod att blinka.
Tack på förhand.
ARNTA.
Assembler blinkprogram.
Kod: Markera allt
.include "mega8515def.inc"
.def temp=r16
Reset:
;Stackpekarinit
ldi r16,high(RAMEND)
out SPH,r16
ldi r16,low(RAMEND)
out SPL,r16
;Specificerar portb som utgång
ldi temp, 255
out ddrb, temp
main:
ser temp
out portb, temp
rcall delay
clr temp
out portb, temp
rcall delay
rjmp main
delay:
inc r17
cpi r17,255
brne delay
clr r17
inc r18
cpi r18,255
brne delay
clr r18
ret
Borde rättare sagt. Skrev det nyss.
Kanhända att namnet på def-filen är fel.
Ett smidigare sätt att hantera alla register mm på är att göra som port configen är gjord.
Alltså att man specar .def temp=r16 så behöver du bara skriva tex. LDI temp,$ff för att ladda r16 med 255.
.def temp=r16
.def temp2=r17
Så har du 2 register med namn istället för värden.
Blir enklare så. Men se då till att bara använda namn. För annars kan man tabba sig gött, ändra ett register o missar att man anropade det direkt i koden som r16 tex istället för temp. Vet inte hur många timmar jag letade fel en gång jag missat det när jag knyckte en subrutin ifrån nätet.
Alltså att man specar .def temp=r16 så behöver du bara skriva tex. LDI temp,$ff för att ladda r16 med 255.
.def temp=r16
.def temp2=r17
Så har du 2 register med namn istället för värden.
Blir enklare så. Men se då till att bara använda namn. För annars kan man tabba sig gött, ändra ett register o missar att man anropade det direkt i koden som r16 tex istället för temp. Vet inte hur många timmar jag letade fel en gång jag missat det när jag knyckte en subrutin ifrån nätet.