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

© MCS Electronics, 1995-2007

CONFIG INPUT

Action

Instruct the compiler to modify serial input line terminator behaviour

Syntax

CONFIG INPUT = term , ECHO=echo

Remarks

Term

A parameter with one of the following values :

 

CR - Carriage Return (default)

 

LF - Line Feed

 

CRLF - Carriage Return followed by a Line Feed

 

LFCR - Line Feed followed by a Carriage Return

Echo

A paramter with one of the following values :

 

CR - Carriage Return

 

LF - Line Feed

 

CRLF - Carriage Return followed by a Line Feed (default)

 

LFCR - Line Feed followed by a Carriage Return

 

 

The 'term' parameter specifies which character(s) are expected to terminate the INPUT statement with serial communication. It has no impact on the DOS file system INPUT.

In most cases, when you press <ENTER> , a cariage return(ASCII 13) will be sent. In some cases, a line feed (LF) will also be sent after the CR. It depends on the terminal emulator or serial communication OCX control you use.

The 'echo' parameter specifies which character(s) are send back to the terminal emulator after the iNPUT terminator is received. By default CR and LF is sent. But you can specify which characters are sent. This can be differnt characters then the 'term characters. So when you send in your VB application a string, and end it with a CR, you can send back a LF only when you want.

When NOECHO is used, no characters are sent back even while configured with CONFIG INPUT

See also

INPUT

ASM

NONE

Example

Config Input0 = CR , Echo = CRLF

Dim S as String * 20

Input "Hello ",s

CONFIG INTx

page -344-

© MCS Electronics, 1995-2007

Action

Configures the way the interrupts 0,1 and 4-7 will be triggered.

Syntax

CONFIG INTx = state

Where X can be 0,1 and 4 to 7 in the MEGA chips.

Remarks

state

LOW LEVEL to generate an interrupt while the pin is held low. Holding

 

the pin low will generate an interrupt over and over again.

 

FALLING to generate an interrupt on the falling edge.

 

RISING to generate an interrupt on the rising edge.

 

CHANGE to generate an interrupt on the change of the edge.

 

 

The MEGA103 has also INT0-INT3. These are always low level triggered so there is no need /possibility for configuration.

The number of interrupt pins depend on the used chip. Most chips only have int0 and nt1i.

Example

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

 

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

: spi-softslave.bas

'name

'copyright

: (c) 1995-2005, MCS Electronics

'purpose

: shows how to implement a SPI SLAVE with software

'micro

: AT90S2313

'suited for demo

: yes

'commercial addon needed

: no

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

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

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

 

'Some atmel chips like the 2313 do not have a SPI port. 'The BASCOM SPI routines are all master mode routines 'This example show how to create a slave using the 2313 'ISP slave code

'define the constants used by the SPI slave

' we used portD

Const _softslavespi_port = Portd

Const _softslavespi_pin = Pind

'we use the PIND

register for reading

' data direction

Const _softslavespi_ddr = Ddrd

of port D

 

page -345-

 

 

© MCS Electronics, 1995-2007

 

Const _softslavespi_clock = 5

'pD.5 is used for

the CLOCK

 

'pD.3 is MISO

Const _softslavespi_miso = 3

Const _softslavespi_mosi = 4

'pd.4 is MOSI

Const _softslavespi_ss = 2

' pd.2 is SS

'while you may choose all pins you must use the INT0 pin for the SS

'for the 2313 this is pin 2

 

'PD.3(7),

MISO must be output

 

'PD.4(8),

MOSI

 

'Pd.5(9) , Clock

 

'PD.2(6),

SS /INT0

 

'define the spi slave lib $lib "spislave.lbx" 'sepcify wich routine to use $external _spisoftslave

'we use the int0 interrupt to detect that our slave is addressed

On Int0 Isr_sspi Nosave

'we enable the int0 interrupt

Enable Int0

'we configure the INT0 interrupt to trigger when a falling edge is detected

Config Int0 = Falling

'finally we enabled interrupts

Enable Interrupts

'

' this is out SPI

Dim _ssspdr As Byte

SLAVE SPDR register

' SPI interrupt

Dim _ssspif As Bit

revceive bit

' some other demo

Dim Bsend As Byte , I As Byte , B As Byte

variables

 

_ssspdr = 0

' we send a 0 the

first time the master sends data

 

Do

 

If _ssspif = 1 Then

 

Print "received: " ; _ssspdr

 

Reset _ssspif

' we send this the

_ssspdr = _ssspdr + 1

next time

 

End If

 

Loop

 

CONFIG GRAPHLCD

Action

Configures the Graphical LCD display.

Syntax

Config GRAPHLCD = type , DATAPORT = port, CONTROLPORT=port , CE = pin , CD =pin , WR = pin, RD=pin, RESET= pin, FS=pin, MODE = mode

Remarks

Type

