Sida 1 av 2
Problem med lite kod
Postat: 27 september 2003, 17:30:58
av PaNiC
ElektronikTomten hjälpte mig att få igång mitt STK500-kit så nu är jag glad

.
Fast jag har lite problem. Jag tänkte att som första program göra något som räknar upp binärt och sedan ner igen.
Så här ser koden ut:
Kod: Markera allt
.include "8515def.inc"
.def temp = R16
reset:
ldi temp, 0
out ddrb, temp
rjmp upp
upp:
rcall skriv
inc temp
rcall delay
cpi temp,255
breq ner
rjmp upp
ner:
rcall skriv
dec temp
rcall delay
cpi temp,0
breq upp
rjmp ner
delay:
inc r17
cpi r17,255
brne delay
clr r17
inc r18
cpi r18,255
brne delay
clr r18
ret
skriv:
out portb, temp
ret
Lysdioderna på portb förblir släckta och simulatorn fastnar på "rcall skriv" i upp-rutinen. Förslag?
Ja. Jag är n00b.
Postat: 27 september 2003, 18:03:01
av erixon
Du måste initsera stack pekaren =)
Exempel
ldi rTEMP,low(RAMEND)
out SPL,rTEMP
ldi rTEMP,high(RAMEND)
out SPH,rTEMP
edit: skrev så syns vad jag menar

Postat: 27 september 2003, 19:04:24
av PaNiC
Det där var något jag inte har sett innan.
Får leta upp lite information om vad det är.
Tack!
Edit: Sweet.. Det ser ganska kul ut

Postat: 27 september 2003, 20:07:13
av Melker
Det där pekar stackpekaren till slutet av RAM-minnet. Ifall du inte vet vad stacken är, så är det tex där adressen till nästa instruktion när en subrutin är slut lagras.
Postat: 30 september 2003, 19:04:37
av PaNiC
Ja koden fungerar nu som tidigare antytt. Funderade lite på en sak nu bara. Kan man inte köra ut binära tal direkt? Dvs:
?
Det skulle underlätta ganska mycket i ett av mina kommande projekt.
Postat: 30 september 2003, 19:07:47
av Melker
Skriv 0b innan talet, tex 0b01010101 och 0x för hexadecimala tal, tex 0xFF
Postat: 30 september 2003, 19:13:59
av PaNiC
Lysande. Tack!
Postat: 30 september 2003, 21:22:48
av erixon
Vad jag vet kan man inte sätta värdet direkt utan är tvunget att gå vi ett register...
Där i mot kan man hä på/av en bit på porten med hjälp av sbi och cbi men trolig är det inte vad du inte vill göra
Postat: 30 september 2003, 22:23:25
av PaNiC
erixon: Det vill jag också göra. Inte just nu dock men i framtiden.
Postat: 6 januari 2004, 20:14:17
av PaNiC
I dessa digra dagar då forumet inte fungerar ordentligt får jag istället för att skapa en ny tråd fortsätta på denna. Problemet denna gången är RTC.
Till min nixie-klocka ska jag använda Mega16 samt RTC. Jag har läst PDFen om det från Atmel men där fanns bara kodexempel i C. Jag skulle vilja ha ett exempel i assembler. Kan någon hjälpa till med detta?
Postat: 6 januari 2004, 21:00:31
av Melker
Vad är det för RTC du ska använda?
Postat: 6 januari 2004, 22:34:29
av PaNiC
Realtidsklockan.
Postat: 6 januari 2004, 22:47:03
av PaNiC
Det jag vill åstadkomma är att varje sekund avbryts en loop och ökar ett register med ett.
Postat: 7 januari 2004, 00:18:30
av Melker
Jag vet vad RTC är, men det finns externa RTC-kretsar som man läser ifrån vad tiden är eller så kan man göra en med interna interrupts. Om det är interrupts du ska använda så kan du läsa på tex avr-freaks om hur det fungerar, finns något exempel där hur man använder timers. Står även en del om interrupts på
http://www.avrbeginners.net/
Postat: 7 januari 2004, 01:02:59
av PaNiC
Jaså det var så du menade.
En kristall mellan Tosc1 och Tosc2 var hårdvaran jag tänkte mig.