- 1、本文档共66页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
voidstart(void) //起始信号{scl=1;sda=1;delay4us();sda=0;delay4us();scl=0;}voidstop(void) //终止信号{scl=0;sda=0;delay4us();scl=1;delay4us();sda=1;delay5us();sda=0;}bitrack(void) //接收一个应答位{bitflag;scl=1;delay4us();flag=sda;scl=0;return(flag);}voidsack(void) //发送接收应答位{sda=0;delay4us();scl=1;delay4us();scl=0;delay4us();sda=1;delay4us();}voidackn(void) //发送非接收应答位{sda=1;delay4us();scl=1;delay4us();scl=0;delay4us();sda=0;}ucharrec_byte(void) //接收一个字节{uchari,temp;for(i=0;i8;i++){ temp=1; scl=1;delay4us(); temp|=sda; scl=0; delay4us();}return(temp);}voidsend_byte(uchartemp) //发送一个字节{ uchari;scl=0;for(i=0;i8;i++){ sda=(bit)(temp0x80); scl=1; delay4us(); scl=0; temp=1;}sda=1;}voiddelay4us(void) //延时4μs{_nop_();_nop_();_nop_();_nop_();}作业1:调试例10-2的C语言程序并生成.HEX文件,并装载到Proteus上运行,仿真图提供给大家;提交生成.HEX文件界面截图和Proteus仿真运行截图。(30分钟内完成)END2.典型信号及字节收发的模拟子程序AT89S51单片机在模拟I2C总线通信时,需编写以下5个函数:总线初始化、起始信号、终止信号、应答/数据“0”以及非应答/数据“1”函数。(1)总线初始化函数。初始化函数的功能是将SCL和SDA总线拉高以释放总线。参考程序如下: #includereg51.h #includeintrins.h//包含函数_nop_()的头文件 sbitsda=P1^0; //定义I2C模拟数据传送位 sbitscl=P1^1; //定义I2C模拟时钟控制位voidinit() //总线初始化函数{ scl=1; //scl为高电平 _nop_(); //延时约1μs sda=1; //sda为高电平 delay5us(); //延时约5μs}(2)起始信号S函数。图10-12的起始信号S,要求一个新的起始信号前总线的空闲时间大于4.7μs,而对于一个重复的起始信号,要求建立时间也须大于4.7μs。图10-12为起始信号的时序波形在SCL高电平期间SDA发生负跳变。起始信号到第1个时钟脉冲负跳沿的时间间隔应大于4μs。图10-12起始信号S的模拟时序起始信号S的函数如下:voidstart(void) //起始信号函数{ scl=1; sda=1; delay5us(); sda=0; delay4us(); scl=0;}(3)终止信号P函数。图10-13为终止信号P的时序波形。在SCL高电平期间SDA的一个上升沿产生终止信号。图10-13终止信号P的模拟时序终止信号函数如下:voidstop(void) //终止信号函数{scl=0;sda=0;delay4us();scl=1;delay4us();sda=1;delay5us();sda=0;}(4)应答位函数。发送接收应答位与发送数据“0”相同,即在SDA低电平期间SCL发生一个正脉冲,产生图10-14的模拟时序。图10-14发送应答位的模拟时序发送接收应答位的函数如下:voidAck(void){ uchari;sda=0;scl=1; delay4us();while((sda==1)(i255))i++;
您可能关注的文档
- 车票发售 旅客运送 行李包裹运输 站车工作组织交通运输学 院 学年第一学期.pptx
- 车票发售 旅客运送 行李包裹运输 站车工作组织交通运输学院 学年第一学期.pptx
- 单片机控制系统开发训练 授课对象电气自动化技术 主讲教师刘旭东 电气工程系.ppt
- 单片机控制系统开发训练 -授课对象电气自动化技术 180102 主讲教师刘旭东 电气工程系-1743035648820.ppt
- 单片机控制系统开发训练 -授课对象电气自动化技术 180102 主讲教师刘旭东 电气工程系-1743037564614.ppt
- 单片机控制系统开发训练 -授课对象电气自动化技术 180102 主讲教师刘旭东 电气工程系-1743037993882.ppt
- 单片机控制系统开发训练 -授课对象电气自动化技术 180102 主讲教师刘旭东 电气工程系-1743038641531.ppt
- 单片机控制系统开发训练 -授课对象电气自动化技术 180102 主讲教师刘旭东 电气工程系-1743039516137.ppt
- 单片机控制系统开发训练 -授课对象电气自动化技术 180102 主讲教师刘旭东 电气工程系-1743040281063.ppt
文档评论(0)