This must be 240 * 64, 128* 128, 128 * 64 , 160 * 48 or 240 * 128.

 

page -346-

© MCS Electronics, 1995-2007

 

For SED displays use 128 * 64sed or 120* 64SED

 

For 132x132 color displays, use COLOR

Dataport

The name of the port that is used to put the data on the LCDdata pins

 

db0-db7.

 

PORTA for example.

Controlport

This is the name of the port that is used to control the LCD control pins.

 

PORTC for example

Ce

The pin number that is used to enable the chip on the LCD.

Cd

The pin number that is used to control the CD pin of the display.

WR

The pin number that is used to control the /WR pin of the display.

RD

The pin number that is used to control the /RD pin of the display.

FS

The pin number that is used to control the FS pin of the display.

 

Not needed for SED based displays.

RESET

The pin number that is used to control the RESET pin of the display.

MODE

The number of columns for use as text display. Use 8 for X-pixels / 8 = 30

 

columns for a 240 pixel screen. When you specify 6, 240 / 6 = 40 columns

 

can be used.

 

 

The first chip supported was T6963C. There are also driver for other LCD's such as SED and KS0108. The most popular LCD's will be supported with a custom driver.

The following connections were used for the T6963C:

PORTA.0 to PORTA.7 to DB0-DB7 of the LCD

PORTC.5 to FS, font select of LCD

PORTC.2 to CE, chip enable of LCD

PORTC.3 to CD, code/data select of LCD

PORTC.0 to WR of LCD, write

PORTC.1 to RD of LCD, read

PORTC.4 to RESET of LCD, reset LCD

The LCD used from www.conrad.de needs a negative voltage for the contrast.

Two 9V batteries were used with a pot meter.

Some displays have a Vout that can be used for the contrast(Vo)

The T6963C displays have both a graphical area and a text area. They can be used together. The routines use the XOR mode to display both text and graphics layered over each other.

The statements that can be used with the graphicalLCD are :

CLS, will clear the graphic display and the text display

CLS GRAPH will clear only the graphic part of the display

CLS TEXT will only clear the text part of the display

LOCATE row,column Will place the cursor at the specified row and column

The row may vary from 1 to 16 and the column from 1 to 40. This depends on the size and

page -347-

© MCS Electronics, 1995-2007

mode of the display.

CURSOR ON/OFF BLINK/NOBLINK can be used the same way as for text displays.

LCD can be handled the same way as for text displays.

SHOWPIC X, Y , Label where X and Y are the column and row and Labelis the label where the picture info is placed.

PSET X, Y , color Will set or reset a pixel. X can range from 0-239 and Y from 9-63. When color is 0 the pixel will turned off. When it is 1 the pixel will be set on.

$BGF "file.bgf" 'inserts a BGF file at the current location

LINE(x0,y0) – (x1,y1) , color Will draw a line from the coordinate x0,y0 to x1,y1.

Color must be 0 to clear the line and 255 for a black line.

The Graphic routines are located in the glib.lib or glib.lbx files.

You can hard wire the FS and RESET and change the code from the glib.lib file so these pins can be used for other tasks.

COLOR LCD

Color displays were always relatively expensive. The mobile phone market changed that. And Display3000.com , sorted out how to connect these small nice colorfull displays. You can buy brand new Color displays from Display3000. MCS Electronics offers the same displays.

There are two different chip sets used. One chipset is from EPSON and the other from Philips. For this reason there are two different libraries. When you select the wrong one it will not work, but you will not damage anything.

LCD-EPSON.LBX need to be used with the EPSONchipset. LCD-PCF8833.LBX need to be used with the Philips chipset.

Config Graphlcd = Color , Controlport = Portc , Cs = 1 , Rs = 0 , Scl = 3 , Sda = 2

Controlport The port that is used to control the pins. PORTA, PORTB, etc.

CS

The chip select pin of the display screen. Specify the pin number. 1 will mean

 

PORTC.1

RS

The RESET pin of the display

SCL

The clock pin of the display

SDA

The data pin of the display

As the color display does not have a built in font, you need to generate the fonts yourself. You can use the Fonteditor for this task.

A number of statements accept a color parameter. See the samples below in bold.

LINE

Line(0 , 0) -(130 , 130) , Blue

LCDAT

Lcdat 100 , 0 , "12345678" , Blue , Yellow

CIRCLE

Circle(30 , 30) , 10 , Blue

PSET

32 , 110 , Black

BOX

Box(10 , 30) -(60 , 100) , Red

page -348-

© MCS Electronics, 1995-2007

See also

SHOWPIC , PSET , $BGF , LINE , LCD

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

'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

page -349-

© MCS Electronics, 1995-2007

'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

' show circle

Circle(20 , 20) , X , 255

Wait 1

'remove circle

Circle(20 , 20) , X , 0

Wait 1

 

Next

 

page -350-