Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BASCOM AVR, help reference (2007).PDF
Скачиваний:
292
Добавлен:
12.08.2013
Размер:
17.02 Mб
Скачать

© MCS Electronics, 1995-2007

$LIB

Example

$regfile = "m48def.dat" $crystal = 4000000 $baud = 19200

Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

'In order to let this work you must put the mylib.lib file in the LIB dir 'And compile it to a LBX '-------------------------------------------------------------------------

'define the used library $lib"mylib.lbx"

'you can also use the original ASM : '$LIB "mylib.LIB"

'also define the used routines $external Test

'this is needed so the parameters will be placed correct on the stack Declare Sub Test(byval X Asbyte , Y Asbyte)

'reserve some space

Dim Z As Byte

'call our own sub routine Call Test(1 , Z)

'z will be 2 in the used example

End

$FRAMESIZE

Action

Sets the available space for the frame.

Syntax

$FRAMESIZE = var

Remarks

Var A numeric decimal value.

While you can configure the Frame Size in Options, Compiler, Chip, it is good practice to put the value into your code. This way you do no need the cfg(configuration) file.

The $FRAMESIZE directive overrides the value from the IDE Options.

It is important that the $FRAMESIZE directive occurs in your main project file. It may not be included in an $include file as only the main file is parsed for $FRAMESIZE

page -215-

© MCS Electronics, 1995-2007

See also

$SWSTACK, $HWSTACK

Example

'-----------------------------------------------------------------------------

 

---

: adc.bas

'name

'copyright

: (c) 1995-2005, MCS Electronics

'purpose

: demonstration of GETADC() function for 8535 or

M163 micro

: Mega163

'micro

'suited for demo

: yes

'commercial addon needed

: no

'use in simulator

: possible

' Getadc() will also work for other AVR chips that have an ADC converter

'-----------------------------------------------------------------------------

 

---

' we use the M163

$regfile = "m163def.dat"

$crystal = 4000000

 

$hwstack = 32

' default use 32

for the hardware stack

'default use 10

$swstack = 10

for the SW stack

'default use 40

$framesize = 40

for the frame space

 

$HWSTACK

Action

Sets the available space for the Hardware stack.

Syntax

$HWSTACK = var

Remarks

Var

A numeric decimal value.

 

 

While you can configure the HW Stack in Options, Compiler, Chip, it is good practice to put the value into your code. This way you do no need the cfg(configuration) file.

The $HWSTACK directive overrides the value from the IDE Options.

It is important that the $HWSTACK directive occurs in your main project file. It may not be included in an $include file as only the main file is parsed for $HWSTACK.

The Hardware stack is room in RAM that is needed by your program. When you use GOSUB label, the microprocessor pushes the return address on the hardware stackand will use 2 bytes for that. When you use RETURN, the HW stack is popped back and the programcan continue at the proper address. When you nest GOSUB, CALL or functions, you will use more stack space. Most statements use HW stack because a machine language routine si called.

page -216-

© MCS Electronics, 1995-2007

See also

$SWSTACK , $FRAMESIZE

Example

'-----------------------------------------------------------------------------

 

---

: adc.bas

'name

'copyright

: (c) 1995-2005, MCS Electronics

'purpose

: demonstration of GETADC() function for 8535 or

M163 micro

: Mega163

'micro

'suited for demo

: yes

'commercial addon needed

: no

'use in simulator

: possible

' Getadc() will also work for other AVR chips that have an ADC converter

'-----------------------------------------------------------------------------

 

---

' we use the M163

$regfile = "m163def.dat"

$crystal = 4000000

 

$hwstack = 32

' default use 32

for the hardware stack

'default use 10

$swstack = 10

for the SW stack

'default use 40

$framesize = 40

for the frame space

 

$INC

Action

Includes a binary file in the program at the current position.

Syntax

$INC label , size | nosize , "file"

Remarks

Label

The name of the label you can use to refer to the data.

Nosize

Specify either nosize or size. When you use size, the size of the data will

 

be included. This way you know how many bytes you can retrieve.

File

Name of the file which must be included.

 

 

Use RESTORE to get a pointer to the data. And use READ, to read in the data.

The $INC statement is an alternative for the DATA statement.

While DATA works ok for little data, it is harder to use on large sets of data.

See Also

RESTORE, DATA , READ

page -217-

© MCS Electronics, 1995-2007

Example

$regfile = "m48def.dat" $crystal = 4000000 $baud = 19200

Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

Dim Size As Word , W As Word , B As Byte

 

Restore L1

' set pointer to

label

' get size of the

Read Size

data

 

Print Size ; " bytes stored at label L1"

 

For W = 1 To Size

 

Read B : Print Chr(b);

 

Next

 

End

 

'include some data here

$inc L1 , Size , "c:\test.bas"

'when you get an error, insert a file you have on your system

$INCLUDE

Action

Includes an ASCII file in the program at the current position.

Syntax

$INCLUDE "file"

Remarks

File Name of the ASCII file, which must contain valid BASCOM statements.

This option can be used if you make use of the same routines in many programs. You can write modules and include them into your program.

If there are changes to make you only have to change the module file, not al your BASCOM programs.

You can only include ASCII files!

Use $INC when you want to include binary files.

See Also

$INC

Example

$regfile = "m48def.dat" $crystal = 4000000 $baud = 19200

Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits page -218-