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

📄 test.c

📁 Testprogram TRF7960 test
💻 C
字号:
/*
Please documentate in english in order to make it your own!!!
*/
#define SSlow	(PORTB &= ~_BV(4))
#define SShigh	(PORTB |= _BV(4))

#define lcdcommand(a)			(lcdwrite((a), PORTC & 0xFE)); 	// RS laag - commando instructie
#define lcdverzend(a)			(lcdwrite((a), PORTC | 0x01));	// RS hoog - schrijf instructie
#define clearlcd				lcdcommand(0x01);				// Maak display leeg

#define F_CPU 4000000UL	

#include <stdio.h>
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include "Commands.c"


void DirectCommand(unsigned char data);
void send(unsigned char data);
void procedure();
void SPI_MasterInit();

void RegisterWrite();
void setAGC();
void setReceivemode();
void Inventory();
void ReadSingleBlock();
void WriteSingleBlock();
void ReadMultipleBlocks();
void WriteMultipleBlocks();
void StayQuiet();

void lcd_init(void);
void lcdstring(char *s);	
void lcdwrite(char a, char type);
	
ISR(INT0_vect){
	lcdstring("Ontvangen");	
	_delay_ms(500);
	lcdcommand(0x01);
	lcdcommand(0x02);
}

int main(void) {

	lcd_init();
	
	DDRD= 0x7D;						// Switch input, interrupt 0 input
	PORTD=_BV(6);					// Reader Pwr Enable high
	GICR=_BV(INT0);					// Enable interrupt 0
	MCUCR=_BV(ISC01)|_BV(ISC00);	// sensitive on the rising edge

	SPI_MasterInit(); 
	lcdstring("Send");
	lcdcommand(0x80 + 0x40);	
	lcdstring("SPI_MasterInit");
	_delay_ms(1000);
	lcdcommand(0x01);
	lcdcommand(0x02);
	RegisterWrite();				// First  command
	lcdstring("Send");
	lcdcommand(0x80 + 0x40);
	lcdstring("RegisterWrite");	
	_delay_ms(1000);
	lcdcommand(0x01);
	lcdcommand(0x02);
	setAGC();						// Second command
	lcdstring("Send");
	lcdcommand(0x80 + 0x40);
	lcdstring("AGC");	
	_delay_ms(1000);
	lcdcommand(0x01);
	lcdcommand(0x02);
	setReceivemode();				// Third  command
	lcdstring("Send");
	lcdcommand(0x80 + 0x40);	
	lcdstring("Receivemode");	
	_delay_ms(1000);
	lcdcommand(0x01);
	lcdcommand(0x02);
	DirectCommand(FIFO);			// Clear FIFO
	sei();							// Enable interruptmechanism
	lcdcommand(0x01);
	while(1){
	lcdstring("Reading");
	lcdcommand(0x80 + 0x40);
	lcdstring("RFID TAG");	
	_delay_ms(500);
	lcdcommand(0x01);
	lcdcommand(0x02);
	ReadMultipleBlocks();						// Read UID in read zone and wait on interrupt	
	_delay_ms(500);	
	}

}


void SPI_MasterInit(){

unsigned char tmp=0;

DDRB= _BV(4)|_BV(5)|_BV(7);				// Slave select(4), MOSI(5) en SCK(7) are outputs
PORTB |= _BV(6);						// Enable MISO pull up
SPCR = _BV(SPE)|_BV(MSTR)|_BV(SPR0);	// SPI enable and master mode. SCK = Fcpu/16
SShigh;									// Slave select high > See notes. Slave device is deactivated
tmp = SPSR; 							// Clear status flags 
tmp = SPDR;							 
}


//Notes
/*-----------------------------------------------------------------------------
Mode	Configuration		Level		Description
Slave	Always input		High		Slave deactivated
							Low			Activated
Master	Input				High		Master activated
							Low			Master will be switched into slave mode
		Output				High		Master activated
							Low			Master activated
-------------------------------------------------------------------------------
Master only works with a slave and will generate eight clockcycles while data is transmitting
The SCK output is only active during this process
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -