PIC18F4520的I2C问题

[复制链接]
1858|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;
                                }
                        }
                        }
测试可用
 楼主| 理工大小薛 发表于 2013-10-22 09:17 | 显示全部楼层
另外怎么结贴呀?
涵潇舒雅 发表于 2013-10-22 09:50 | 显示全部楼层
NE5532 发表于 2013-10-21 22:09
呵呵,人家本来就是让你这样用的,不然做成硬件跟软件不是一样费CPU资源。 ...

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

评分

参与人数 1威望 +2 收起 理由
理工大小薛 + 2

查看全部评分

NE5532 发表于 2013-10-22 13:05 | 显示全部楼层
涵潇舒雅 发表于 2013-10-22 09:50
版主,能不能去看看我的关于i2c的问题啊

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

评分

参与人数 1威望 +2 收起 理由
理工大小薛 + 2 很给力!

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

65

帖子

0

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