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

📄 spi.c

📁 TFT-LCD Atmega128 Source Code
💻 C
字号:
#include "config.h"

#define SPI_SPEED_FOSC_DIV_4		0
#define SPI_SPEED_FOSC_DIV_16		1
#define SPI_SPEED_FOSC_DIV_64		2
#define SPI_SPEED_FOSC_DIV_128		3
#define SPI_2X_DISABLE				0
#define SPI_2X_ENABLE				1
#define SPI_MODE0_CPOL0CPHA0		0x00
#define SPI_MODE1_CPOL0CPHA1		0x04
#define SPI_MODE2_CPOL1CPHA0		0x08
#define SPI_MODE3_CPOL1CPHA1		0x0C

void SPI_set_speed(unsigned char speed, unsigned option)
{
	SPCR = (SPCR & 0xFC) | speed;
	SPSR = (SPSR & 0xFE) | option;
}

void SPI_set_mode(unsigned mode)
{
	SPCR = (SPCR & 0xF3) | mode;
}

void SPI_init()
{
	// Setup SPI bus with the Lowest Speed & SPI MODE0
	SPI_set_speed(SPI_SPEED_FOSC_DIV_128, SPI_2X_DISABLE);
	SPI_set_mode(SPI_MODE0_CPOL0CPHA0);

	SPCR |= _BV(SPE) | _BV(MSTR); 
}

unsigned char SPI_send_byte(unsigned char data)
{
	SPDR = data;

	while(!(SPSR & _BV(SPIF)));

	return SPDR;
}

unsigned char SPI_recv_byte()
{
	return SPI_send_byte(0xFF);	// Send dummy byte for recv operation
}

void SPI_stop()
{
	SPCR = 0;
}

⌨️ 快捷键说明

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