打印
[开发工具]

PIC18F4520关于I2C读写问题!!!!!寻求共同学习人士

[复制链接]
1430|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
erics0708|  楼主 | 2015-8-25 01:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 erics0708 于 2015-8-25 01:42 编辑

小弟刚学PIC单片机求大神帮忙!
编译环境: MPLAB IDE 8.92+PICC18 9.8
烧写工具: PICKit 2
问题1:程序编译没有问题,烧写以后不能正常工作.
问题2:用PICkit 2仿真发现SSPCON2第0位不能置1,也就是SEN=1不起作用.试了好多种写法都不行
搞了好几天了快崩溃了,有人会吗能帮我看看怎么回事吗??


自己写的程序如下:
void i2c_init()
{
        TRIS_I2C_SCL=0;
        TRIS_I2C_SDA=0;
        SSPSTAT=0x80;
        SSPCON1=0x28;
        SSPCON2=0x0;
        SSPADD=0x0;


}        
void i2c_write(unsigned char addr,unsigned char rdata)
{
        SSPIF=0;
        SEN=1;
        
        SSPBUF=0xA0;
        while(!SSPIF);

        SSPIF=0;
        SSPBUF=addr;
        while(!SSPIF);

        SSPIF=0;
        SSPBUF=rdata;//数据
        while(!SSPIF);

        PEN=1;
        while(!SSPIF);
        SSPIF=0;
        delay10ms();
}

unsigned char i2c_read(unsigned char addr)
{
        unsigned char i;
        SEN=1;
        SSPIF=0;
        SSPBUF=0xA0;//a0
        while(!SSPIF);

        SSPIF=0;
        SSPBUF=addr;
        while(!SSPIF);

        SSPIF=0;
        SEN=1;
        while(!SSPIF);

        SSPIF=0;
        SSPBUF=0xA0+1;//a1
        while(!SSPIF);

        SSPIF=0;
        RCEN=1;
        while(!SSPIF);
        SSPIF=0;

        i=SSPBUF;
        PEN=1;
        while(!SSPIF);
        SSPIF=0;
        return i;
        
}






沙发
erics0708|  楼主 | 2015-8-29 00:18 | 只看该作者
问题已解决!!

使用特权

评论回复
板凳
michaellengleng| | 2015-8-31 14:52 | 只看该作者
PIC18F4320 低价处理

使用特权

评论回复
地板
StevenLau2008| | 2015-9-7 13:46 | 只看该作者

Microchip:

TEL:13148736025
QQ:359920019

使用特权

评论回复
5
21_rain| | 2015-9-19 10:32 | 只看该作者

敢问楼主,问题是什么?还请赐教,我好像也是同样的问题

使用特权

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

本版积分规则

2

主题

5

帖子

0

粉丝