通过iic在24c02的地址1中写入数据再读出来点亮一个led灯,为什么没反应

//试验AT24C02EEPROM芯片程序#include<reg51.h>#include<intrins.h>#defineuintunsignedint#defin... //试验AT24C02EEPROM芯片程序
#include<reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char

sbit sda=P2^0; //IO口定义
sbit scl=P2^1;

unsigned char j,k;

void delay(unsigned char i) //延时程序
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}

void nop()
{
_nop_();
_nop_();
_nop_();
}

/////////24C02读写驱动程序////////////////////
void delay1(unsigned char m) //延时
{ unsigned int n;
for(n=0;n<m;n++);
}

void init() //24c02初始化子程序
{
scl=1;
nop();
sda=1;
nop();
}

void start() //启动I2C总线
{
sda=1;
nop();
scl=1;
nop();
sda=0;
nop();
scl=0;
nop();
}

void stop() //停止I2C总线
{
sda=0;
nop();
scl=1;
nop();
sda=1;
nop();
}

void writebyte(unsigned char j) //写一个字节
{
unsigned char i,temp;
temp=j;
for (i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
nop();
sda=CY; //temp左移时,移出的值放入了CY中
nop();
scl=1; //待sda线上的数据稳定后,将scl拉高
nop();
}
scl=0;
nop();
sda=1;
nop();
}

unsigned char readbyte() //读一个字节
{
unsigned char i,j,k=0;
scl=0; nop(); sda=1;
for (i=0;i<8;i++)
{
nop(); scl=1; nop();
if(sda==1)
j=1;
else
j=0;
k=(k<<1)|j;
scl=0;
}
nop();
return(k);
}

void clock() //I2C总线时钟
{
unsigned char i=0;
scl=1;
nop();
while((sda==1)&&(i<255))
i++;
scl=0;
nop();
}

////////从24c02的地址address中读取一个字节数据/////
unsigned char read24c02(unsigned char address)
{
unsigned char i;
start();
writebyte(0xa0);
clock();
writebyte(address);
clock();
start();
writebyte(0xa1);
clock();
i=readbyte();
stop();
delay1(10);
return i;
}

//////向24c02的address地址中写入一字节数据info/////
void write24c02(unsigned char address,unsigned char info)
{

start();
writebyte(0xa0);
clock();
writebyte(address);
clock();
writebyte(info);
clock();
stop();

delay1(50);
}

void main()
{

init(); //初始化24C02
write24c02(1,0xfe); //在24c02的地址1中写入数据再读出来点亮led灯
delay1(100);
P1=read24c02(1); //点亮led
while(1);

}

//两个延时函数没有问题,实在不知道问题出在哪里
在学iic,所以在练习,最终目的是学iic,通过24c02芯片来点亮指定的其中一个led来判断写出来的程序有没有问题,但现在led不亮,不知道问题出在哪了,实验板也没问题,用单片机点亮过, 硬件都没问题
展开
 我来答
年代记无悔
2014-10-15
知道答主
回答量:13
采纳率:0%
帮助的人:8.2万
展开全部
只要你的电源不超过4V 电流不超过20MA控制通断就可以了,具体的有卖LED控制器,你可以把LED直接接上,也可以用单片机控制一个脚的通断,来达到控制LED灯的闪.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式