找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3274|回复: 5
收起左侧

warning C318: can't open file 'AT24C02.h'单片机编译错误

[复制链接]
ID:777060 发表于 2020-6-19 12:24 | 显示全部楼层 |阅读模式
报错warning C318: can't open file 'AT24C02.h'

这是源程序:
#include<reg51.h>
#include<at24c02.h>
#define uchar unsigned char
#define uint unsigned int
uchar buffer[6]={0};
sbit sda=P3^5;
sbit sc1=P3^4;
sbit beep=P3^7;
bit flag=0, aa, keyflag=1;
uchar DSY_BUFFER[16]="   ";
uchar Userpassword[6]={0};
sbit rs=P0^0;
sbit rd=P0^1;
sbit lcden=P0^2;
sbit led=P3^6;
uchar code table[]="Your Password...";
void delayms(uint z)
{unit x, y;
for(x=z;x>0; x--)
        for(y=120;y>0; y--);
}
uchar Keys_Scan()
{
        uchar temp,keynum;
        P1=0x0F;
        delayms(3);
        temp=P1^0x0f;
        switch(temp)
        {case 1:keynum=0;break;
        case 2:keynum=1;break;
        case 4:keynum=2;break;
        case 8:keynum=3;break;
        break;}
        P1=0xf0;
        delayms(3) ;
        temp=(P1>>4)^0x0f;
        switch(temp)
        {case 1:keynum=keynum+0;break;
        case 4:keynum=keynum+8;break;
        case 8:keynum=keynum+12;break;
        break;}
        return keynum;}
#include "reg51.h"
unsigned charuint8;
unsigned shortuintl6;
#define AT24C02_WriteDeviceAddress 0xa0
#define AT24C02_ReadDeviceAddress 0xa1
sbit SCL=P3^6;
sbit SDA=P3^7;
#define TRUE   1
#define FALSE   0
#define I2C_DelayTime 60
uint8 co[6];
uint8 cp[6];
void I2C_Delay(uint16 count)
{while(count!=0)count--;
}
void init()
{
        SDA=1;
        I2C_De1ay I2C_DelayTime);SCL=1;
        I2C_De1ay (I2C_DelayTime);
}
void I2C_Start(void)
{
        SDA=1;
        SCL=l;
        I2C_Delay(I2C_DelayTime) ;
        SDA=O;
        I2C_De1ay(I2C_DelayTime);
        SCL=O;
        I2C_Delay(I2C_DelayTime) ;
}
void I2C_Stop(void)
{
        SDA=0;
        SCL=1;
        I2C_Delay(I2C_DelayTime) ;
        SDA=1;
        I2C_Delay (I2C_DelayTime);
        SCL=O;
        I2C_De1ay (I2C_DelayTime);
}
bit I2C_Check_Ack(void)
{
        SDA=1;
        SCL=1;
        I2C_De1ay(I2C_DelayTime/2) ;
        F0=SDA;
        I2C_De1ay(I2C_DelayTime/2) ;
        SCL=O;
        I2C_Delay(I2C_DelayTime) ;
        if(F0==1) return0;
        return1;}
uint8 I2C_Read8Bit(void)reentrant
{
        uint8 I2C_data=0,i;
        for(i=0;i<8;i++);
                {SDA=1;
                SCL=l;
                I2C_Delay(10);
                F0=SDA;
                I2C_Delay(10);
                SCL=0;
                if(F0==1)
                        {I2C_data=I2C_dataK<<1;
                                I2C_data=I2C_data/0x01; }
       Else I2C_data=I2C_data<<1; }
return I2C_data;}
void AT24C02_WritelByte(uint8 AT24C02_Address,uint8 AT24C02_1Byte)
{
        bit AckTemp=1;
        I2C_Start( );
        I2C_Write8Bit(AT24C02_WriteDeviceAddress) ;
        AckTemp=I2C_Check_Ack( );
        I2C_Write8Bit (AT24C02_Address) ;
        AckTemp=I2C_Check_Ack();
        I2C_Write8Bit (AT24C02_1Byte) ;
        AckTemp=I2C_Check_Ack() ;
        I2C_Stop0);}
uint8 AT24C02_Read1Byte (uint8 AT24C02_Address)

        {bitckTemp=l;
        uint8 AT24C02_1Byte;
        I2C_Start();
        I2C_Write8Bit(AT24C02_WriteDeviceAddress) ;
        AckTemp=I2C_Check_Ack();
        I2C_Write8Bit(AT24C02_Address) ;
        AckTemp=I2C_Check_Ack() ;
        I2C_Start();
        I2C_Write8Bit(AT24C02_ReadDeviceAddress) ;
        AckTemp=I2C_Check_Ack();
        AT24C02_1Byte=I2C_Read8Bit() ;
        AckTemp=I2C_Check_Ack() ;
        I2C_Stop() ;
        return AT24C02_1Byte;}
有报错图,但是网上的解决方法我都有点看不懂,希望大神们教教小子。谢谢谢谢,讲得通俗一点

这是运行报错图

这是运行报错图
回复

使用道具 举报

ID:636538 发表于 2020-6-19 16:17 | 显示全部楼层
你把声明#include<at24c02.h>换成#include "at2402.h"试试
回复

使用道具 举报

ID:777060 发表于 2020-6-20 11:14 | 显示全部楼层
SKYLAR123 发表于 2020-6-19 16:17
你把声明#include换成#include "at2402.h"试试

还是不行,它就变成这个了:智能锁.c(12): error C309: bad or missing filename
回复

使用道具 举报

ID:367460 发表于 2020-6-20 14:20 | 显示全部楼层
你的At24c02 是不是main.c不在一个文件夹啊
回复

使用道具 举报

ID:277948 发表于 2020-6-20 16:31 | 显示全部楼层
option-c/c++ -include path 里面添加试试
回复

使用道具 举报

ID:636538 发表于 2020-6-22 10:20 | 显示全部楼层
lll1472589 发表于 2020-6-20 11:14
还是不行,它就变成这个了:智能锁.c(12): error C309: bad or missing filename

你为什么有两个声明51.h,你在定义AT2402.h中是怎么定义的,给你看一下我在定义i2c.h里面写的内容
#ifndef __I2C_H_
#define __I2C_H_

#include<reg51.h>

//---重定义关键词---//
#ifndef uchar
#define uchar unsigned char
#endif

#ifndef uint
#define uint unsigned int
#endif

//--定义使用的IO口--//
sbit I2C_SCL = P2^1;
sbit I2C_SDA = P2^0;

//--声明全局变量--//
void I2C_Delay10us();
void I2C_Start();
void I2C_Stop();
uchar I2C_SendByte(uchar dat, uchar ack);
uchar I2C_ReadByte();

#endif
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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