打印

pic16f硬件I2C的应用???求助!!!

[复制链接]
4005|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
WalKerOne|  楼主 | 2011-7-1 14:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大家帮我看看,这个用MSSP模块实现PIC16F1937进行I2C主模式向从模块PCF8576D写数据的程序有什么问题吗?我写过去的显示数据很乱啊

uchar DisBuf[19] = {0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf};


void main()
{

OSCCON = 0x7a;
// INTOSCIO, PLL disabled, Fosc = 16MHz


PORTC = 0x60;

LATC = 0x60;

TRISC = 0x9e;
// SCL and SDA is input


SSPADD = 0x09;
// 0x09 for 400kHz at 16MHz

SSPSTAT = 0x00;
// Enable High speed 400kHz slew rate control

SSPCON1 = 0x28;
// Enable I2C Master initially

SSPCON2 = 0x00;
// Clear control bits

SSPCON3 = 0x08;
// Disable all interrupt of I2C Master, keep 300ns on SDA after SCL's falling edge


While(1){


SEN = 1;

while(SEN);

SSPBUF = PCF8576D_Addr & 0xfe;

while(ACKSTAT);

SSPBUF = 0xe0;

while(ACKSTAT);

SSPBUF = 0xc8;

while(ACKSTAT);

SSPBUF = 0x00;

while(ACKSTAT);

for(i=0;i<19;i++){

SSPBUF = DisBuf[i];

while(ACKSTAT);

}

PEN = 1;

while(PEN);
        }
}
}
}
沙发
MZFYQ| | 2012-2-24 10:23 | 只看该作者
设置都正确了吗,自己多看看单片机资料,所有单片机的IIC都是一样的,你把设置正确应该就OK乐;

使用特权

评论回复
板凳
Ryanhsiung| | 2012-2-24 12:53 | 只看该作者
自己对着DATASHEET对过去,会找到问题的!!

使用特权

评论回复
地板
NE5532| | 2012-2-24 20:13 | 只看该作者
硬I2C是自由度很高的I2C,任何支持I2C的功能都可以实现,楼主在自己身上找问题了。

使用特权

评论回复
5
yewuyi| | 2012-2-25 09:23 | 只看该作者
到官方网站去找IIC的应用**,参考里面的代码写。

另外uchar DisBuf[19]在这里应该被定义为const才对,这样这段数据被保存到FLASH中,而你现在的定义则在RAM中开辟空间保存数据,浪费了PIC宝贵的RAM资源

使用特权

评论回复
6
青莲新楓| | 2017-4-12 20:52 | 只看该作者
你的SSPIF位没有清零  在每一个SSPBUF后面都需要清零  PIR1bits.SSPIF = 0;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

42

帖子

1

粉丝