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

📄 main.c

📁 基于两片atmega128之间的SPI通信
💻 C
字号:
//主机程序

#include<avr/io.h>
#include<util/delay.h>

void spi_init(void)
{
//PORTB |= (1<<PB4); //按照spi协议的握手方式手动操作ss(低):在开始传输前将其拉低,传输结束后再将其抬高。
PORTB |= (1<<PB0);
//DDRB |= (1<<DDB4) | (1<<DDB5) | (1<<DDB7);//ss(低)、sck、mosi 输出方式
DDRB |= (1<<DDB0) | (1<<DDB1) | (1<<DDB2);
SPCR = 0x70; //使能spi、主机模式、低位在先、模式0、fosc/2
}

void spi_mt(char cData)
{
  //PORTB &=~ (1<<PB4); //开始传输前拉低ss
  PORTB &=~ (1<<PB0);
  SPCR |= (1<<MSTR); //设主机模式
  SPDR = cData;
  while(!(SPSR & (1<<SPIF)))//等待传送完毕
  ;
  //PORTB |= (1<<PB4);//传输结束后太高ss
  PORTB |= (1<<PB0);
}

/*void delay1s(void)
     {
	     unsigned char i;
		     for(i=20;i>0;i--)
			     {
					 _delay_loop_2(50000);// 50ms
	             }
	}		 
*/
int main(void)
{
    // unsigned char shuma[10] = {0x81,0xf3,0x49,0x61,0x33,0x25,0x05,0xf1,0x01,0x21};
	unsigned char shuma[8] = {0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80};
	 spi_init();
     unsigned char tmp;
     while(1)
         {
             //for(tmp=0;tmp<10;tmp++)
			 for(tmp=0;tmp<8;tmp++)
              {
                 spi_mt(shuma[tmp]);
				 //spi_mt(tmp);
                 //delay1s();
				 _delay_ms(1000);
				 
              }
          }
}

⌨️ 快捷键说明

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