ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 12.06.2025

Просмотров: 8249

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

© MCS Electronics, 1995-2007

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

'wait a moment

Wait 1

page -418-


© MCS Electronics, 1995-2007

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

DATA

Action

Specifies constant values to be read by subsequent READ statements.

page -419-


© MCS Electronics, 1995-2007

Syntax

DATA var [, varn]

Remarks

Var

Numeric or string constant.

The DATA related statements use the internal registers pair R8 and R9 to store the data pointer.

To store a " sign on the data line, you can use :

DATA $34

The $-sign tells the compiler that the ASCII value will follow of the character.

You can use this also to store special characters that can't be written by the editor such as chr(7)

Another way to include special ASCII characters in your string constant is to use {XXX}. You need to include exactly 3 digits representing the ASCII character. For example 65 is the ASCII number for the character A.

DATA "TEST{065}"

Will be read as TESTA.

While :

DATA "TEST{65}" will be read as :

TEST{65}. This because only 2 digits were included instead of 3.

{xxx} works only for string constants. It will also work in a normal string assignment :

s = "{065}" . This will assign A to the string s.

Because the DATA statements allows you to generate an EEP file to store in EEPROM, the $DATA and $EEPROM directives have been added. Read the description of these directives to learn more about the DATA statement.

The DATA statements must not be accessed by the flow of your programbecause the DATA statements are converted to the byte representation of the DATA.

When your program flow enters the DATA lines, unpredictable results will occur.

So as in QB, the DATA statement is best be placed at the end of your programor in a place that program flow will no enter.

For example this is fine:

Print "Hello"

Goto jump

DATA "test"

Jump:

'because we jump over the data lines there is no problem.

The following example will case some problems:

page -420-

© MCS Electronics, 1995-2007

Dim S As String * 10

Print "Hello"

Restore lbl

Read S

DATA "test"

Print S

When the END statement is used it must be placed BEFORE the DATA lines.

Difference with QB

Integer and Word constants must end with the %-sign.

Long constants must end with the &-sign.

Single constants must end with the !-sign.

Double constants must end with the #-sign.

See also

READ , RESTORE , $DATA , $EEPROM

Example

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

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

: readdata.bas

'name

'copyright

: (c) 1995-2005, MCS Electronics

'purpose

: demo : READ,RESTORE

'micro

: Mega48

'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

Dim A As Integer , B1 As Byte , Count As Byte

Dim S As String * 15

Dim L As Long

'point to stored

Restore Dta1

data

'for number of

For Count = 1 To 3

data items

" ; B1

Read B1 : Print Count ; "

Next

Restore Dta2

'point to stored

data

page -421-


© MCS Electronics, 1995-2007

For Count = 1 To 2

'for number of

data items

Read A : Print Count ; " " ; A

Next

Restore Dta3

Read S : Print S

Read S : Print S

Restore Dta4

'long type

Read L : Print L

'demonstration of readlabel

' location is used

Dim W As Iram Word At 8 Overlay

by restore pointer

'note that W does not use any RAM it is an overlayed pointer to the data

pointer

' loadlabel

W = Loadlabel(dta1)

expects the labelname

Read B1

Print B1

End

Dta1:

Data &B10 , &HFF , 10

Dta2:

Data 1000% , -1%

Dta3:

Data "Hello" , "World"

'Note that integer values (>255 or <0) must end with the %-sign 'also note that the data type must match the variable type that is 'used for the READ statement

Dta4:

Data 123456789&

'Note that LONG values must end with the &-sign

'Also note that the data type must match the variable type that is used 'for the READ statement

DAYOFWEEK

Action

Returns the Day of the Week of a Date.

Syntax

Target = DayOfWeek()

Target = DayOfWeek(bDayMonthYear)

Target = DayOfWeek(strDate)

Target = DayOfWeek(wSysDay)

Target = DayOfWeek(lSysSec)

Remarks

Target

A Byte – variable, that is assigned with the day of the week

page -422-