历史上的今天
今天是: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;
}
史海拾趣
|
一﹑前言 关于电磁兼容的要求﹐目前世界上大多的先进国家﹐都已经有管制的法规并有相关的符合要求的单位﹐若产品无法符合要求规定﹐往往无法销售到该地区的市场﹐因此多数的电子产品﹐在销售前都必须经过电磁兼容的测试﹐ ...… 查看全部问答> |
|
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片上系统与单片机、ARM的区别 到目前为止,有三种技术对电子工程师设计电子产品的模式产生了重大而又深远的影响,它们是:可编程微控制器(MCU),可编程逻辑阵列和可编程模拟阵列。与采用多个分立元件及单一功能的模拟与数字集成电路组成的 ...… 查看全部问答> |
|
WINCE5.0下用KITL调试网卡驱动,MmmapIOspace函数问题 PHYSICAL_ADDRESS phyAddr; phyAddr.QuadPart=pAdapter->m_ulIOBaseAddress; pHardware->m_ulVIoAddr=(ULONG)MmMapIoSpace(phyAddr,256,FALSE); RETAILMSG(T ...… 查看全部问答> |
|
我现在在操作flash芯片,以我的想法,应该每次和flash芯片交互的时候然后将CE拉低有效,完成后拉高,下次用的时候重复这样做.但是,我想知道在对flash芯片初始化的时候就直接对其ce管脚拉低,然后整个程序跑的过程中一直是地电 ...… 查看全部问答> |
|
如题: 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或者其他网卡连接上,则无线网卡进入睡眠的状态.睡眠的状态和 ...… 查看全部问答> |




