找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2842|回复: 3
打印 上一主题 下一主题
收起左侧

I2c操作pcf8591 哪位帮看一下吧,谢谢了

[复制链接]
跳转到指定楼层
楼主
ID:51960 发表于 2013-7-29 18:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h>
#define uchar unsigned char
sbit scl=P2^1;
sbit sda=P2^0;
uchar ack_sign;           //应答标志 应答为1,不应答为0
void delay()
{
        uchar i=1;
        while(i--);
}
void start()   //开始信号  在scl为1时sda一个下降沿
{
        sda=1;
        delay();
        scl=1;
        delay();
        sda=0;
        delay();
        scl=0;           //记住这句一定要加,
        delay();
}
void stop()          //终止信号   在scl为1是sda一个上升沿
{
        sda=0;
        delay();
        scl=1;
        delay();
        sda=1;
        delay();
        scl=0;         //始终搞不懂这里为什么要加这个
        delay();
}
void write(uchar Data)                //写一个字节
{
        uchar i;
        for(i=0;i<8;i++)  //传送一个字节
        {
                Data<<=1;
                delay();
                scl=0;
                delay();
                sda=CY;
                delay();
                scl=1;
                delay();       
        }
        scl=0;
        delay();
        sda=1;                 //释放总线,以便应答,记住这里
        delay();
        scl=1;
        delay();
        if(sda==1)
                ack_sign=0;
        else
                ack_sign=1;
}
void main()
{
a:        while(1)
        {
                start();
                write(0x90);
                if(ack_sign==0)           //为0表示没应答,数据传输出错,无效,重新开始
                        goto a;
                write(0x40);
                if(ack_sign==0)
                        goto a;
                write(0xff);
                if(ack_sign==0)
                        goto a;
                stop();
        }
}
那个加黑的部分为什么要加,什么作用,不加为什么就得不到正确结果

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:52608 发表于 2013-8-3 15:18 | 只看该作者
前面有个语句SCL=1,后面的语句SCL=0;这样才能形成一个脉冲,只有在脉冲的驱动下,才能工作。
回复

使用道具 举报

板凳
ID:51960 发表于 2013-8-3 15:48 | 只看该作者
谢谢大家了
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表