当前位置:主页 > AVR单片机 > AVR单片机SPI简单应用
201709/06

AVR单片机SPI简单应用

AVR单片机 Comments 围观:
主机程序

#include "iom16v.h"

#include "macros.h"

#define uchar unsigned char

#define uint unsigned int

/*-----------------------------------------

函数名称: void delay(uchar Data)

函数功能: 延时函数

参    数:

返 回 值: 无

-----------------------------------------*/

void delay(uchar Data)

{

 uchar i;

 while(Data--)

 for(i=125;i>0;i--);

}

/*-----------------------------------------

函数名称: void SPI_MasterInit()

函数功能: 主机初始化函数

参    数:

返 回 值: 无

-----------------------------------------*/

void SPI_MasterInit()

{

 

 DDRB|=BIT(5);

 DDRB|=BIT(7);

 

 SPCR|=BIT(SPE);

 SPCR|=BIT(MSTR);

}

/*-----------------------------------------

函数名称: void SPI_MasterTransmit(uchar Data)

函数功能: 主机发送数据

参    数:

返 回 值: 无

-----------------------------------------*/

void SPI_MasterTransmit(uchar Data)

{

 SPDR=Data;

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

}

void main()

{

 uchar i,d;

 SPI_MasterInit();

 while(1)

 {

  d=0xfe;

  for(i=0;i<8;i++)

  {

   SPI_MasterTransmit(d);

   d=d<<1;

   delay(100);

  }

 }

}

 

从机程序

#include "iom16v.h"

#include "macros.h"

#define uchar unsigned char

#define uint unsigned int

void delay(uchar Data)

{

 uchar i;

 while(Data--)

 for(i=125;i>0;i--);

}

void SPI_SlaveInit()

{

 DDRB&=~BIT(5);

 DDRB&=~BIT(7);

 

 SPCR|=BIT(SPE);

}

uchar SPI_SlaveTransmit()

{

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

 return SPDR;

}

void main()

{

 DDRC=0XFF;

 PORTC=0XFF;

 SPI_SlaveInit();

 while(1)

 {

  PORTC=SPI_SlaveTransmit();

  delay(50);

 }

}


文章作者:
本文地址:
版权所有 © 未注明“转载”的博文一律为原创,转载时必须以链接形式注明作者和原始出处!
如果你觉得文章不错,您可以推荐给你的朋友哦!

◇◇上一篇:AVR单片机的复位 下一篇:没有了 ◇◇

发表评论:                              


验证码:点击我更换图片

来看看其他人说了些什么?-----------------------------------------------------------------> 进入详细评论页