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

© MCS Electronics, 1995-2007

Syntax

FLUSH #bFileNumber

FLUSH

Remarks

BFileNumber Filenumber, which identifies an opened file such as #1 or #ff

This function writes all information of an open file, which is not saved yet to the Disk. Normally the Card is updated, if a file will be closed or changed to another sector.

When no file number is specified, all open files will be flushed.

See also

INITFILESYSTEM , OPEN , CLOSE, PRINT, LINE INPUT, LOC, LOF , EOF , FREEFILE , FILEATTR , SEEK , BSAVE , BLOAD , KILL , DISKFREE , DISKSIZE , GET , PUT , FILEDATE , FILETIME , FILEDATETIME , DIR , FILELEN , WRITE , INPUT

ASM

Calls

_FileFlush

_FilesAllFlush

Input

r24: filenumber

 

Output

r25: Errorcode

C-Flag: Set on Error

 

 

 

Partial Example

$include "startup.inc"

'open the file in BINARY mode Open "test.biN" For Binary As #2 Put #2 , B ' write a byte

Put #2 , W ' write a word Put #2 , L ' write a long

Ltemp = Loc(#2) + 1 ' get the position of the next byte Print Ltemp ;" LOC"' store the location of the file pointer Print Lof(#2);" length of file"

Print Fileattr(#2);" file mode"' should be 32 for binary Put #2 , Sn ' write a single

Put #2 , Stxt ' write a string

Flush #2 ' flush to disk

Close #2

FORMAT

Action

Formats a numeric string.

Syntax

target = FORMAT(source, "mask")

page -490-

© MCS Electronics, 1995-2007

Remarks

target

The string that is assigned with the formatted string.

source

The source string that holds the number.

mask

The mask for formatting the string.

 

When spaces are in the mask, leading spaces will be added when the

 

length of the mask is longer than the source string.

 

" " '8 spaces when source is "123" it will be " 123".

 

When a + is in the mask (after the spaces) a leading + will be assigned

 

when the number does not start with the - sign.

 

"+" with number "123" will be "+123".

 

When zero's are provided in the mask, the string will be filled with leading

 

zero;s.

 

" +00000" with 123 will be " +00123"

 

An optional decimal point can be inserted too:

 

"000.00" will format the number 123 to "001.23"

 

Combinations can be made but the order must be : spaces, + , 0 an

 

optional point and zero's.

 

 

When you do not want to use the overhead of the single or double, you can use the LONG. You can scale the value by a factor 100.

Then use FORMAT to show the value.

For example : Dim L as Long, X as Long , Res as Long L = 1

X = 2

Res = L / X

Now this would result in 0 because an integer or Long does not support floating point. But when you scale L with a factor 100, you get :

L= 100

X = 2

Res = L / X

Now Res will be 50. To show it the proper way we can use FORMAT. Format works with strings so the variables need to be converted to string first.

Dim S1 as string * 16 : s1 = Str(Res)

Print Format(s1,"000.00")

See also

FUSING

Example

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

 

------------

: format.bas

'name

'copyright

: (c) 1995-2005, MCS Electronics

'purpose

: demo : FORMAT

'micro

: Mega48

'suited for demo

: yes

'commercial addon needed

: no

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

------------

$regfile = "m48def.dat" ' specify the used

page -491-

 

© MCS Electronics, 1995-2007

micro

' used crystal

$crystal = 4000000

frequency

' use baud rate

$baud = 19200

$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

 

Dim S As String * 10

 

Dim I As Integer

 

S = "12345"

 

S = Format(s , "+")

 

Print S

 

S = "123"

 

S = Format(s , "00000")

 

Print S

 

S = "12345"

 

S = Format(s , "000.00")

 

Print S

 

S = "12345"

 

S = Format(s , " +000.00")

 

Print S

 

End

 

FOR-NEXT

Action

Execute a block of statements a number of times.

Syntax

FOR var = start TO end [STEP value]

Remarks

var

The variable counter to use

start

The starting value of the variable var

end

The ending value of the variable var

value

The value var is increased/decreased with each time NEXT is

 

encountered.

 

 

For incremental loops, you must use TO.

For decremental loops, you must use a negative step size.

You must end a FOR structure with the NEXT statement.

The use of STEP is optional. By default, a value of 1 is used.

When you know in advance how many times a piece of code must be executed, the FOR..NEXT loop is convenient to use.

page -492-

© MCS Electronics, 1995-2007

There are also other alternatives. You can use a Do.. Loop for example :

Dim Var As Byte

Do

'code

Incr Var

Loop Until Var = 10

There are various way to get the result you need.

See also

EXIT FOR

Example

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

 

------------

: for_next.bas

'name

'copyright

: (c) 1995-2005, MCS Electronics

'purpose

: demo: FOR, NEXT

'micro

: Mega48

'suited for demo

: yes

'commercial addon needed

: no

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

------------

$regfile = "m48def.dat"

' specify the used

micro

' used crystal

$crystal = 4000000

frequency

' use baud rate

$baud = 19200

$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

 

Dim A As Byte , B1 As Byte , C As Integer

 

For A = 1 To 10 Step 2

 

Print "This is A " ; A

 

Next A

 

Print "Now lets count down"

 

For C = 10 To -5 Step -1

 

Print "This is C " ; C

 

Next

 

Print "You can also nest FOR..NEXT statements."

 

For A = 1 To 10

 

Print "This is A " ; A

 

For B1 = 1 To 10

 

Print "This is B1 " ; B1

' note that you do

Next

not have to specify the parameter

 

Next A

 

End

 

page -493-