第09章串行总线技术-01祥解.ppt

  1. 1、本文档共63页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第09章串行总线技术-01祥解.ppt

* * 谢谢大家! * * * * 控制寄存器S1CON:ENS1—串行总线接口SIO1使能位。 STA—启动起始标志。STO—停止标志。SI—SIO1串行中断标志。AA—接收应答响应标志位。CR2、CR1、CR0—确定主控操作模式下串行时钟速率。 状态寄存器S1SAT:S1STA是一个只读寄存器,高5位有效,存放了26个I2C总线的状态码,其中在主发送方式下,可产生7个总线状态码;在主接收方式下,可产生5个总线状态码;在从接收方式下,可产生9个总线状态码;在从发送方式下,可产生5个总线状态码。SIO1的中断入口地址为002BH,中断服务程序根据这些状态码进行相应的处理。 0DAH 0D8H 0DBH D7 D6 D5 D4 D3 D2 D1 D0 S1ADR × × × × × × × GC S1DAT D7 D6 D5 D4 D3 D2 D1 D0 S1CON CR2 ENS1 STA STO SI AA CR1 CR0 S1SAT SD4 SD3 SD2 SD1 SD0 0 0 0 0D9H * * #include REG552.h / * P89C668的硬件I2C定义与8XC552的一样 */ #define uchar unsigned char /* 申请占用总线,进行I2C时钟速率、使能、发送起始信号等初始化*/ void GetBus() { S1CON=0xc5; /* 设置时钟为100k, MCU主频为12M, ENS1和AA置位 */ STA=1; /* 申请成为主机,起动总线 */ while(SI==0); /* 等待起始位的发送 */ } /* 发送数据函数,用于向总线发送数据 */ void SendByte(uchar c) { S1DAT=c; S1CON=0xc5; /* 清除SI位等 */ while(SI==0); /* 等待数据发送完成 */ } 2. P89C66x单片机I2C通信主方式C51语言程序 * * /* 向无子地址器件发送字节数据函数,从器件地址sla(最低位为0),待发送的数据为c;如果返回1,表示操作成功,否则操作有误 */ bit ISendByte(uchar sla,uchar c) { GetBus(); /* 启动总线 */ SendByte(sla); /* 发送器件地址,若无应答则返回 */ if (S1STA!=0x18) {S1CON=0xd5; return(0);} SendByte(c); /* 发送数据 */ if (S1STA!=0x28) {S1CON=0xd5; return(0);} S1CON=0xd5; /* 结束总线 */ return(1); } * * /* 向无子地址器件读字节数据函数,从器件地址sla(最低位为0),返回字节值在c;如果返回1,表示操作成功,否则操作有误 */ bit IRcvByte(uchar sla,uchar*c) { GetBus(); / * 启动总线 */ SendByte(sla+1); /* 发送器件地址 */ if (S1STA!=0x40) {S1CON=0xd5; return(0);} S1CON=0xc1; /* 接收一字节数据即发送非应答位 */ while(SI==0); /* 等待接收数据 */ if (S1STA!=0x58) {S1CON=0xd5; return(0);} *c=S1DAT; /* 读取数据 */ S1CON=0xd5; /* 结束总线 */ return(1); } * * 9.4.3 I2C接口DAC转换器MAX517的应用 8位电压输出型数模转换器DAC,它带有总线接口,采用单5V电源工作。 AT89S51本身不含I2C接口,将其作为主机使用时,可采用普通I/O口线模拟I2C总线条件,发送/接收数据。 * * 2. MAX517的工作时序 控制字节: R2、R1、R0是保留位,已预先设定为0;RST为复位位,该位为1时复位DAC器件的所有寄存器;PD为电源工作状态位,为1时,MAX517工作在4μA的休眠模式,为0时,返回正常的操作状态;A0为MAX518/519的通道地址位,对于MAX517,该位应设置为0。 D7 D6 D5 D4 D3 D2 D1 D0 地址字节 0 1 0 1 1 AD1 AD0 0 控制字节 R2 R1 R0 RST PD × × A0 地址字节中前4位是类型识别符,后3位则由器件地址输入端的状态来决定。MAX517出厂时已设定前5位为01011。地址字节的最后一位为读写控制,“0”时

文档评论(0)

四娘 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档