打印

PIC18F4520的I2C问题

[复制链接]
1159|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
理工大小薛|  楼主 | 2013-10-21 21:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 理工大小薛 于 2013-10-22 08:25 编辑

程序写成这样可否,不想用等待
i        SSPCON2bits.SEN=1;                        if(PIR1bits.SSPIF)
                        {
                                switch(I2CIF)
                                {
                                        case 0:
                                                PIR1bits.SSPIF=0;
                                               
                                                SSPBUF=0xA0;
                                                I2CIF=1;break;                        //从机地址
                                        case 1:
                                                PIR1bits.SSPIF=0;
                                                SSPBUF=0x00;
                                                I2CIF=2;                        //通道选择
                                                break;
                                        case 2:
                                                PIR1bits.SSPIF=0;
                                                SSPBUF=128;
                                                I2CIF=3;                                //数据1
                                                break;
                                        case 3:
                                                PIR1bits.SSPIF=0;
                                                SSPBUF=0x26;                                //数据2
                                                SSPCON2bits.PEN=1;
                                                I2CIF=4;       
                                                break;
                                        case 4:
                                                PIR1bits.SSPIF=0;
                                                PORTCbits.RC1=0;
                                                TRISCbits.TRISC1=0;
                                                PORTCbits.RC1=1;
                                                SSPCON2bits.SEN=1;
                                                I2CIF=0;break;
                                        default: break;
                                }
                        }
沙发
opal11| | 2013-10-21 22:02 | 只看该作者
自己测试下就行了。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
理工大小薛 + 1
板凳
NE5532| | 2013-10-21 22:09 | 只看该作者
呵呵,人家本来就是让你这样用的,不然做成硬件跟软件不是一样费CPU资源。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
理工大小薛 + 2 赞一个!
地板
理工大小薛|  楼主 | 2013-10-22 09:15 | 只看该作者
        //初始化I2C
        TRISCbits.TRISC3=1;
        TRISCbits.TRISC4=1;
       
        SSPSTAT=0x80;
        SSPCON1=0x38;
        SSPCON2=0x00;
        SSPADD=0x18;
       
        //WRITE
                        SSPCON2bits.SEN=1;
                        while(1)
                        {
                       
                        if(PIR1bits.SSPIF)
                        {
                                switch(I2CIF)
                                {
                                        case 0:
                                                PIR1bits.SSPIF=0;
                                                SSPBUF=0xA0;
                                                I2CIF=1;break;
                                        case 1:
                        PIR1bits.SSPIF=0;
                        SSPBUF=0x00;               
                                                I2CIF=2;                        //通道选择
                                                break;
                                        case 2:
                                                PIR1bits.SSPIF=0;
                                                SSPBUF=0x00;
                                                I2CIF=3;                                //数据1
                                                break;
                                        case 3:
                                                PIR1bits.SSPIF=0;
                                                SSPBUF=0xff;                                //数据2
                                                SSPCON2bits.PEN=1;
                                                I2CIF=4;       
                                                break;
                                        case 4:
                                                PIR1bits.SSPIF=0;
                                                SSPCON2bits.SEN=1;
                                                I2CIF=0;break;
                                        default: break;
                                }
                        }
                        }
测试可用

使用特权

评论回复
5
理工大小薛|  楼主 | 2013-10-22 09:17 | 只看该作者
另外怎么结贴呀?

使用特权

评论回复
6
涵潇舒雅| | 2013-10-22 09:50 | 只看该作者
NE5532 发表于 2013-10-21 22:09
呵呵,人家本来就是让你这样用的,不然做成硬件跟软件不是一样费CPU资源。 ...

版主,能不能去看看我的关于i2c的问题啊

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
理工大小薛 + 2
7
NE5532| | 2013-10-22 13:05 | 只看该作者
涵潇舒雅 发表于 2013-10-22 09:50
版主,能不能去看看我的关于i2c的问题啊

可以啊,私信发链接过来。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
理工大小薛 + 2 很给力!
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

65

帖子

0

粉丝