Assembler blinkprogram.

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Arnta.
Inlägg: 7
Blev medlem: 19 augusti 2004, 10:45:28

Assembler blinkprogram.

Inlägg av Arnta. »

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.
Användarvisningsbild
PaNiC
Inlägg: 2565
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Inlägg av PaNiC »

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
Det här blinkar hela portb.
Borde rättare sagt. Skrev det nyss.
Kanhända att namnet på def-filen är fel.
Arnta.
Inlägg: 7
Blev medlem: 19 augusti 2004, 10:45:28

Inlägg av Arnta. »

DET FUNKAR!!!

TACK PaNiC.
Användarvisningsbild
Hedis
Inlägg: 2488
Blev medlem: 8 december 2003, 15:10:44
Ort: Vänersborg
Kontakt:

Inlägg av Hedis »

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.
Skriv svar