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

© MCS Electronics, 1995-2007

When you use PRINT numvar, the value will be printed.

When you use PRINT Chr(numvar), the ASCII character itself will be printed.

The Chr() function is handy in combination with the LCD custom characters where you can redefine characters 0-7 of the ASCII table.

See also

ASC

Example

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

 

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

: chr.bas

'name

'copyright

: (c) 1995-2005, MCS Electronics

'purpose

: shows how to use the CHR() and BCD() function and

'

HEX() function in combination with a PRINT

statement

: Mega48

'micro

'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

 

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

Dim K As Byte

K = 65

Print K ; Chr(k) ; K ; Chr(66) ; Bcd(k) ; Hex(k)

End

CIRCLE

Action

Draws a circle on a graphic display.

Syntax

CIRCLE(x0,y0) , radius, color

Remarks

X0

Starting horizontal location of the line.

page -298-

 

© MCS Electronics, 1995-2007

 

 

 

Y0

Starting vertical location of the line.

 

Radius

Radius of the circle

 

Color

Color of the circle

 

 

 

 

See Also

LINE

Example

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

 

 

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

: t6963_240_128.bas

'name

 

'copyright

 

: (c) 1995-2005, MCS Electronics

'purpose

 

: T6963C graphic display support demo 240 * 128

'micro

 

: Mega8535

'suited for demo

: yes

'commercial addon needed

: no

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

 

 

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

 

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

 

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

(c)

2001-2003 MCS Electronics

'

'

T6963C graphic display support demo 240 * 128

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

 

 

'The connections of the LCD used in this demo

'LCD pin

GND

connected to

' 1

GND

'2

GND

GND

'3

+5V

+5V

'4

-9V

-9V potmeter

'5

/WR

PORTC.0

'6

/RD

PORTC.1

'7

/CE

PORTC.2

'8

C/D

PORTC.3

'9

NC

not conneted

'10

RESET

PORTC.4

'11-18

D0-D7

PA

'19

FS

PORTC.5

'20

NC

not connected

'First we define that we use a graphic LCD ' Only 240*64 supported yet

Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8

'The dataport is the portname that is connected to the data lines of the LCD 'The controlport is the portname which pins are used to control the lcd 'CE, CD etc. are the pin number of the CONTROLPORT.

' For example CE =2 because it is connected to PORTC.2

page -299-

© MCS Electronics, 1995-2007

'mode 8 gives 240 / 8 = 30 columns , mode=6 gives 240 / 6 = 40 columns

'Dim variables (y not used)

Dim X As Byte , Y As Byte

'Clear the screen will both clear text and graph display

Cls

'Other options are :

' CLS TEXT to clear only the text display ' CLS GRAPH to clear only the graphical part

Cursor Off

Wait 1

'locate works like the normal LCD locate statement ' LOCATE LINE,COLUMN LINE can be 1-8 and column 0-30

Locate 1 , 1

'Show some text

Lcd "MCS Electronics"

'And some othe text on line 2 Locate 2 , 1 : Lcd "T6963c support"

Locate 3 , 1 : Lcd "1234567890123456789012345678901234567890" Locate 16 , 1 : Lcd "write this to the lower line"

Wait 2

Cls Text

'use the new LINE statement to create a box

 

'LINE(X0,Y0) - (X1,Y1), on/off

' diagonal line

Line(0 , 0) -(239 , 127) , 255

Line(0 , 127) -(239 , 0) , 255

' diagonal line

Line(0 , 0) -(240 , 0) , 255

' horizontal upper

line

'horizontal lower

Line(0 , 127) -(239 , 127) , 255

line

' vertical left

Line(0 , 0) -(0 , 127) , 255

line

' vertical right

Line(239 , 0) -(239 , 127) , 255

line

 

Wait 2

'draw a line using PSET X,Y, ON/OFF

'PSET on.off param is 0 to clear a pixel and any other value to turn it on For X = 0 To 140

Pset X , 20 , 255

' set the pixel

Next

 

For X = 0 To 140

' set the pixel

Pset X , 127 , 255

Next

 

Wait 2

 

'circle time

'circle(X,Y), radius, color

'X,y is the middle of the circle,color must be 255 to show a pixel and 0 to clear a pixel

For X = 1 To 10

page -300-

© MCS Electronics, 1995-2007

 

Circle(20 , 20) , X , 255

' show circle

Wait 1

'remove circle

Circle(20 , 20) , X , 0

Wait 1

 

Next

 

Wait 2

 

For X = 1 To 10

' show circle

Circle(20 , 20) , X , 255

Waitms 200

 

Next

 

Wait 2

 

'Now it is time to show a picture

 

'SHOWPIC X,Y,label

 

'The label points to a label that holds the image data

 

Test:

 

Showpic 0 , 0 , Plaatje

' show 2 since we

Showpic 0 , 64 , Plaatje

have a big display

 

Wait 2

' clear the text

Cls Text

End

 

'This label holds the mage data Plaatje:

'$BGF will put the bitmap into the program at this location $bgf "mcs.bgf"

'You could insert other picture data here

CLEAR

Action

Clear serial input ir output buffer

Syntax

CLEAR bufname

Remarks

Bufname Serialbuffer name such as Serialin, Serialin1 , Serialout or Serialout1 For chips with more UARTS :

SERIALIN2, SERIALIN3, SERIALOUT2, SERIALOUT3

When you use buffered serial input or buffered serial output, you might want to clear the buffer.

While you can make the head pointer equal to the tail pointer, an interrupt could be active which might result in an update of the buffer variables, resulting in an unexpected result. The CLEAR statement will reset the head and tail pointers of the ring buffer, and it will set the buffer count variable to 0. The buffer count variable is new and introduced in 1.11.8.3. It counts how many bytes are in the buffer.

The internal buffercount variable is named _RS_BUFCOUNTxy , where X is R for Receive, and W for Write, and y is 0 for the first UART, and 1 for the second UART.

The

page -301-

© MCS Electronics, 1995-2007

See also

CONFIG SERIALIN, CONFIG SERIALOUT

ASM

Calls _BUF_CLEAR from MCS.LIB

Example

CLEAR SERIALIN

CLS

Action

Clear the LCD display and set the cursor to home.

Syntax

CLS

Syntax for graphical LCD

CLS

CLS TEXT

CLS GRAPH

Remarks

Clearing the LCD display does not clear the CG-RAM in which the custom characters are stored.

For graphical LCD displays CLS will clear both the text and the graphical display.

See also

$LCD , $LCDRS , LCD , SHIFTLCD , SHIFTCURSOR , SHIFTLCD

Example

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

 

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

: 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

 

 

page -302-

 

© MCS Electronics, 1995-2007

$crystal = 4000000

' used crystal

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

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

 

page -303-