历史上的今天
返回首页

历史上的今天

今天是:2025年01月14日(星期二)

正在发生

2018年01月14日 | 24C32~24C512的51单片机读写程序

2018-01-14 来源:eefocus

AT89S52 晶振频率为11.0592MHz 指令周期:1.0852us 

功能说明:24C32-512程序,能读写:24C32、24C64、24C128、24C256、24C512 
读出的数据 送 P1 口显示 
#include "reg52.h" 
#include "intrins.h" 

 

#define uchar unsigned char 
#define uint unsigned int 

sbit sda=P3^7;//;模拟I2C 数据 
sbit scl=P3^6;//;模拟I2C 时钟 

void delay1(uint z)//延时为 1ms 
{  
uchar x,x1; 
for(;z>0;z--) 

for(x=0;x<114;x++) 

for(x1=0;x1<1;x1++); 


}  

void delay()//5us延时 

_nop_(); 
_nop_(); 
_nop_(); 


void star()//开始 

sda=1; 
delay();//5us延时 
scl=1; 
delay();//5us延时 
sda=0; 
delay();//5us延时 



void stop()//停止 

sda=0; 
delay();//5us延时 
scl=1; 
delay();//5us延时 
sda=1; 
delay();//5us延时 



void ack()//应答 
{ uchar z=0; 
while((sda==1)&&(z<50))z++;//条件判断, sda=1,则没有应答。如果没有应答则延时:z<50,z++;后返回 
scl=0; 
delay();//5us延时 


///写一个数据函数 
//器件写地址 slave_write_address 
//字节高地址 byte_High_address 
//字节低地址 byte_Low_address 
//待写入数据 data_data 
void write(uchar slave_write_address,uchar byte_High_address,uchar byte_Low_address,uchar data_data)//写一个数据 

uchar temp,temp1,i,ii; 

star();//开始 

for(ii=0;ii<4;ii++)//根据 24CXX文档资料,和时序图,按顺序送:器件写地址,字节地址,数据 
{  
if(ii==0) 

temp=slave_write_address;//送 器件写地址 
temp1=slave_write_address; 

else if(ii==1) 

temp=byte_High_address;//送 字节高地址 
temp1=byte_High_address; 

else if(ii==2) 

temp=byte_Low_address;//送 字节低地址 
temp1=byte_Low_address; 

else if(ii==3) 

temp=data_data;//送 数据 
temp1=data_data; 



for(i=0;i<8;i++) 

scl=0; 
delay();//5us延时 
temp=temp1; 
temp=temp&0x80;// 相 与 后,把不相关的位清零 

if(temp==0x80)//根据前面 相 与 后,判断 temp是否等于0x80,是则该位为 1 

sda=1;  
else 
sda=0; 

delay();//5us延时 
scl=1; 
delay();//5us延时 
scl=0; 
delay();//5us延时 
temp1=temp1<<1;//向左移出1位 


sda=1; 
delay();//5us延时 
scl=1; 
delay();//5us延时 
ack(); 

stop();//停止 


///读一个数据函数 
//器件写地址 slave_write_address 
//器件读地址 slave_read_address 
//字节高地址 byte_High_address 
//字节低地址 byte_Low_address 
//读出的数据 data_data 

read(uchar slave_write_address,byte_High_address,byte_Low_address,uchar slave_read_address)//读一个数据 

uchar temp,temp1,i,ii,x,data_data; 

star();//开始 

for(ii=0;ii<4;ii++)//根据 24CXX文档资料,和时序图,按顺序送:器件写地址,字节地址,器件读地址 
{  
if(ii==0) 

temp=slave_write_address;//送 器件写地址 
temp1=slave_write_address; 

else if(ii==1) 

temp=byte_High_address;//送 字节高地址 
temp1=byte_High_address; 

else if(ii==2) 

temp=byte_Low_address;//送 字节低地址 
temp1=byte_Low_address; 

else if(ii==3) 
{  
star();//开始 

temp=slave_read_address;//送 器件读地址 
temp1=slave_read_address; 


  

for(i=0;i<8;i++)//开始读数据 

scl=0; 
delay();//5us延时 
temp=temp1; 
temp=temp&0x80;// 相 与 后,把不相关的位清零 

if(temp==0x80)//根据前面 相 与 后,判断 temp是否等于0x80,是则该位为 1 

sda=1;  
else 
sda=0; 

delay();//5us延时 
scl=1; 
delay();//5us延时 
scl=0; 
delay();//5us延时 
temp1=temp1<<1;//向左移出1位 

sda=1; 
delay();//5us延时 
scl=1; 
delay();//5us延时 
ack();//应答 


for(x=0;x<8;x++) 

data_data=data_data<<1;//向左移入1位 

sda=1; 
delay();//5us延时 
scl=0; 
delay();//5us延时 
scl=1; 
delay();//5us延时 

if(sda==1)//判断 数据线是否是高电平 
data_data|=0x01;//把读到的数据 或 0X01  
//else  
//data_data|=0x00; 

ack();//应答 
stop();//停止 
return data_data;//返回读到的数据 



void main() 
{  

write(0xa0,0x00,0x01,0x66);//向器件写一个数据: 
//(0xa0 是器件写地址;0x00 是字节高地址;0x01 是字节低地址;0x66 是待写入的数据) 

delay1(5);//写与读的时间间隔应大于5ms,取决于器件 24C02的响应速度 

//向器件读一个数据 
//把读出的数据送 P1口显示 
P1=read(0xa0,0x00,0x01,0xa1);//向器件读一个数据: 
//(0xa0 是器件写地址;0x00 是字节高地址;0x01 是字节低地址;0xa1 是器件读地址) 

while(1);//跳转,相当于汇编指令 JUMP $ 


//0x66==亮 灭 灭 亮 亮 灭 灭 亮 


推荐阅读

史海拾趣

Analog Microelectronics GmbH公司的发展小趣事

Analog Microelectronics GmbH是一家德国的半导体公司,专注于开发和生产模拟集成电路(ICs),以及为汽车、工业和医疗等领域提供解决方案。以下是Analog Microelectronics GmbH公司发展的相关故事:

  1. 创立与早期发展:Analog Microelectronics GmbH成立于1984年,总部位于德国巴伐利亚州的兰格维塔赫镇。公司的创始人致力于开发高质量的模拟集成电路,以满足市场对精密电子元件的需求。在创立初期,公司主要专注于生产模拟传感器和信号处理器件。

  2. 技术创新与产品优化:Analog Microelectronics GmbH在技术创新方面持续投入,不断改进和优化其产品线。公司注重研发和设计,致力于提供高性能、高精度和可靠性的模拟集成电路产品。公司的产品包括压力传感器、温度传感器、加速度传感器、电流传感器等,广泛应用于汽车电子、工业自动化、医疗器械等领域。

  3. 市场拓展与客户合作:Analog Microelectronics GmbH通过与全球各行业的客户建立长期稳定的合作关系,不断拓展市场份额和业务范围。公司在欧洲、亚洲和北美等地区设立了销售办事处和代表处,加强了与客户的沟通和服务能力,提高了产品的市场竞争力。

  4. 质量控制与认证:Analog Microelectronics GmbH严格遵循国际质量管理体系标准,对产品的生产过程进行严格控制和管理。公司获得了ISO 9001质量管理体系认证,确保产品质量稳定可靠。此外,公司的产品也符合汽车行业的相关认证标准,如ISO/TS 16949等,为客户提供高品质的产品和服务。

  5. 持续发展与未来展望:作为一家成熟的模拟集成电路供应商,Analog Microelectronics GmbH将继续致力于技术创新和产品研发,以满足不断变化的市场需求。公司将继续加强与客户和合作伙伴的合作关系,拓展业务领域,为全球客户提供更加优质的解决方案和服务。

粤翔(FlyWin)公司的发展小趣事
如硬盘、闪存等存储设备,需要掉电保护电路来确保数据在断电时不会损坏。
HTC Korea(TAEJIN Technology )公司的发展小趣事

近年来,HTC在VR领域取得了显著的成就。2023年,在美国国际消费性电子展(CES)中,HTC推出了最先进的虚拟实境头戴式显示器VIVE XR Elite,凭借其创新、高规格的设计和巧妙的人体工学设计,赢得了众多国际媒体的赞誉和奖项。此外,HTC还开发了多款VR内容套件和追踪器,为用户提供了更加沉浸式的虚拟体验。这些努力不仅推动了VR产业的发展,也为HTC带来了新的增长点。

Concurrent Logic公司的发展小趣事

Concurrent Logic公司的创立源于一群工程师对并行计算和逻辑设计的热爱。在公司成立初期,他们面临着巨大的挑战。由于资金有限,他们不得不在狭小的办公室内开始他们的创新之旅。初创团队的成员们夜以继日地工作,开发并优化他们的第一个产品——一款高性能的并行处理芯片。尽管条件艰苦,但他们的努力和热情为公司的未来奠定了坚实的基础。

EXCELSEMI [ EXCEL SEMICONDUCTOR INC. ]公司的发展小趣事

EXCELSEMI公司深知技术创新对于企业发展的重要性。因此,公司始终保持对研发的重视和投入。公司不仅设立了专门的研发中心,还引进了一批高素质的研发人才。通过持续的研发投入和技术创新,EXCELSEMI在半导体领域取得了多项专利和技术成果,为公司的发展提供了源源不断的动力。

Chyao Shiunn Electronic Industrial Ltd公司的发展小趣事

在电子行业的初期,Chyao Shiunn Electronic Industrial Ltd还是一家名不见经传的小公司。然而,凭借着对技术创新的执着追求,公司成功研发出一款高效能的芯片,这款芯片不仅性能卓越,而且成本相对较低。这一技术突破迅速吸引了市场的关注,公司借此机会积极拓展市场,逐渐在电子行业中崭露头角。

问答坊 | AI 解惑

关于Linux嵌入式系统的培训效果!

想参加培训,但是不知道效果如何? 请大家来谈谈自己的经验吧~~ 谢绝销售…

查看全部问答>

串口接收问题

各位大侠好!请教一下,我利用C51的串口向S3C2440的串口1发数据,然后将该数据用串口0显示出来(串口调试工具),两个串口的波特率都是9600,奇偶校验都是一样的,为什么我收到的数据不是我发的数据,我用C51持续不断的发送十六进制的01,可我接受 ...…

查看全部问答>

一个例子看不明白

/* 打问号的地方不明白,希望大家给加下注释,谢谢了 这是一个蜂鸣器的程序(运行在arm9(mini2440)上的Linux下) */ #include #include #include #include #define PWM_IOCTL_SET_FREQ            &nb ...…

查看全部问答>

请教各位一个简单的问题,先谢谢了

请教大家一个问题,不是很难,但我不知道怎么做~ 就是用Protel绘图时,我用了一个或门,元件库里有的,但是是个两输出的,我的设计中需要用到三个输出,应该怎么做呢??不会是自己画好了再封装吧??谢谢各位大虾,我是菜鸟~~~呜啦啦啦\\(^o^)/~…

查看全部问答>

Secure Digital/Multimedia Card (SD/MMC) 上的图片带一个问号?

C:\\Documents and Settings\\Administrator\\桌面\\sd.bmp 请问为什么会有个问号?…

查看全部问答>

北京 诚聘 windows驱动软件开发工程师(兼或全职)

职位描述 Windows驱动程序设计和实现 职位要求 1.计算机、电子工程、通信、自动化等相关专业本科以上学历; 2.熟练掌握C/C++语言编程; 3.精通WDM, WDF编程,熟悉DriverStudio, WINDBG等开发工具; 4.深入理解Windows操作系统组成原理和内核 ...…

查看全部问答>

求教:ZEUS公司的NV-RAM,型号ZS8512的资料!

在baidu找不到,谁有资料给我传一个呀,用过这芯片的大虾能给我说说这芯片的优缺点吗?谢谢!散分了. EMAIL:xhbbit@yahoo.com.cn   QQ:472149942  MSN:xhbbit@yahoo.com.cn …

查看全部问答>

TI Sitrara平台Roadmap

未来 Sitara平台低端产品亦会演进到Cortex-A8核心,这对采用TI Sitara平台开发产品的客户而言,无疑是一个重大利好消息。…

查看全部问答>

keil编译mem.h报错 error: #40: expected an identifier

.\\third_party\\lwip-1.3.1\\src\\include\\lwip/mem.h(76): error:  #40: expected an identifier.\\third_party\\lwip-1.3.1\\src\\include\\lwip/mem.h(88): error:  #20: identifier \"mem_size_t\" is undefined keil 中这里已经 ...…

查看全部问答>