找回密码
 立即注册

QQ登录

只需一步,快速开始

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

大神看看我这I2C总线程序编译错误 怎么回事?

[复制链接]
跳转到指定楼层
楼主
ID:578842 发表于 2020-9-10 11:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
新手,学习I2C总线。

Build target 'Target 1'
compiling i2c总线学习.c...
I2C总线学习.C(18): warning C206: 'delay': missing function-prototype
I2C总线学习.C(51): error C231: 'delay': redefinition
I2C总线学习.C(51): error C231: 'delay': redefinition
Target not created

单片机源程序如下:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit sda=P2^0;
sbit scl=P2^1;

void delay1()
{
        uint x,y;
        for(x=5;x>0;x--)

                for(y=5;y>0;y--);

}
void start()//起始信号
{
        sda=1;
        delay();
        scl=1;
        delay();        
        sda=0;
        delay();

}

void stop()//终止信号
{
        sda=0;
        delay();
        scl=1;
        delay();        
        sda=1;
        delay();

}
void response()//应答信号
{
        uchar i;
        scl=1;
        delay();
        while((sda==1)&&(i<250))
                        i++;
        scl=0;
        delay();

}
void delay()
{;;}

void init()//初始化
{
        sda=1;
        scl=1;
}
void wtite_byte(uchar date)
{
        uchar i,temp;
        temp=date;
        scl=0;
        delay();
        for(i=0;i<8;i++)
                {
                        temp=temp<<1;
                        sda=CY;
                        delay();
                        scl=1;
                        delay();
                        scl=0;
                        delay();
                }
        sda=1;
        delay();
}

uchar read_byte()
{
        uchar i,j,k;
        scl=0;
        delay();
        scl=1;
        delay();
        for(i=0;i<8;i++)
                {
                        scl=1;
                        delay();
                        j=sda;
                        k=(k<<1)|j;
                        scl=0;
                        delay();
                }
        return k;
}




void main()
{
        init();
        start();
        write_byte(0xa0);
        response();
        write_byte(3);
        response();
        write_byte(0xfe);
        response();
        stop();

        start();        
        write_byte(0xa0);
        response();
        write_byte(3);
        response();
        start();
        write_byte(0xa1);
        response();
        P1=write_byte();
        stop();
        while(1);

}



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

使用道具 举报

沙发
ID:578842 发表于 2020-9-10 11:28 | 只看该作者
说delay未定义,看不懂了,怎么没定义
回复

使用道具 举报

板凳
ID:578842 发表于 2020-9-10 12:10 | 只看该作者
我找到错误地方了
是delay函数要放在最上边,下面的函数可以调用。次序翻了,不能编译。
也希望初学者以此为鉴。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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