请教 PIC 单片机通信模式

[复制链接]
2709|0
 楼主| gyh02133 发表于 2008-6-10 15:33 | 显示全部楼层 |阅读模式
SSP&nbsp;模式&nbsp;上的IIC&nbsp;格式,,我要一个机子发送,一个机子接收;<br /><br /><br />咋搞..<br />#include&nbsp;&nbsp;&nbsp;&nbsp;&ltpic.h&gt<br />/*该程序实现单片机双机异步通信功能,该程序是发送部分*/<br />unsigned&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;tran[8];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*定义一个数组存储发送数据*/<br />unsigned&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;k,data;&nbsp;&nbsp;&nbsp;&nbsp;/*定义通用寄存器*/<br />const&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;table[20]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f,0xbf,0x89,0xff};<br />/*不带小数点的显示段码表*/<br />/*spi显示初始化子程序*/<br />void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPIINIT()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;PIR1=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;SSPCON=0x30;&nbsp;//0b0011&nbsp;0000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SSPSTAT=0xC0;//状态寄存器1100&nbsp;0000&nbsp;&nbsp;SPI&nbsp;三线传送的<br />/*设置SPI的控制方式,允许SSP方式,并且时钟下降沿发送,与&quot;74HC595,当其<br />*SCLK从低到高跳变时,串行输入寄存器&quot;的特点相对应*/<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISC=0xD7;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*SDO引脚为输出,SCK引脚为输出*/<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISA5=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*RA5引脚设置为输出,以输出显示锁存信号*/<br />}<br />/*给数组赋初值子程序&nbsp;*/<br />void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fuzhi()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;for(k=0;k&lt8;k++)&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tran[k]=k+3;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />/*SCI部件初始化子程序*/<br />void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sciint()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;SPBRG=0X19;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*将传输的波特率设为约9&nbsp;600位/秒*/<br />&nbsp;&nbsp;&nbsp;&nbsp;TXSTA=0X04;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*选择异步高速方式传输8位数据&nbsp;发送状态和控制寄存器&nbsp;0000&nbsp;0100*/<br />&nbsp;&nbsp;&nbsp;&nbsp;RCSTA=0X80;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*允许同步串行口工作1000&nbsp;0000*/<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISC6=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISC7=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*将RC6、RC7设置为输入方式,对外部呈高阻状态*/<br />}&nbsp;&nbsp;&nbsp;&nbsp;<br />/*SPI传输数据子程序*/<br />void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPILED(data)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;SSPBUF=data;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*启动发送*/<br />&nbsp;&nbsp;&nbsp;&nbsp;do&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}while(SSPIF==0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//SSPIF==1<br />&nbsp;&nbsp;&nbsp;&nbsp;SSPIF=0;<br />}<br />/*显示子程序,显示8位数*/<br />void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;RA5=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*准备锁存*/<br />&nbsp;&nbsp;&nbsp;&nbsp;for(k=0;k&lt8;k++)&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data=tran[k];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data=table[data];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*查得显示的段码*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPILED(data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*发送显示段码*/<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;RA5=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*最后给一个锁存信号,代表显示任务完成*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />是不是这样设置???&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

135

帖子

2

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