打印

STC12C5608AD单片机SPI问题求解

[复制链接]
2269|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lyh123456|  楼主 | 2013-7-2 14:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序如下,PC收到的数据都是0XFF,正常来讲应该是0X11的才对,望各位大侠看看程序中哪里出了问题,搞了两天没找出问题!谢谢~~~
//#define MASTER
sfr AUXR = 0X8E;
sfr SPSTAT = 0X84;
#define SPIF 0X80        //SPSTAT.7
#define WCOL 0X40        //SPSTAT.6
sfr SPCTL = 0X85;
#define SSIG 0X80        //SPCTL.7
#define SPEN 0X40        //SPCTL.6
#define DORD 0X20        //SPCTL.5
#define MSTR 0X10        //SPCTL.4
#define CPOL 0X08        //SPCTL.3
#define CPHA 0X04        //SPCTL.2
#define SPEED_4   0X00        //CPU_CLK/4
#define SPEED_16  0X01        //CPU_CLK/16
#define SPEED_64  0X02        //CPU_CLK/64
#define SPEED_128 0X03        //CPU_CLK/128
sfr SPDAT = 0X86;
#define ESPI  0X08;   //AUXR.3
sbit SPISS = P1^4;
void UartInit()         //波特率为9600
{
  TMOD=0x20;     //定时器1 8位自动重装
  TH1=0xfd;      //波特率为9600
  TL1=0xfd;
  TR1=1;                 //开定时器1
  REN=1;                 //允许串行接收
  SM0=0;         //串口工作模式1,8位自动重装,波特率可变
  SM1=1;
  PCON=0x80;     //波特率加倍
  EA=1;          //开总中断
  ES=1;          //开串行中断
}
void UartSendBYTE( uc8 dat)                //串口发送一个字节
{
   SBUF=dat;
   while(!TI);
   TI=0;
}
uc8 RecvUart()
{
  while(!RI);
  RI=0;
  return SBUF;
}
void SpiInit()
{
  //SSIG = 1;   //忽略SS脚
  //SPEN = 1;   //允许SPI工作
  //DORD = 0;   //先传高位MSB
  //MSTR = 1;   //设置单片机为主机
  SPCTL=0XD0;  //SPI Control Register SSIG SPEN DORD MSTR CPOL CPHA SPR1 SPR0 1101,0000
  SPSTAT=0XC0; //清除中断标志,和写冲突标志,注意是对应位写1才能清零
}
uc8 writebyte(uc8 temp)
{
  SPDAT = temp;
  while(!(SPSTAT & 0x80));  //判断SPI传输是否完成
  SPSTAT = 0xC0; //清除中断标志,和写冲突标志,注意是对应位写1才能清零
  return SPDAT;
}
uc8 readbyte()
{
  idata uc8 temp;
  SPDAT = 0x00;
  while(!(SPSTAT & 0x80));  //判断SPI传输是否完成
  temp = SPDAT;
  SPSTAT = 0xC0; //清除中断标志,和写冲突标志,注意是对应位写1才能清零
  return temp;
}
void delay()
{
  u16 i;
  u16 j;
  for(i=0;i<110;i++)
   for(j=0;j<1000;j++);
}
void main()
{  
   UartInit();
   SpiInit();   
   while(1)
   {
     UartSendBYTE(writebyte(0x11));
         delay();
   }       
}

相关帖子

沙发
123654789| | 2013-7-2 14:17 | 只看该作者
建议楼主和下面这位同志一起研究

zjping0815

https://bbs.21ic.com/icview-578050-1-1.html
在线求助SPI通讯 [复制链接]   未结帖(20)
  

zjping0815 当前离线
最后登录2013-7-2在线时间13小时0分注册时间2013-6-9阅读权限30精华0积分132帖子44本月在线0小时45分串个门 加好友 打招呼 发消息  zjping0815


用IO口模拟SPI通讯(用3个IO或4个IO口,实现数据发送及接收)QQ 879733025
大虾们多指点


中级技术员

中级技术员, 积分 132, 距离下一级还需 168 积分积分132帖子44本月在线0小时45分专家等级:

结帖率:0%
电梯直达   1#
zjping0815 发表于 2013-7-2 09:31:44 |只看该作者 |倒序浏览 |返回版面|屏蔽 回复
0

使用特权

评论回复
板凳
lyh123456|  楼主 | 2013-7-2 14:46 | 只看该作者
123654789 发表于 2013-7-2 14:17
建议楼主和下面这位同志一起研究

zjping0815

IO口模拟的我调好了的,现在想用自带的SPI看看通信效果怎么样

使用特权

评论回复
地板
123654789| | 2013-7-2 14:48 | 只看该作者
lyh123456 发表于 2013-7-2 14:46
IO口模拟的我调好了的,现在想用自带的SPI看看通信效果怎么样

STC的数据手册有例子啊 !!!

使用特权

评论回复
5
lyh123456|  楼主 | 2013-7-2 14:54 | 只看该作者
123654789 发表于 2013-7-2 14:48
STC的数据手册有例子啊 !!!

把例子照搬过来了还是不行,难搞啊

使用特权

评论回复
6
123654789| | 2013-7-2 14:59 | 只看该作者
lyh123456 发表于 2013-7-2 14:54
把例子照搬过来了还是不行,难搞啊

那么就打电话找老姚

使用特权

评论回复
7
sunlight| | 2013-7-2 15:05 | 只看该作者
好像SPI设备的片选信号都没有!

使用特权

评论回复
8
li374751475| | 2013-7-2 16:01 | 只看该作者
不懂

使用特权

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

本版积分规则

5

主题

29

帖子

1

粉丝