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

© MCS Electronics, 1995-2007

See also

$LCDPUTDATA

Example

$regfile = "m48def.dat" $crystal = 4000000 $baud = 19200

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

'dimension used variables Dim S AsString* 10

Dim W AsLong

'inform the compiler which routine must be called to get serial 'characters $lcdputdata= Myoutput

$lcdputctrl= Myoutputctrl 'make a never ending loop

Do

Lcd "test"

Loop

End

'custom character handling routine

'instead of saving and restoring only the used registers

'and write full ASM code, we use Pushall and PopAll to save and 'restore 'all registers so we can use all BASIC statements

'$LCDPUTDATA requires that the character is passed in R24

Myoutput:

'save all

Pushall

registers

 

'your code here

'restore registers

Popall

Return

 

MyoutputCtrl:

'save all

Pushall

registers

 

'your code here

'restore registers

Popall

Return

 

$LCDPUTDATA

Action

Specifies that LCD data output must be redirected.

Syntax

$LCDPUTDATA = label

Remarks

Label

The name of the assembler routine that must be called when a character is

 

 

 

page -223-

© MCS Electronics, 1995-2007

printed with the LCD statement. The character must be placed in R24.

With the redirection of the LCD statement, you can use your own routines.

See also

$LCDPUTCTRL

Example

$regfile = "m48def.dat" $crystal = 4000000 $baud = 19200

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

'dimension used variables Dim S AsString* 10

Dim W AsLong

'inform the compiler which routine must be called to get serial 'characters $lcdputdata= Myoutput

$lcdputctrl= Myoutputctrl 'make a never ending loop

Do

Lcd "test"

Loop

End

'custom character handling routine

'instead of saving and restoring only the used registers

'and write full ASM code, we use Pushall and PopAll to save and 'restore 'all registers so we can use all BASIC statements

'$LCDPUTDATA requires that the character is passed in R24

Myoutput:

'save all

Pushall

registers

 

'your code here

'restore registers

Popall

Return

 

MyoutputCtrl:

'save all

Pushall

registers

 

'your code here

'restore registers

Popall

Return

 

$LCDRS

Action

Instruct the compiler to generate code for 8-bit LCD displays attached to the data bus.

Syntax

$LCDRS = [&H]address

page -224-

© MCS Electronics, 1995-2007

Remarks

Address The address where must be written to, to enable the LCDdisplay.

The db0-db7 lines of the LCD must be connected to the data lines D0-D7. (or is 4 bit mode, connect only D4-D7)

On systems with external RAM, it makes more sense to attach the LCD to the data bus. With an address decoder, you can select the LCDdisplay.

See also

$LCD , CONFIG LCDBUS

Example

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

(c) 1995-2005 MCS Electronics

'

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

 

'file: LCD.BAS

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

'CURSOR, DISPLAY

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

'note : tested in bus mode with 4-bit on the STK200

'LCD

- STK200

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

D4

'D4

'D5

D5

'D6

D6

'D7

D7

'WR

WR

'E

E

'RS

RS

'+5V

+5V

'GND

GND

'V0

V0

'D0-D3 are not connected since 4 bit bus mode is used!

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

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

$regfile = "8515def.dat" $lcd = &HC000

$lcdrs = &H8000 Config Lcdbus = 4

Dim A As Byte

Config Lcd = 16 * 2 'configure lcd screen

'other options are 16 * 2 , 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 !

page -225-

© MCS Electronics, 1995-2007

 

 

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

'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

page -226-