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

📄 mspi_usart.c

📁 使用两片ATMEGA16进行spi通信试验
💻 C
字号:
#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char	
#define uint  unsigned int
#define TxRxBuf_Len 32
uchar TxRxBuf[TxRxBuf_Len]=
{
0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,
0x9,0x10,0x11,0x12,0x13,0x14,0x15,0x16,
0x17,0x18,0x19,0x20,0x21,0x22,0x23,0x24,
0x25,0x26,0x27,0x28,0x29,0x30,0x31,0x32,
}; 
/*************************/
void delay(uint z)
{
 uint i,j;
 for(i=0;i<z;i++)
  for(j=0;j<1000;j++);
}
/*************************/
void port_init(void)
{DDRA=0XFF;
PORTA=0X00;
DDRB=0XFF;
PORTB=0XFF;
}
/*******************/
void spi_init(void)
{PORTB |= (1<<PB0) | (1<<PB4) |(1<<PB5) | (1<<PB6) | (1<<PB7); 
DDRB|=BIT(PB7)|BIT(PB5)|BIT(PB0);
DDRB&=~BIT(PB6);
SPCR=0X50;
SPSR = 0x00;
}
//功能:使用SPI发送一个字节
void spi_write(uchar sData)
{
 SPDR = sData;
 while(!(SPSR & BIT(SPIF)));
 }
 //功能:使用SPI接收一个字节
uchar spi_read(void)
{
 //SPDR = 0x00;
 while(!(SPSR & BIT(SPIF)));
 return SPDR;
}
void init_devices(void)
{
 CLI(); //禁止所有中断
 MCUCR  = 0x00;
 MCUCSR = 0x80;//禁止JTAG
 GICR   = 0x00;
 port_init();
 spi_init();
 SEI();//开全局中断
}
/********************/
void main()
{uchar i=0;
init_devices();
for(i=0;i<32;i++)
{
PORTB&=~BIT(PB0);
spi_write(TxRxBuf[i]);
PORTB|=BIT(PB0);
delay(10);
}
PORTA|=BIT(PA0);
}

⌨️ 快捷键说明

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