For your first part – when I have a large program and want to use a function-like appraoch, I do something like this.
In this manner, I can use names that make sense but reuse the globals each time.Code:' Variables for use inside functions temp1 var word temp2 var word temp3 var word ' for Divide Function Numerator var temp1 Denominator var temp2 DivAnswer var temp3 ' for Square Function tobesquared var temp1 SqrAnswer var temp2 Main: ' Do lots of stuff here Numerator = 45 Denominator = 5 Gosub Divide Serout, Portb.1, 2, (#DivAnswer) ' More stuff here tobesquared= 9 Gosub Squared Serout, Portb.1, 2, (#SqrAnswer) ' Do more stuff Goto Main ' Divide Function Divide: DivAnswer = Numerator/Demonimator Return ' Squared Function Squared: SqrAnswer = tobesquared * tobesquared Return
For your second part try something like this:
Code:... counter var byte compare var bit counter = 0 GOTO Main ' jump over subroutine (to wherever I want, even line 100) 'Init ABIC Suroutine INTABIC: LOW DIN LOW SCLK HIGH SCLK HIGH DIN LOW SCLK LOW DIN RETURN Main: for counter = 7 to 0 step -1 if config_page_1.0[counter] Then HIGH DIN else LOW DIN ENdif HIGH SCLK LOW SCLK next counter GOSUB INITABIC for counter = 7 to 0 step -1 if config_page_3.0[counter] Then HIGH DIN else LOW DIN ENdif HIGH SCLK LOW SCLK next counter GOSUB INITABIC etc. GOTO Main END




Bookmarks