当前位置:首页 > 单片机 > 单片机
[导读]主机程序#include "iom16v.h"#include "macros.h"#define uchar unsigned char#define uint unsigned int/*-----------------------------------------函数名称: void delay(uchar Data)函数功能: 延时函数参 数:返

主机程序

#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);

}

}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