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

© MCS Electronics, 1995-2007

lSize = DISKSIZE()

Remarks

lSize

A Long Variable, which is assigned with the capacity of the disk in Bytes

 

 

This functions returns the capacity of the disk.

See also

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

ASM

Calls

_GetDiskSize

Input

none

Output

16-r19: Long-Value of capacity in Bytes

 

 

Partial Example

Dim Gbtemp1 As Byte' scratch byte

Gbtemp1 = Initfilesystem(1)' we must init the filesystem once

If Gbtemp1 > 0 Then

Print#1 ,"Error "; Gbtemp1

Else

Print#1 ," OK"

Print "Disksize : "; Disksize()' show disk size in bytes

Print "Disk free: "; Diskfree()' show free space too

End If

DISPLAY

Action

Turn LCD display on or off.

Syntax

DISPLAY ON / OFF

Remarks

The display is turned on at power up.

See also

LCD

Example

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

page -463-

 

© MCS Electronics, 1995-2007

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

: lcd.bas

'name

'copyright

: (c) 1995-2005, MCS Electronics

'purpose

: demo: LCD, CLS, LOWERLINE, SHIFTLCD, SHIFTCURSOR,

HOME

CURSOR, DISPLAY

'

'micro

: Mega8515

'suited for demo

: yes

'commercial addon needed

: no

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

 

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

 

$regfile = "m8515.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

 

$sim

'REMOVE the above command for the real program !! '$sim is used for faster simulation

'note : tested in PIN mode with 4-bit

'Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6

Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6

'These settings are for the STK200 in PIN mode

'Connect only DB4 to DB7 of the LCD to the LCD connector of the STK D4-D7 'Connect the E-line of the LCD to A15 (PORTC.7) and NOT to the E line of the LCD connector

'Connect the RS, V0, GND and =5V of the LCD to the STK LCD connector

Rem with the config lcdpin statement you can override the compiler settings

Dim A As Byte

Config Lcd = 16 * 2 'configure lcd screen

'other options are 16 * 4 and 20 * 4, 20 * 2 , 16 * 1a 'When you dont include this option 16 * 2 is assumed

'16 * 1a is intended for 16 character displays with split addresses over 2 lines

'$LCD = address will turn LCD into 8-bit databus mode

 

'

use this with uP with external RAM and/or ROM

 

'

because it aint need the port pins !

 

Cls

 

'clear the LCD

display

 

'display this at

Lcd "Hello world."

the top line

 

Wait 1

 

'select the lower

Lowerline

page -464-

© MCS Electronics, 1995-2007

 

 

line

 

 

Wait 1

'display this at

Lcd "Shift this."

the lower line

 

 

Wait 1

 

 

For A = 1 To 10

'shift the text to

Shiftlcd Right

the right

'wait a moment

Wait 1

Next

 

 

For A = 1 To 10

'shift the text to

Shiftlcd Left

the left

'wait a moment

Wait 1

Next

 

 

Locate 2 , 1

'set cursor

position

'display this

Lcd "*"

Wait 1

'wait a moment

Shiftcursor Right

'shift the cursor

Lcd "@"

'display this

Wait 1

'wait a moment

Home Upper

'select line 1 and

return home

'replace the text

Lcd "Replaced."

Wait 1

'wait a moment

Cursor Off Noblink

'hide cursor

Wait 1

'wait a moment

Cursor On Blink

'show cursor

Wait 1

'wait a moment

Display Off

'turn display off

Wait 1

'wait a moment

Display On

'turn display on

'-----------------NEW support for 4-line LCD------

 

 

Thirdline

 

 

Lcd "Line 3"

 

 

Fourthline

 

 

Lcd "Line 4"

'goto home on line

Home Third

three

 

 

Home Fourth

'first letteer

Home F

also works

 

 

Locate 4 , 1 : Lcd "Line 4"

 

 

Wait 1

 

 

'Now lets build a special character

 

 

'the first number is the characternumber (0-7)

 

 

'The other numbers are the rowvalues

 

 

'Use the LCD tool to insert this line

 

 

Deflcdchar 1 , 225 , 227 , 226 , 226 , 226 , 242 , 234 , 228

' replace ?

with number (0-7)

 

' replace ?

Deflcdchar 0 , 240 , 224 , 224 , 255 , 254 , 252 , 248 , 240

with number (0-7)

'select data RAM

Cls

Rem it is important that a CLS is following the deflcdchar statements because

it will set the controller back in datamode

'print the special

Lcd Chr(0) ; Chr(1)

character

 

page -465-

 

© MCS Electronics, 1995-2007

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

Now use an internal routine ------------

_temp1 = 1

'value into ACC

!rCall _write_lcd

'put it on LCD

End

 

DO-LOOP

Action

Repeat a block of statements until condition is true.

Syntax

DO statements

LOOP [ UNTIL expression]

Remarks

You can exit a DO..LOOP with the EXIT DO statement.

The DO-LOOP is always performed at least once.

The main part of your code can best be executed within a DO.. LOOP. You could use a GOTO also but it is not as clear as the DO LOOP. Main:

' code GOTO Main

Do

'Code

Loop

Of course in the example above, it is simple to see what happens, but when the code consist of a lot of lines of code, it is not so clear anymore what the GOTO Main does.

See also

EXIT , WHILE-WEND , FOR-NEXT

Example

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

 

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

: do_loop.bas

'name

'copyright

: (c) 1995-2005, MCS Electronics

'purpose

: demo: DO, LOOP

'micro

: Mega48

'suited for demo

: yes

'commercial addon needed

: no

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

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

$regfile = "m48def.dat"

' specify the used

micro

' used crystal

$crystal = 4000000

frequency

 

page -466-