问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

我用AVR M128的普通IO口PD6,PD7模拟I2C总线,控制24c64EEPROM的写入和读出,时序都没问题,应答也有。

发布网友 发布时间:2022-05-10 16:49

我来回答

2个回答

热心网友 时间:2023-10-17 02:17

我看你那两个io口的时序好像不大对劲。我给你个代码,直接保存成xxx.h文件。插到你代码里面就可以了。
因为我不知道你pd6 和pd7 各接什么脚
你要自行修改以下两句代码
#define SDA 0X02 //定义sda连接的是portd1
#define SCL 0X01 //定义scl连接的是portd0

写数据的时候就调用 write_eep(地址,数据);
读数据的时候就调用 read_eep(地址);
文件内容如下

#define EEP_PORT PORTD //定义是使用PROTC口
#define EEP_DDR DDRD //定义是使用PROTC口
#define SDA 0X02 //定义sda连接的是portd1
#define SCL 0X01 //定义scl连接的是portd0
#define WP 0X04 //定义wp连接的是portd2
#define EEP_ADD_R 0xa1 //写I2C从器件地址和读方式 a0,a1接地
#define EEP_ADD_W 0xa0 //写I2C从器件地址和写方式 a0,a1接地

void eep_init(void)
{
EEP_DDR|= SDA | SCL | WP ;
EEP_PORT|=SDA | SCL | WP ;
}

void send(void)
{
EEP_PORT|=SCL;
asm("nop");
EEP_PORT&=~SCL;
}
/********************************************
内部函数,I2C开始
********************************************/
void Start(void)
{
EEP_PORT|=SDA; //sda
EEP_PORT|=SCL; //scl
asm("nop");
EEP_PORT&=~SDA;
asm("nop");
EEP_PORT&=~SCL;
}
/********************************************
内部函数,I2C结束
********************************************/
void Stop(void)
{
EEP_PORT&=~SDA;
EEP_PORT&=~SCL;
asm("nop");
EEP_PORT|=SCL;
asm("nop");
EEP_PORT|=SDA;
asm("nop");
}

/********************************************
内部函数,等待ACK
********************************************/
void ACK(void)
{

unsigned char errtime=20;
EEP_PORT|=SDA; //上拉
EEP_DDR&=~SDA; //设置为输入口
EEP_PORT|=SCL;
asm("nop");
while(PINC&SDA)
{ errtime--;
if(!errtime)
{
Stop();
EEP_PORT&=~SDA; //超时,给他个离开的理由
}
}
EEP_PORT&=~SCL;
asm("nop");
EEP_DDR|=SDA; //设置为输出口
}
/********************************************
内部函数.输出数据字节
********************************************/
void writebyte(unsigned char wdata)
{
unsigned char i;
for(i=0;i<8;i++)
{
if((wdata&0x80)){EEP_PORT|=SDA;}else{EEP_PORT&=~SDA;}
wdata<<=1;
send(); //发送一个位

}
}
/********************************************
内部函数.输入数据
********************************************/
unsigned char Readbyte(void)
{
unsigned char i,bytedata;
EEP_DDR&=~SDA; //设置为输入?
for(i=0;i<8;i++)
{
EEP_PORT|=SCL;
bytedata<<=1;
if(PINC&SDA){
bytedata|=0X01;
}else{
bytedata&=~0X01;
}
EEP_PORT&=~SCL;
asm("nop");
}
EEP_DDR|=SDA;
return(bytedata);

}

/********************读24cxx--外部调用********************/
unsigned char read_eep(unsigned char add1,unsigned char add2)
{ unsigned char mdata;
Start(); //起始位
writebyte(EEP_ADD_W); //写eeprom地址+1个写命令
ACK(); //等待应答信号
writebyte(add1); //写如访问地址
ACK(); //等待应答信号
writebyte(add2); //写入访问地址
ACK(); //等待应答信号
Start(); //起始位
writebyte(EEP_ADD_R); //写eeprom地址+1个读命令
ACK(); //等待应答信号
mdata=Readbyte(); //获取数据
Stop(); //发送停止位置
asm("nop"); //此处延时根据实际情况,如果不延时,可能会不正常
return(mdata);
}
/********************写24cxx--外部调用********************/
void write_eep(unsigned char add1,unsigned char add2,unsigned char udata)
{
EEP_PORT&=~WP; //关闭写保护
Start(); //起始位
writebyte(EEP_ADD_W); //写eeprom地址+1个写命令
ACK(); //等待应答信号
writebyte(add1); //写如访问地址
ACK(); //等待应答信号
writebyte(add2); //写如访问地址
ACK(); //等待应答信号
writebyte(udata); //写入数据
ACK(); //等待应答信号
Stop(); //发送停止位
delay_nms(4); //此处延时根据实际情况,大多EEPROM都需要3毫秒的写入时间,如果不延时,可能会不正常
EEP_PORT|=WP; //打开写保护
}

/***********************************************************/

热心网友 时间:2023-10-17 02:18

当大量宾馆酒店借力世博扩张,世博会确实给业者带来非常多的商机,各个宾馆酒店都借力世博扩大发展、提高经营收益。那么世博会对宾馆宾馆酒店业产生了哪些影响?上海宾馆分析了以下几大影响。

1.区位的影响

