ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.06.2025
Просмотров: 8220
Скачиваний: 1
© 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-