SPI通讯奇怪问题

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

本版积分规则

1

主题

1

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部