上海世博会对宾馆酒店业的影响以世博园为增长极逐步向外扩散。影响最大的第一级为世博会场所在区域宾馆酒店;第二级为相对集中的上海市区内宾馆酒店;第三极为上海市郊区和杭州、宁波、南京等长三角区域宾馆酒店。从上海市区主要地段来看,轨道交通附近的宾馆酒店迎来了更好的发展机遇。另外,从宾馆酒店类型来看,世博客源以国内团队为主,上海非星级宾馆酒店旅馆受到市场青睐,特别是那些品牌经济型宾馆酒店。

2.经营的影响

2009年上海高档宾馆酒店业整体受到金融危机冲击很大。据上海宾馆了解,上海不少高星级宾馆酒店大幅度降价、促销、做外卖来过冬,某宾馆酒店甚至降价幅度超过50%,为上海近几年所罕见。借助世博效应、虹桥机场以及虹桥交通枢纽的扩建完成等利好因素,上海2010年的宾馆酒店市场在短期内取得了比较理性的恢复。另外,作为比邻的长三角城市是世博会的分会场,它们的宾馆酒店业将获得前所未有的发展机遇。

3.信息的影响

要实现世博规划中的住宿解决方案,信息作用不可忽视。世博住宿解决方案是一个复杂的系统,不同区域的、各种不同类型宾馆酒店接待信息是否能统一、完整地便利搜索,影响到住宿解决方案是否在现实可执行的实际问题。这中间,星级宾馆酒店是大多数外来游客到上海后的首要选择,无论借助哪一种交通工具,都得先找到宾馆酒店的确切方位。但多数电子地图的双语功能都比较差。另外,为应对上海世博会期间极端高峰日的住宿缺口,世博住宿解决方案中提供了上海高校内部招待所和周边地区疏散等应急预案,这些非常规资源的系统整合情况和具体信息的公开与被搜索同样非常重要。

4.容量的影响

以第一、第二极为例,抽取5月24日、25日、26日数据,可以了解到,虽然不少宾馆酒店的价格已经相对于世博前实现翻番,但随着入园人数的增加,上海市区客房平均出租率依然逐步增加到饱和状态(达到97%)。*的价格规定使宾馆酒店业通过提价增加利润和控制入住流量受到*。鉴于上海世博会期间预计接待人次与现实的差距,票检入园人数将继续增加,那么住宿问题将形成瓶颈。按照原世博规划,对应解决方案主要是内挖潜力,外引资源:通过世博人家、世博农家、临时调用企事业单位及学校等社会资源来缓解;通过向车程在两小时以内的长三角周边地区宾馆酒店疏散客流来缓解。

但上海周边杭州、苏州等地和上海在宾馆酒店方面的接洽没达到理想状态。

文章转自 上海宾馆 上海宾馆
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
离职几个月公司发短信说我离职生效叫我回去补办离职交接手续怎么 开除员工不办手续违法吗 辞退员工没有办手续违法吗 苹果13/6.1录制两个人脸,后面换锁屏密码认证还有什么提醒,或者是两个人... 很规律很威严的词语是什么 我老了又无能 想有个爱我一辈子的 到今没 就一个人 把爱放心里 用数字... 日语N2 20天复习够吗 为什么泥工先于木工 泥工做好隔多久做木工 从泥工做好到做木工,需要等待多久? 水泥操作人员作业流程是怎样的? 怎样给__m128赋4个int的值(用C) 惠普m128p打印出来的字很淡,怎么回事呢 我在苏宁易购网上下的订单被莫名其妙的不见了。。找他们的客服说查不到,东西特价时下单的,怎么办? 用的是python3.7.3,让用户输入一个1到3之间的整数,怎么检测用户是否按要求进行了输入 模块化冷水机组有哪些特点? 为什么模块化将成为新一代航弹重要特点? 模块化吊顶有哪些功能特点? 模块化建筑的优势是什么? 模块化吊顶优点是什么 模块化经济的特点体现 养老保险多少年龄不能买 今天辽宁天气咋样大神们帮帮忙 辽宁沈阳今天24小时天气预报查询,今日白天天气,夜间天气情况怎么样 批处理中怎么样使用FOR命令输出本机以及网关的ip和MAC地址 ping 自己的ip -t 时,没有问题,ping 网关的ip -t时,出现请求超时,请问问题出在那里? 网关欺骗怎么解决 [求助]win7下如何在批处理中引用本机ip地址和网关地址 批处理中只删除网关的问题求助 12年五菱宏光中控屏幕支持什么视频格式 一条浅蓝色的长群,要配一条什么颜色的T恤 索尼P37J口袋本3G问题 越狱后cydia打开好,然后重启手机cydia闪退,怎么 金庸群侠传3最佳修改器 HP打印机粉型号P1007P1010不一样能互用么?为什么 A10 笔记本 惠普 独立显卡 配置A10-9600P 独显512 四核 固态128 内存4g 越狱后cydia闪退怎么重新越狱 不完美越狱后cydia闪退怎么解决阿 苹果越狱以后打开cydia为什么闪退 越狱后cydia闪退怎么修复工具 中国国产品牌美利达捷安特自行车为啥远不如全球10大最顶级自行车品牌排行榜FRW辐轮王,MARMOT土拨鼠,? iOS9.3.3越狱后Cydia闪退 无限闪退 重新越狱后自动重启 怎么解决闪退 中国国产的自行车品牌里,哪个品牌生产山地自行车比较专业? 糖尿病钾高怎么回事 糖尿病钾高,吃什么药好 成长需要什么的作文? 糖尿病和钾高,饮食应怎么注意 我父亲糖尿病·并发症钾高哪些食物·可以吃 成长让我感到什么什么的作文 成长让青春更灿烂七百字作文。一定要快 成长让我懂得快乐作文800