View previous topic :: View next topic |
Author |
Message |
TSEYFARTH
Joined: 01 Jul 2006 Posts: 1054
|
Posted: Thu Aug 14, 2014 8:58 pm Post subject: CONFIG SUBMODE = NEW Problem and Question |
|
|
Hello All,
I am breaking apart a working program into a new program that should come out the same, but will utilize includes. All Declare Subs are remarked. Many subs have been moved out of the main .bas file, but there remains some. My problem is, the compiler complains that the sub or function cannot be found. When using CONFIG SUBMODE = NEW, do ALL subs have to be outside the .bas file?
At the start of the program I have
Code: |
$regfile = "m168pdef.dat"
$hwstack = 256 '128 '32
$swstack = 256 '128 '20 '10
$framesize = 160 '144 '128 '96 '40
$crystal = 8000000 '8MHz (internal RC)
$baud = 9600
$noramclear
Debug Off 'Off
CONFIG SUBMODE = NEW
|
Again, all Declare Subs are remarked. The compiler complains about ones that remain in the .bas file.
Code: |
Call Update_Ack_Int
|
The compiler also complains about another sub, also in the main .bas file.
Code: |
Call Assemblenibble(1)
|
These are at the end of the .bas file.
Code: |
'**********************************************************************************************
'**********************************************************************************************
Sub Assemblenibble(byval Cnt As Byte)
Txbuffer(8) = Device_type Or Cnt
End Sub
'**********************************************************************************************
'**********************************************************************************************
Sub Update_Ack_Int
'ACK Interval managed by Random Number Generator
_rseed = Address + 100 '_rseed = Address
Do
Ack_interval = RND(3100) ' Rnd(253) '65535
Loop Until Ack_Interval > 270
End Sub
|
Also, is there anything "wrong" with using "Return" at the end of a Sub, or within a Sub? This is a habit from another IDE.
Thanks all,
Tim
(BASCOM-AVR version : 2.0.7.7 ) |
|
Back to top |
|
|
albertsm
Joined: 09 Apr 2004 Posts: 5913 Location: Holland
|
Posted: Thu Aug 14, 2014 9:14 pm Post subject: |
|
|
you really should read the help.
When you use CONFIG SUBMODE=NEW, most behaviour is changed :
- there is no need to DECLARE a sub/function before you call it. But, the actual sub/function code must be placed before the actual call!
this means that you either need to use some $include or when you leave the sub in the main program, you need to have the code before the actuall call :
sub test()
end sub
test '
call test 'same as test
in this sample it is correct since the sub implementation is before the actuall call.
if you do call the sub/function without a DECLARE or without the code preceding it, the compiler does not know the sub/function.
RETURN : a bad idea. it can be done when you do not pass parameters. only use return when there is a matching label that is called like :
sub test()
print "test"
gosub abc
exit sub
abc:
print "abc"
return
End Sub _________________ Mark |
|
Back to top |
|
|
TSEYFARTH
Joined: 01 Jul 2006 Posts: 1054
|
Posted: Thu Aug 14, 2014 9:30 pm Post subject: |
|
|
Hello Mark and thank you for your reply.
Quote: |
you really should read the help.
|
I did sir.
Quote: |
When you use CONFIG SUBMODE=NEW, most behaviour is changed :
- there is no need to DECLARE a sub/function before you call it.
|
The old Declares were remarked.
Quote: |
But, the actual sub/function code must be placed before the actual call!
|
OK. This explains it. So really, when using CONFIG SUBMODE=NEW, it is best to have all subs in a .inc file with the $Include statement at the top. That would virtually put them all before any calls are made.
Makes sense since the old way required Declare Sub to be before any calling - just a little counter intuitive since it appeared that the Config statement somehow allowed no difference to where the Subs are located; by virtue of the compiler finding them first with the $Include at the top, the same requirement is met.
Thanks again for the reply,
Tim
[/quote] |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You cannot download files in this forum
|
|