Sida 1 av 1

"return"-frågor

Postat: 11 mars 2007, 12:54:23
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

Postat: 11 mars 2007, 13:02:53
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... :-)

Postat: 11 mars 2007, 13:38:51
av squiz3r
Okej, tack så mycket! Jag ska ta en titt på "stack" i data bladet :)

//Daniel A

Postat: 11 mars 2007, 21:12:24
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.