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

© MCS Electronics, 1995-2007

In QB/VB you can use seek to make the file bigger. When a file is 100 bytes long, setting the file pointer to 200 will increase the file with 0 bytes. By design this is not the case in AVR-DOS.

See also

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

ASM

Function

_FileSeek

 

Calls

 

 

Input

r24: filenumber

X: Pointer to Long-variable, which gets the

 

 

result

Output

r25: Errorcode

C-Flag: Set on Error

 

 

 

Statement

_FileSeekSet

 

Calls

 

 

Input

r24: filenumber

X: Pointer to Long-variable with the position

Output

r25: Errorcode

C-Flag: Set on Error

 

 

 

Partial Example

Open "test.biN"for Binary As #2

' write a byte

Put#2 , B

Put#2 , W

' write a word

Put#2 , L

' write a long

Ltemp = Loc(#2) + 1

' get the position

of the next byte

' store the

Print Ltemp ; " LOC"

location of the file pointer

 

Print Seek(#2) ; " = LOC+1"

 

Close #2

 

'now open the file again and write only the single

 

Open "test.bin" For Binary As #2

' set the

Seek#2 , Ltemp

filepointer

' change the

Sn = 1.23

single value so we can check it better

'specify the file

Put #2 , Sn = 1

position

 

Close #2

 

SELECT-CASE-END SELECT

Action

page -625-

© MCS Electronics, 1995-2007

Executes one of several statement blocks depending on the value of an expression.

Syntax

SELECT CASE var

CASE test1 : statements [CASE test2 : statements ] CASE ELSE : statements

END SELECT

Remarks

Var

Variable to test the value of

Test1

Value to test for.

Test2

Value to test for.

 

 

You can test for conditions to like:

CASE IS > 2 :

Another option is to test for a range :

CASE 2 TO 5 :

See also

IF THEN

Example

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

 

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

: case.bas

'name

'copyright

: (c) 1995-2005, MCS Electronics

'purpose

: demonstrates SELECT CASE statement

'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 I As Byte

'dim variable

Dim S As String * 5 , Z As String * 5

 

page -626-

© MCS Electronics, 1995-2007

Do

Input "Enter value (0-255) " , I

Select Case I

Case 1 : Print "1"

Case 2 : Print "2"

Case 3 To 5 : Print "3-5"

Case Is >= 10 : Print ">= 10"

Case Else : Print "Not in Case statement"

End Select

Loop

End

'note that a Boolean expression like > 3 must be preceded 'by the IS keyword

SET

Action

Set a bit to the value one.

Syntax

SET bit

SET var.x

Remarks

Bit

Bitvariable.

Var

A byte, integer, word or long variable.

XBit of variable (0-7) to set. (0-15 for Integer/Word) and (0-31) for Long

See also

RESET , TOGGLE

Example

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

 

---

: boolean.bas

'name

'copyright

: (c) 1995-2005, MCS Electronics

'purpose

: demo: AND, OR, XOR, NOT, BIT and MOD

'suited for demo

: yes

'commercial addon needed

: no

'use in simulator

: possible

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

 

---

' specify the used

$regfile = "m48def.dat"

micro

' used crystal

$crystal = 4000000

frequency

' use baud rate

$baud = 19200

$hwstack = 32

' default use 32

page -627-

© MCS Electronics, 1995-2007

 

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 Byte

 

Dim Aa As Bit , I As Integer

 

A = 5 : B1 = 3

' assign values

C = A And B1

' and a with b

Print "a AND c = " ; C

' print result

C = A Or B1

'also for or

Print "a OR b1 = " ; C

 

C = A Xor B1

' and for xor

Print "a XOR b1 = " ; C

 

A = 1

'not

C = Not A

Print "c = NOT a " ; C

 

C = C Mod 10

 

Print "c MOD 10 = " ; C

 

If Portb.1 = 1 Then

 

Print "Bit set"

 

Else

 

Print "Bit not set"

 

End If

 

Aa = 1

'use this or ..

Set Aa

'use the set

statement

 

If Aa = 1 Then

 

Print "Bit set (aa=1)"

 

Else

 

Print "Bit not set(aa=0)"

 

End If

 

Aa = 0

'now try 0

Reset Aa

'or use reset

If Aa = 1 Then

 

Print "Bit set (aa=1)"

 

Else

 

Print "Bit not set(aa=0)"

 

End If

 

B1 = 255

'assign variable

Reset B1.0

'reset bit 0 of a

byte variable

'print it

Print B1

Set B1.0

'set it

Print B1

'print it

End

 

page -628-