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

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

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

Добавлен: 12.06.2025

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

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

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

© MCS Electronics, 1995-2007

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

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

$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

'for number of

For Count = 1 To 2

data items

" ; A

Read A : Print Count ; "

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

page -607-


© MCS Electronics, 1995-2007

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

READEEPROM

Action

Reads the content from the DATA EEPROM and stores it into a variable.

Syntax

READEEPROM var , address

Remarks

Var

The name of the variable that must be stored

Address

The address in the EEPROM where the data must be read from.

This statement is provided for backwards compatibility with BASCOM-8051. You can also use the ERAM variable instead of READEEPROM :

Dim V as Eram Byte 'store in EEPROM

Dim B As Byte 'normal variable

B = 10

V = B 'store variable in EEPROM

B = V 'read from EEPROM

When you use the assignment version, the data types must be equal!

According to a data sheet from ATMEL, the first location in the EEPROM with address 0, can be overwritten during a reset so don't use it.

You may also use ERAM variables as indexes. Like :

Dim ar(10) as Eram Byte

When you omit the address label in consecutive reads, you must use a new READEEPROM statement. It will not work in a loop:

Readeeprom B , Label1

Print B

Do

Readeeprom B

Print B Loop

Until B = 5

This will not work since there is no pointer maintained. The way it will work :

ReadEEprom B , Label1 ' specify label

ReadEEPROM B ' read next address in EEPROM

ReadEEPROM B ' read next address in EEPROM

page -608-

© MCS Electronics, 1995-2007

See also

WRITEEEPROM , $EEPROM

ASM

NONE

Example

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

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

: eeprom2.bas

'name

'copyright

: (c) 1995-2005, MCS Electronics

'purpose

: shows how to use labels with READEEPROM

'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

'first dimension a variable

Dim B As Byte

Dim Yes As String * 1

'Usage for readeeprom and writeeprom : 'readeeprom var, address

'A new option is to use a label for the address of the data

'Since this data is in an external file and not in the code the eeprom data 'should be specified first. This in contrast with the normal DATA lines which must

'be placed at the end of your program!!

'first tell the compiler that we are using EEPROM to store the DATA $eeprom

'the generated EEP file is a binary file.

'Use $EEPROMHEX to create an Intel Hex file usable with AVR Studio. '$eepromhex

'specify a label Label1:

Data 1 , 2 , 3 , 4 , 5 Label2:

Data 10 , 20 , 30 , 40 , 50

'Switch back to normal data lines in case they are used $data

'All the code above does not generate real object code 'It only creates a file with the EEP extension

page -609-


© MCS Electronics, 1995-2007

'Use the new label option

Readeeprom B , Label1

'prints 1

Print B

'Succesive reads will read the next value

'But the first time the label must be specified so the start is known

Readeeprom B

'prints 2

Print B

Readeeprom B , Label2

'prints 10

Print B

Readeeprom B

'prints 20

Print B

'And it works for writing too :

'but since the programming can interfere we add a stop here Input "Ready?" , Yes

B = 100

Writeeeprom B , Label1 B = 101

Writeeeprom B

'read it back

Readeeprom B , Label1

'prints 1

Print B

'Succesive reads will read the next value

'But the first time the label must be specified so the start is known

Readeeprom B

'prints 2

Print B

End

READMAGCARD

Action

Read data from a magnetic card.

Syntax

READMAGCARD var , count , 5|7

Remarks

Var

A byte array the receives the data.

Count

A byte variable that returns the number of bytes read.

5|7

A numeric constant that specifies if 5 or 7 bit coding is used.

There can be 3 tracks on a magnetic card.

Track 1 stores the data in 7 bit including the parity bit. This is handy to store alpha numeric data.

On track 2 and 3 the data is stored with 5 bit coding.

The ReadMagCard routine works with ISO7811-2 5 and 7 bit decoding.

The returned numbers for 5 bit coding are:

Returned

ISO characterT

page -610-


© MCS Electronics, 1995-2007

number

0

0

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

hardware control

11

start byte

12

hardware control

13

separator

14

hardware control

15

stop byte

Example

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

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

: magcard.bas

'name

'copyright

: (c) 1995-2005, MCS Electronics

'purpose

: show you how to read data from a magnetic card

'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

'[reserve some space]

Dim Ar(100) As Byte , B As Byte , A As Byte

'the magnetic card reader has 5 wires

'red

- connect to +5V

'black

- connect to GND

'yellow

- Card inserted signal CS

'green

- clock

'blue

- data

'You can find out for your reader which wires you have to use by connecting +5V

'And moving the card through the reader. CS gets low, the clock gives a clock pulse of equal pulses

'and the data varies

page -611-