导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[yjshappy]请教I2C双机通讯的问题(附程序)



No.99615
作者:yjshappy
邮件:yjs_happy@126.com
ID:50226
登陆:2次
文章数:4篇
最后登陆IP:202.38.212.133
最后登陆:2007/3/23 22:54:10
注册:2006/3/30 11:31:21
财富:115
发帖时间:2006/11/14 16:15:02
发贴者IP:202.38.214.137
标题:yjshappy:请教I2C双机通讯的问题(附程序)
摘要:No.99615请教I2C双机通讯的问题(附程序) 大家好,请帮我看下这个程序应该怎么样修改才能实现:16F876为被控器通过I2C总线连续发送数据到主控器16F877。他们的RC3与RC4都是连在一起的,通过1K电阻接到+5V的。
下面是我写的程序,只能够发送一个数据到PIC16F877,也就是在PORTB端口的8个二极管显示出011100111。
而16F876的PORTB端口的二极管显示11001101,RC2脚接的二极管不亮。   万分感激!!!!
//16f877作为主控接收器的程序
#include    <pic.h>  
#include    <pic1687x.h>  
#define  PORTBIT(add,bit)  ((unsigned)(&add)*8+(bit)
static  bit  PORTD_7@ PORTBIT(PORTD,7);
static  bit  PORTD_6@ PORTBIT(PORTD,6);
unsigned char n;
unsigned char m;
void i2_cinit();
void i2_cstart();

//i2c初始化子程序
void i2_cinit()
{TRISC=0X18;//RC3,RC4设定为输出
 SSPADD=19;//8MHZ晶振设定传送率为100KHZ
 SSPSTAT=0X80;
 SSPCON=0X38;
 
 }
//i2c发送启动信号子程序
void i2_cstart()
{for(n=255;n--;)
   {for(m=255;m--;);}  //延时一会
  SEN=1;  // 发送启动信号
 while(SSPIF==0);
 SSPIF=0; 
 }

//主程序
 main()
{TRISD=0;
 TRISB=0;
 PORTB=0;          //清输出
 PORTD=0;          //清输出
 i2_cinit();
 i2_cstart();
 SSPBUF=0X29;       //发送从机地址选通
 
 while (STAT_BF==1);
 while (ACKSTAT);    //等待从机应答
 while (SSPIF==0);
 SSPIF=0; 
 RCEN=1;
 
 while(SSPIF==0);
 ACKDT=0;
 ACKEN=1;
 PORTB=SSPBUF; // ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:16毫秒 最大:78531毫秒 查询6次