历史上的今天
返回首页

历史上的今天

今天是:2024年12月19日(星期四)

正在发生

2018年12月19日 | C51 GPIO口模拟IIC读写24CXX

2018-12-19 来源:eefocus

#include

#define delayNOP() {_nop_(); _nop_(); _nop_(); _nop_();}


//IIC 开始信号

void iic_start(void)

{

    SDA = 1;

    SCL = 1;

    delayNOP();

    SDA = 0;

    delayNOP();

    SCL = 0;

}

//IIC 停止信号

void iic_stop(void)

{

    SDA = 0;

    delayNOP();

    SCL = 1;

    delayNOP();

    SDA = 1;

}


//IIC 写字节

bit iic_write(u8 dat)

{

    bit ack;

    int i=0;

    SCL = 0;

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

    {

        SDA = (bit)((dat<

        _nop_();

        SCL = 1;

        delayNOP();

        SCL = 0;

    }

    SDA = 1;//释放SDA

    delayNOP();

    SCL = 1;

    delayNOP();

    ack = SDA;  //读取应答位 从器件应答

    SCL = 0;

    return ack;

}


//IIC读字节  

u8 iic_read(void)

{

    u8 i, read_dat=0;

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

    {

        SCL = 1;

        read_dat <<= 1;

        read_dat |= SDA;

        SCL = 0;

    }

    return read_dat;

}


void write_byte(u8 addr, u8 dat)

{

    iic_start();

    iic_write(0xa0);

    iic_write(0x00);  //20C64  双地址 H L

    iic_write(addr);

    iic_write(dat);

    iic_stop();

    mdelay(10);

}


u8 read_byte(u8 addr)

{

    u8 dat;

    iic_start();

    iic_write(0xa0);

    iic_write(0x00); //20C64  双地址 H L

    iic_write(addr);

    iic_start();

    iic_write(0xa1);

    dat = iic_read();

    iic_stop();

    return dat;

}



推荐阅读

史海拾趣

DCX-CHOL Enterprises公司的发展小趣事

随着公司规模的扩大和市场竞争的加剧,DCX-CHOL Enterprises意识到品质管理的重要性。公司投入大量资源提升生产线自动化水平,引进先进的品质检测设备,并建立了严格的质量管理体系。这些措施有效地提高了产品的品质稳定性和可靠性,赢得了客户的信赖。同时,公司还注重员工培训和技能提升,培养了一支高素质、专业化的技术和管理团队。

Ferranti Electric Inc公司的发展小趣事

作为一家具有社会责任感的企业,Ferranti Electric Inc公司一直致力于可持续发展。公司注重环保和节能,采用环保材料和生产工艺,减少对环境的影响。同时,公司也积极参与公益事业和社会活动,回馈社会。这些举措不仅体现了公司的社会责任感,也为公司的长远发展奠定了坚实的基础。

BLACK&DECKER公司的发展小趣事

BLACK&DECKER在技术创新方面一直走在行业前列。公司不断投入研发资源,推动电动工具技术的进步。例如,1979年,BLACK&DECKER发布了第一台手提式充电吸尘器Dustbuster,这一创新产品迅速成为市场上的热销产品,并推动了整个吸尘器行业的发展。此外,BLACK&DECKER还积极参与行业标准的制定工作,通过制定严格的产品质量标准和安全规范,为整个电子行业的健康发展做出了贡献。

Dearborn Electronics Inc公司的发展小趣事

Dearborn Electronics Inc.于1952年在芝加哥注册成立,由一群电子工程师和企业家共同创立。他们看到了当时电子行业对高性能电容器和滤波器的迫切需求,于是决定专注于这一领域。公司初期主要生产薄膜电容器和EMI/RFI滤波器,凭借卓越的产品质量和稳定的性能,逐渐在电子行业中建立了良好的声誉。

EXCELTA公司的发展小趣事

Excelta公司创立于20世纪90年代初,当时电子元器件市场正处于快速发展阶段。创始人李明看到连接器市场的巨大潜力,决定投身其中。然而,初创时期资金紧张,技术储备薄弱,公司面临巨大挑战。李明带领团队日夜兼程,通过技术创新和成本控制,成功开发出第一款具有竞争力的连接器产品,并迅速获得了市场的认可。此后,Excelta逐渐在连接器领域崭露头角。

ANYSOLAR LTD.公司的发展小趣事

ANYSOLAR深知技术创新是企业发展的核心动力。因此,公司不断加大研发投入,引进高端人才,建立完善的研发体系。通过持续的技术创新,ANYSOLAR不断推出性能更优、成本更低的光伏产品,引领着行业的发展潮流。

同时,ANYSOLAR还积极参与行业标准的制定和修订工作,推动整个行业的规范化发展。这些举措不仅提升了ANYSOLAR在行业内的地位,也为公司的长期发展奠定了坚实的基础。

问答坊 | AI 解惑

电磁兼容的设计方法介绍(一)

一﹑前言     关于电磁兼容的要求﹐目前世界上大多的先进国家﹐都已经有管制的法规并有相关的符合要求的单位﹐若产品无法符合要求规定﹐往往无法销售到该地区的市场﹐因此多数的电子产品﹐在销售前都必须经过电磁兼容的测试﹐ ...…

查看全部问答>

第3篇--指针与数组名

1. 通过数组名访问数组元素 看下面代码 int i,a[]={3,4,5,6,7,3,7,4,4,6}; for (i=0;i<=9;i++) { printf ( "%d\\n", a); } 很显然,它是显示a 数组的各元素值。 我们还可以这样访问元素,如下 int i,a[]={3,4,5,6,7,3,7,4,4,6}; ...…

查看全部问答>

整体成本与复杂度

在电子产品从开发、运行到售后服务和维护这个完整的生命周期之中,设备软件已经成为电子产品制造商获得产品差别化竞争优势的关键因素,降低设备软件的成本与复杂度是其中最大的挑战。为了应对这个挑战,电子设备制造商需要进行一场现代化的变革,改 ...…

查看全部问答>

四川省大学生电子设计竞赛西南科技大学赛区竞赛题目-电子广告牌

本帖最后由 paulhyde 于 2014-9-15 09:27 编辑 电子竞赛题目-电子广告牌 一、电子竞赛题目任务: 设计并制作一台简易电子广告牌,16*32点阵显示,示意图如下: 二、电子竞赛题目要求: 1、基本要求: 1) 能通过按键翻页显示数字和字母。 ...…

查看全部问答>

看到坛子里有人关注PSOC,所以贡献些资料

PSoC片上系统与单片机、ARM的区别 到目前为止,有三种技术对电子工程师设计电子产品的模式产生了重大而又深远的影响,它们是:可编程微控制器(MCU),可编程逻辑阵列和可编程模拟阵列。与采用多个分立元件及单一功能的模拟与数字集成电路组成的 ...…

查看全部问答>

新人报道

菜鸟刚刚接触单片机 正在学习C51编程 有一点C++的基础 想问下各位大大 网上有C51的编程实例么 还有 是不是proteus 和keil51两个软件就够了 以后有什么问题还麻烦各位大大了…

查看全部问答>

WINCE5.0下用KITL调试网卡驱动,MmmapIOspace函数问题

PHYSICAL_ADDRESS phyAddr;        phyAddr.QuadPart=pAdapter->m_ulIOBaseAddress;        pHardware->m_ulVIoAddr=(ULONG)MmMapIoSpace(phyAddr,256,FALSE);        RETAILMSG(T ...…

查看全部问答>

关于芯片的CE管脚的问题

     我现在在操作flash芯片,以我的想法,应该每次和flash芯片交互的时候然后将CE拉低有效,完成后拉高,下次用的时候重复这样做.但是,我想知道在对flash芯片初始化的时候就直接对其ce管脚拉低,然后整个程序跑的过程中一直是地电 ...…

查看全部问答>

TCPMP Id3(专辑,流派等)乱码

如题: tchar_t id3[128]; int i = get_current_music(); g_pp->CommentByName(g_pp,i,PlayerComment(COMMENT_TITLE),id3,TSIZEOF(id3)); g_pp->CommentByName(g_pp,i,PlayerComment(COMMENT_ARTIST),id3,TSIZEOF(id3)); 复制代码…

查看全部问答>

无线网卡的图标无法去掉

基于USB的无线网卡,插上无线网卡是桌面的右下角会出现无线网卡的图标,这是正常的. 由于我的USB无线网卡支持selective suspend,也就是说,如果无线网卡在一定的时间 内(10s)如果没有和AP或者其他网卡连接上,则无线网卡进入睡眠的状态.睡眠的状态和 ...…

查看全部问答>