Problem med lite kod

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
PaNiC
Inlägg: 2610
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Problem med lite kod

Inlägg 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.
Användarvisningsbild
erixon
Inlägg: 380
Blev medlem: 27 augusti 2003, 10:21:58

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

Inlägg 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 :)
Användarvisningsbild
Melker
Inlägg: 410
Blev medlem: 26 maj 2003, 22:17:34
Ort: Umeå

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

Inlägg 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:

Kod: Markera allt

out portb 10100101
?

Det skulle underlätta ganska mycket i ett av mina kommande projekt.
Användarvisningsbild
Melker
Inlägg: 410
Blev medlem: 26 maj 2003, 22:17:34
Ort: Umeå

Inlägg av Melker »

Skriv 0b innan talet, tex 0b01010101 och 0x för hexadecimala tal, tex 0xFF
Användarvisningsbild
PaNiC
Inlägg: 2610
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Inlägg av PaNiC »

Lysande. Tack!
Användarvisningsbild
erixon
Inlägg: 380
Blev medlem: 27 augusti 2003, 10:21:58

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

Inlägg av PaNiC »

erixon: Det vill jag också göra. Inte just nu dock men i framtiden.
Användarvisningsbild
PaNiC
Inlägg: 2610
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Inlägg 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?
Användarvisningsbild
Melker
Inlägg: 410
Blev medlem: 26 maj 2003, 22:17:34
Ort: Umeå

Inlägg av Melker »

Vad är det för RTC du ska använda?
Användarvisningsbild
PaNiC
Inlägg: 2610
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Inlägg av PaNiC »

Realtidsklockan.
Användarvisningsbild
PaNiC
Inlägg: 2610
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Inlägg av PaNiC »

Det jag vill åstadkomma är att varje sekund avbryts en loop och ökar ett register med ett.
Användarvisningsbild
Melker
Inlägg: 410
Blev medlem: 26 maj 2003, 22:17:34
Ort: Umeå

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

Inlägg av PaNiC »

Jaså det var så du menade.
En kristall mellan Tosc1 och Tosc2 var hårdvaran jag tänkte mig.
Skriv svar