打印

高手帮忙看下

[复制链接]
1077|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yegu|  楼主 | 2010-3-30 14:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是我写的一段spi进行双机通信的程序,但是我查了很久查不出为什么发送时数据没按我的要求走,感觉很乱,接收也没法接收到,麻烦高手们帮我看下程序并指教下错误的地方。
发送程序
#include "p18f24j10.h"
#define uchar unsigned char
#define uint unsigned int
uchar i,data;
uint a,b,c;
uchar send[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};
void init(void)
{
INTCON=0;
ADCON1=0x07;
PIE1=0;
PIE2=0;
PIE3=0;
}
void mcu1spi_init(void)
{
SSPSTAT=0xC0;
SSPCON1=0x30;
TRISC=TRISC&0xD7;
TRISA=TRISC&0xDF;
PIR1bits.SSPIF=0;
}
void delay(uint c)
{
for(a=c;a>0;a--);
  for(b=5;b>0;b--);
}
void spi_send(uchar data)
{
// for(i=0;i<8;i++)
// {
//  data=pointer[i];
  SSPBUF=data;
  do
  {
   ;
  }while(PIR1bits.SSPIF==0);
  PIR1bits.SSPIF=0;
  
// }
}
void main(void)
{
init();
mcu1spi_init();
while(1)
{
  for(i=0;i<3;i++)
  {
   data=send[i];
   
   spi_send(data);
  }
}
接收程序
#include "p18f24j10.h"
#define uchar unsigned char
#define uint unsigned int
uchar read[8];
uchar i,data;
void init(void)
{
INTCON=0;
ADCON1=0x07;
PIE1=0;
PIE2=0;
PIE3=0;
}
void mcu2spi_init(void)
{
SSPSTAT=0xC0;
SSPCON1=0x30;
TRISC=TRISC|0x10;
TRISA=TRISC&0xf7;
PIR1bits.SSPIF=0;
}
uchar spi_receive(void)
{
    mcu2spi_init();
    SSPBUF=0;
    do
    {
     ;
    }while(PIR1bits.SSPIF==0);
    PIR1bits.SSPIF=0;
    data=SSPBUF;
return (data);
}
void main(void)
{
init();
mcu2spi_init();
while(1)
{
  for(i=0;i>7;i++)
     {
      read[i]=spi_receive();
     }
}

      
}

}

相关帖子

沙发
mohanwei| | 2010-3-30 19:28 | 只看该作者
给“渔”吧……不要焦急,把程序按照K&R风格缩格,然后耐心点注释上。做到这一步,90%以上的问题你都能解决了。
再不行接着画状态迁移图。
编程不要着急调试;调试发现的bug越多,表示你程序里还有的bug越多

使用特权

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

本版积分规则

14

主题

25

帖子

0

粉丝