⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iso15693.c

📁 Functions to transmit RFID
💻 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 + -