"return"-frågor

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

"return"-frågor

Inlägg av squiz3r »

Hej, jag har två frågot om komandot "return" till PIC i ASM.

Fråga 1:

Kan man ha två return i samma Call. Ex:

Kod: Markera allt


....
call test
.....

;******** test ******

 test
 movf	sens_1_var,F
 BTFSS	STATUS, Z
 return
 BTFSS   sens1				;If sens1 not high  then...
 goto 	breaking_time		;somebody breaking i	
 return

Fråga 2:

Kan man ha en call i en annan call? Ex.

Kod: Markera allt

....
call test
....

;***** test ******

test
.....
call test2
.....
return

;***** test2 *****

test2
.....
.....
return
Om jag var otydlig med något får ni gärna säga det..

Tack på förhand!
//Daniel A
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

1. Ja, men det är inte "snyggt". Koden blir renare med en goto från det
första stället till den andra (och enda) returnen. Ibland vill man lägga till
något som alltid ska köras innen return, och det är enklare om det bara
finns en return...

2. Ja, tills stacken tar slut. Leta efter "stack" i databladet.
Om stacken tar slut så får du alla möjliga konstiga fel.
Jag tror även att MPSIM håller reda på det. Men bäst är att själv
ha lite koll på hur "djupa" ens subrutiner är...

> Om jag var otydlig med något får ni gärna säga det..

Fullständigt solklart... :-)
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Okej, tack så mycket! Jag ska ta en titt på "stack" i data bladet :)

//Daniel A
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

I ett av de första kapitlen där det pratas om program-minnet.

En annan liten sak...
Fler än en *ingång* till en subrutin är mer vanligt (och användbart).
T.ex kan en delay-subrutin ha flera ingångar för olika fördröjningar, men
sedan ha en gemensam fördröjningsloop och return.
Skriv svar