ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 12.06.2025

Просмотров: 8174

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

© MCS Electronics, 1995-2007

Print "File demo"

Print Filelen("josef.img");" length" ' length of file

Print Filetime("josef.img");" time" ' time file was changed

Print Filedate("josef.img");" date" ' file date

FIX

Action

Returns for values greater then zero the next lower value, for values less then zero the next upper value.

Syntax

var = FIX( x )

Remarks

Var

A single variable that is assigned with the FIX of variable x.

X

The single to get the FIX of.

See Also

INT , ROUND , SGN

Example

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

:round_fix_int.bas

'name

'copyright

: (c) 1995-2005, MCS Electronics

'purpose

: demo : ROUND,FIX

'micro

:Mega48

'suited for demo

:yes

: no

'commercial addon needed

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

$regfile= "m48def.dat"

' specify the used micro

$crystal= 4000000

' used crystal frequency

$baud = 19200

' use baud rate

$hwstack = 32

' default use 32 for the hardware stack

$swstack= 10

' default use 10 for the SW stack

$framesize= 40

' default use 40 for the frame space

Dim SAs Single,ZAs Single

For S= -10 To 10 Step 0.5

Print S;Spc(3);Round(s);Spc(3);Fix(s);Spc(3);Int(s)

Next

End

FLUSH

Action

Write current buffer of File to Card and updates Directory

page -489-


© 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-