?? iso15693.c
字號:
#define SSlow (PORTB &= ~_BV(4));
#define SShigh (PORTB |= _BV(4));
#include <stdio.h>
#include <avr/io.h>
#define WriteCommand 0x80
#define WriteAddress 0x00
#define WriteAddressC 0x20
#define ReadAddress 0x40
#define ReadAddressC 0x60
void send(unsigned char data);
// RegisterWrite [01 0C 00 03 04 10 00 21 01 02 00 00] 12 bytes
// setAGC [01 09 00 03 04 F0 00 00 00] 9 bytes
// setReceivemode [01 09 00 03 04 F1 FF 00 00] 9 bytes
// Inventory [01 0B 00 03 04 14 06 01 00 00 00] 11 bytes
// ReadSingleBlock [01 0B 00 03 04 18 02 20 02 00 00] 11 bytes
// WriteSingleBlock [01 0F 00 03 04 18 42 21 02 11 11 11 11 00 00] 15 bytes
// ReadMultipleBlocks [01 0C 00 03 04 18 02 23 04 02 00 00] 12 bytes
// WriteMultipleBlocks [01 0F 00 03 04 18 42 21 04 22 22 22 22 00 00] 15 bytes
// StayQuiet [01 0A 00 03 04 18 00 02 00 00] 10 bytes
void RegisterWrite(){
SSlow;
send(0x01); // SOF
send(0x0C); // Packet length 12 bytes
send(0x00); // Constant
send(0x03); // Start of data payload
send(0x04);
send(0x10); // Register write
send(0x00); // In register 00(chip status control register),
send(0x21); // write 0x21(RF output and 5 volt control
send(0x01); // In register 01(ISO control register),
send(0x02); // set protocol to ISO15693
send(0x00); // EOF
send(0x00);
SShigh;
}
void setAGC(){
SSlow;
send(0x01); // SOF
send(0x09); // Packet length 9 bytes
send(0x00); // Constant
send(0x03); // Start of data payload
send(0x04);
send(0xF0); // AGC toggle
send(0x00); // AGC on=FF
send(0x00); // EOF
send(0x00);
SShigh;
}
void setReceivemode(){
SSlow;
send(0x01); // SOF
send(0x09); // Packet length 9 bytes
send(0x00); // Constant
send(0x03); // Start of data payload
send(0x04);
send(0xF1); // AM/PM toggle
send(0xFF); // FF=AM while a 00=PM
send(0x00); // EOF
send(0x00);
SShigh;
}
void Inventory(){
SSlow;
send(0x01); // SOF
send(0x0B); // Packet length 11 bytes
send(0x00); // Constant
send(0x03); // Start of data payload
send(0x04);
send(0x14); // Inventory request
send(0x06); // High data rate = 1
send(0x01); // Anticollision cmd
send(0x00); // Mask length
send(0x00); // EOF
send(0x00);
SShigh;
}
void ReadSingleBlock(){
SSlow;
send(0x01); // SOF
send(0x0B); // Packet length 11 bytes
send(0x00); // Constant
send(0x03); // Start of data payload
send(0x04);
send(0x18); // Request mode
send(0x02); // Option flag=0, High datarate flag =1
send(0x20); // Read single block cmd
send(0x02); // Reading block 02, which is block #3
send(0x00); // EOF
send(0x00);
SShigh;
}
void WriteSingleBlock(){
SSlow;
send(0x01); // SOF
send(0x0F); // Packet length 15 bytes
send(0x00); // Constant
send(0x03); // Start of data payload
send(0x04);
send(0x18); // Request mode
send(0x42); // Option flag=1, High datarate flag =1
send(0x21); // Write single block cmd
send(0x02); // Write to block 02, which is block #3
send(0x11); // 32bits
send(0x11);
send(0x11);
send(0x11);
send(0x00); // EOF
send(0x00);
SShigh;
}
void ReadMultipleBlocks(){
SSlow;
send(0x01); // SOF
send(0x0C); // Packet length 12 bytes
send(0x00); // Constant
send(0x03); // Start of data payload
send(0x04);
send(0x18); // Request mode
send(0x02); // Option flag=0, high data rate flag =1
send(0x23); // Read multiple blocks cmd
send(0x04); // First block number = 4(block #05)
send(0x02); // Number of read blocks equals number plus one. In this example, reading 3 blocks beginning at block #5
send(0x00); // EOF
send(0x00);
SShigh;
}
void WriteMultipleBlocks(){
SSlow;
send(0x01); // SOF
send(0x0F); // Packet length 15 bytes
send(0x00); // Constant
send(0x03); // Start of data payload
send(0x04);
send(0x18); // Request mode
send(0x42); // Option flag=1, High datarate flag =1
send(0x21); // Write single block multiple times
send(0x02); // First block number=02 block#3. In this example writing 3 blocks beginning at block 02, then block 03 and then 04
send(0x22); // 32bits
send(0x22);
send(0x22);
send(0x22);
send(0x00); // EOF
send(0x00);
SShigh;
}
void StayQuiet(){
SSlow;
send(0x01); // SOF
send(0x0A); // Packet length 10 bytes
send(0x00); // Constant
send(0x03); // Start of data payload
send(0x04);
send(0x18); // Request mode
send(0x00); // No flags
send(0x02); // Stay quiet cmd
send(0x00); // EOF
send(0x00); //
SShigh;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -