Discuz! Board

标题: SPI问题——双机通讯——见程序 [打印本页]

作者: 中恒    时间: 2014-8-13 20:09
标题: SPI问题——双机通讯——见程序
#include "iostm8s003f3.h" //发送

#define LCD_CS_H PC_ODR |=0X10  //PC4
#define LCD_CS_L PC_ODR &=0XEF

void Delay_ms(unsigned char a)
{
    unsigned char i,j,m;
        for(i=0;i<10;i++)
        {for(j=0;j<m;j++);}
}

void SPI_Init(void)
{
        PC_DDR=0x70;
        PC_CR1=0x70;
        PC_CR2=0x00;
        SPI_CR1=0x5F;
        SPI_CR2=0x03;
        LCD_CS_H;
}

void SPI_Send(unsigned char Data)
{
        LCD_CS_L;
        Delay_ms(8);
        SPI_DR=Data;
        while((SPI_SR & 0x02)==0x00);
        Delay_ms(8);
        LCD_CS_H;
}

void main(void)
{
    SPI_Init();
       
  while(1)
  {
    SPI_Send(0x55);
    Delay_ms(100);
    SPI_Send(0xAA);
    Delay_ms(100);
  }
}


作者: 中恒    时间: 2014-8-13 20:09
#include "iostm8s003f3.h"  //接收

void Delay_ms(unsigned char a)
{
    unsigned char i,j,m;
        for(i=0;i<10;i++)
        {for(j=0;j<m;j++);}
}

void SPI_Init(void)
{
PC_DDR=0X8f;     //MISO从设备输出管脚,MOSI从设备输入     
PC_CR1=0X0f;     
PC_CR2=0X00;

SPI_CR1=0x10;    //先发送MSB,关闭SPI,波特率为f/4,配置为从设备, //空闲低电平,第一个时钟边缘开始数据采样  
SPI_CR1|=0x40;   //开启SPI  
}

void main(void)
{
  PB_DDR=0XFF;     
  PB_CR1=0XFF;     
  PB_CR2=0X00;  

  SPI_Init();
       
  while(1)
  {

   while((SPI_SR&0x01)==0x01) ; //判断接收区是否为空,即判断是否接收到数据

   PB_ODR=SPI_DR;  

   //Delay_ms(10);
  }
}



作者: 中恒    时间: 2014-8-13 20:13
没有效果——不知是什么问题,

特此,   请教各位。
作者: admin    时间: 2014-8-14 22:45
中恒 发表于 2014-8-13 20:13
没有效果——不知是什么问题,

特此,   请教各位。

你代码能加注释么?一个个寄存器难得看呀




欢迎光临 Discuz! Board (http://qfv8.com/) Powered by Discuz! X3