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