打印

SPI通讯奇怪问题

[复制链接]
1497|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiao70|  楼主 | 2008-7-31 16:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void spiinit()
{
 PIR1 = 0; 
 SSPCON = 0x20; //工作在主控下,无效为低电平 00100000
 SSPSTAT = 0x00;  //00000000

 TRISC3 = 0;
 TRISC4 = 1; //sdo输出,sck输出,SDI输入,rc6.rc7输出
 TRISC5 = 0;
 TRISC6 = 0;
 TRISC7 = 0 ;
 TRISA5 = 0;
}

这里要往mcp41010数字电位器写数,mcp41010支持0.0 和1.1俩个模式,下面是数据发送函数之前cs已经拉低,在下面俩个函数后拉高,这里出现了一个奇怪问题,SSPBUF = 0x11,这里的赋值不起作用,在watch中观察始终为0x00,软件调试就没有这个问题.不知道那位老师能解答一下为什么?

void spisetcom()
{   
    SSPBUF = 0x11; //mcp41010命令

 do
 {
  ;
 }
 while(SSPIF==0); //等待发送完毕

 SSPIF=0;  

}
void spisetdata()

 SSPBUF = data;
 data++; 
 do
 {
   ;
 }
 while(SSPIF==0); //等待发送完毕

 SSPIF=0;
 
}
用示波器SCK,sdo引脚上有输出
但是数字电位器没有改变
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