打印
[Atmel]

用AtmelStudio6.2跑mega16例程(23) SPI通讯

[复制链接]
969|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
用两个Atmega16的单片机进行SPI通讯。收到神么就在C管脚显示什么

以下是proteus的截图:虽然数码管接的不对但管脚可以看出数据是正确的



主机程序:
/*
* GccApplication5.c
*
* Created: 2014-9-29 19:46:18
*  Author: Administrator
*/
#include <avr/io.h>
#define DD_SS 4  //ss
#define DD_MOSI 5 //MOSI
#define DD_SCK 7 //SCK

void SPI_MasterInit()
{
    DDRB = (1<<DD_SS)|(1<<DD_MOSI)|(1<<DD_SCK);  //设置ss,mosi,sck引脚下
        SPCR = (1<<SPE)|(1<<SPR0)|(1<<MSTR);  //enable SPI, mast, fosc/16       
}
unsigned char SPI_MasterTransmit(char data)
{
     SPDR = data;
         while(!(SPSR&(1<<SPIF))); //等行发送完
         return SPDR;       
}

int main()
{
   unsigned char data;
   unsigned char i=0x88;
   SPI_MasterInit();
   while(1)
   {
          
   
   data=SPI_MasterTransmit(i);
   }
}



从机程序:
/*
* GccApplication6.c
*
* Created: 2014-9-29 20:02:33
*  Author: Administrator
*/


#include <avr/io.h>
#define  DD_MISO 6
void SPI_SlaveInit(void)
{
          DDRB=(1<<DD_MISO);
        SPCR=(1<<SPE);  
}

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

int main(void)
{
    DDRC = 0xFF;
        SPI_SlaveInit();
        while(1)
        {
                PORTC=SPI_SlaveReceive();
        }
       
       
}





相关帖子

沙发
colinh| | 2014-10-16 17:05 | 只看该作者
赞,正好在用,收下了,学习下,感谢楼主!

使用特权

评论回复
板凳
ddllxxrr|  楼主 | 2014-10-16 20:42 | 只看该作者
colinh 发表于 2014-10-16 17:05
赞,正好在用,收下了,学习下,感谢楼主!

:handshake

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2399

主题

6964

帖子

68

粉丝