spislave.c

来自「用单片机的SPI串口实现数据发送和接收的C语言代码」· C语言 代码 · 共 51 行

C
51
字号
#include <avr/io.h>

void USART_Init(unsigned int baud);
void USART_Transmit(unsigned char data);

void SPI_SlaveInit(void);
char SPI_SlaveReceive(void);

main(void)
{
	char rec;
	USART_Init(25);
	SPI_SlaveInit();
	while(1)
	{
		rec=SPI_SlaveReceive();
		USART_Transmit(rec);
	}
}

void SPI_SlaveInit(void)
{
	DDRB=0x20;
	SPCR=(1<<SPE);
}

char SPI_SlaveReceive(void)
{
	while(!(SPSR&(1<<SPIF)))
		;
	return SPDR;
}

void USART_Init(unsigned int baud)
{
	
	UBRR0H = (unsigned char)(baud>>8);
	UBRR0L = (unsigned char)baud;
	
	UCSR0B|=(1<<RXEN0)|(1<<TXEN0);
	
	UCSR0C|=(1<<URSEL0)|(3<<UCSZ00);
	
}

void USART_Transmit(unsigned char data)
{
	while((UCSR0A&(1<<UDRE0))==0)
		;
	UDR0=data;
}

⌨️ 快捷键说明

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