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

© MCS Electronics, 1995-2007

 

 

Wait 1

'wait a moment

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

 

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

'value into ACC

_temp1 = 1

!rCall _write_lcd

'put it on LCD

End

 

CLOCKDIVISION

Action

Will set the system clock division available in the MEGA chips.

page -304-

© MCS Electronics, 1995-2007

Syntax

CLOCKDIVISON = var

Remarks

Var

Variable or numeric constant that sets the clock division. Valid values

 

are from 2-129.

 

A value of 0 will disable the division.

 

 

On the MEGA 103 and 603 the system clock frequency can be divided so you can save power for instance. A value of 0 will disable the clock divider. The divider can divide from2 to 127. So the other valid values are from 2 - 127.

Some routines that rely on the system clock will not work proper anymore when you use the divider. WAITMS for example will take twice the time when you use a value of 2.

See also

POWERSAVE

Example

$regfile = "m103def.dat"

' specify the used

micro

' used crystal

$crystal = 8000000

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

 

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

Clockdivision = 2

CLOSE

Action

Closes an opened device.

Syntax

OPEN "device" for MODE As #channel

CLOSE #channel

Remarks

Device

The default device is COM1 and you don't need to open a channel to use

 

page -305-

© MCS Electronics, 1995-2007

 

INPUT/OUTPUT on this device.

 

With the implementation of the software UART, the compiler must know to

 

which pin/device you will send/receive the data.

 

So that is why the OPEN statement must be used. It tells the compiler about

 

the pin you use for the serial input or output and the baud rate you want to

 

use.

 

COMB.0:9600,8,N,2 will use PORT B.0 at 9600 baud with 2 stop bits.

 

The format for COM1 is : COM1:

 

Some chips have 2 UARTS. You can use COM2: to open the second HW

 

UART.

 

The format for the software UART is: COMpin:speed,8,N,stop

 

bits[,INVERTED]

 

Where pin is the name of the PORT-pin.

 

Speed must be specified and stop bits can be 1 or 2.

 

An optional parameter ,INVERTED can be specified to use inverted RS-232.

 

Open "COMD.1:9600,8,N,1,INVERTED" For Output As #1 , will use pin

 

PORTD.1 for output with 9600 baud, 1 stop bit and with inverted RS-232.

MODE

You can use BINARY or RANDOM for COM1 and COM2, but for the software

 

UART pins, you must specify INPUT or OUTPUT.

Channel

The number of the channel to open. Must be a positive constant >0.

The statements that support the device are PRINT , INPUT and INPUTHEX , INKEY, WAITKEY.

Every opened device must be closed using the CLOSE #channel statement. Of course, you must use the same channel number.

The best place for the CLOSE statement is at the end of your program.

The INPUT statement in combination with the software UART, will not echo characters back because there is no default associated pin for this.

For the AVR-DOS filesystem, you may place the CLOSE at any place in your program. This because the filesystem supports real file handles.

See also

OPEN , PRINT

Example

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

 

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

: open.bas

'name

'copyright

: (c) 1995-2005, MCS Electronics

'purpose

: demonstrates software UART

'micro

: Mega48

'suited for demo

: yes

'commercial addon needed

: no

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

 

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

 

page -306-

 

© MCS Electronics, 1995-2007

$regfile = "m48def.dat"

' specify the used

micro

' used crystal

$crystal = 10000000

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 B As Byte

'Optional you can fine tune the calculated bit delay 'Why would you want to do that?

'Because chips that have an internal oscillator may not

'run at the speed specified. This depends on the voltage, temp etc. 'You can either change $CRYSTAL or you can use

'BAUD #1,9610

'In this example file we use the DT006 from www.simmstick.com 'This allows easy testing with the existing serial port

'The MAX232 is fitted for this example.

'Because we use the hardware UART pins we MAY NOT use the hardware UART 'The hardware UART is used when you use PRINT, INPUT or other related statements

'We will use the software UART.

Waitms 100

'open channel for output

Open "comd.1:19200,8,n,1" For Output As #1 Print #1 , "serial output"

'Now open a pin for input

Open "comd.0:19200,8,n,1" For Input As #2

'since there is no relation between the input and output pin 'there is NO ECHO while keys are typed

Print #1 , "Number" 'get a number

Input #2 , B 'print the number

Print #1 , B

'now loop until ESC is pressed

'With INKEY() we can check if there is data available

'To use it with the software UART you must provide the channel

Do

'store in byte

 

B = Inkey(#2)

 

'when the value > 0 we got something

 

If B > 0 Then

'print the

Print #1 , Chr(b)

character

 

End If

 

Loop Until B = 27

 

Close #2

 

Close #1

 

'OPTIONAL you may use the HARDWARE UART

 

page -307-