void spiinit()<br />{<br /> PIR1 = 0; <br /> SSPCON = 0x20; //工作在主控下,无效为低电平 00100000<br /> SSPSTAT = 0x00; //00000000<br /><br /> TRISC3 = 0;<br /> TRISC4 = 1; //sdo输出,sck输出,SDI输入,rc6.rc7输出<br /> TRISC5 = 0;<br /> TRISC6 = 0;<br /> TRISC7 = 0 ;<br /> TRISA5 = 0;<br />}<br /><br />这里要往mcp41010数字电位器写数,mcp41010支持0.0 和1.1俩个模式,下面是数据发送函数之前cs已经拉低,在下面俩个函数后拉高,这里出现了一个奇怪问题,SSPBUF = 0x11,这里的赋值不起作用,在watch中观察始终为0x00,软件调试就没有这个问题.不知道那位老师能解答一下为什么?<br /><br />void spisetcom()<br />{ <br /> SSPBUF = 0x11; //mcp41010命令<br /><br /> do<br /> {<br /> ;<br /> }<br /> while(SSPIF==0); //等待发送完毕<br /><br /> SSPIF=0; <br /><br />}<br />void spisetdata()<br />{ <br /> SSPBUF = data;<br /> data++; <br /> do<br /> {<br /> ;<br /> }<br /> while(SSPIF==0); //等待发送完毕<br /><br /> SSPIF=0;<br /> <br />}<br />用示波器SCK,sdo引脚上有输出<br />但是数字电位器没有改变 |
|