版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2021/8/51第十章第十章 内部集成电路内部集成电路IIC原理及应用原理及应用第第1节节 IIC概述概述第第2节节 IIC管脚及相关寄存器管脚及相关寄存器第第3节节 IIC在系统扩展中的应用在系统扩展中的应用2021/8/529.1 I2C 概述 I2C总线是PHILIPS公司推出的串行总线。I2C总线的应用非常广泛,在很多器件上都配备有I2C总线接口,使用这些器件时一般都需要通过I2C总线进行控制。这里简要介绍I2C总线的工作原理及操作时序。2021/8/531 1、电气特性;、电气特性;2 2、寻址无需片选;、寻址无需片选;3 3、多主和主从、多主和主从4 4、MTMT、MRMR、ST
2、ST、SRSRQG8 SDA SCL2021/8/54I I2 2C C总线的特点总线的特点1、电气特性。各节点需共地,SDA和SCL需分别接上拉电阻。2、寻址无需片选,主从方式中,从器件的地址包括器件编号地址和引脚地址,器件编写地址由I2C总线委员会分配,引脚地址决定于引脚外接电平的高低3、多主和主从两种工作方式的总线4、为主控发送器、主控接收器、被控发送器和被控接收器5、起始和终止信号以及时钟信号都是由主控器提供6、其总线传输速率为100 kb/s(改进后的规范为400 kb/s),总线驱动能力为400 pF。QG8的最快速度为clock/20。7、 I2C总线还具有仲裁功能,当一个以上的
3、主器件同时试图控制总线时,只允许一个有效,从而保证数据不被破坏8、当主机发送寻址字节时,总线上所有器件都将该寻址字节中的高7位地址与自己器件的地址比较,若两者相同,则该器件认为被主机寻址,并根据读/写位确定是从发送器还是从接收器9、具有I2C总线接口的单片机可以工作在上述4种工作状态中的任一状态,而一些带有I2C总线接口的存储器(RAM或E2PROM)模块只能充当被控发送器或被控接收器10、在多主方式中,通过硬件和软件的仲裁主控制器取得总线控制权2021/8/551 1、数据线、数据线SDASDA和时钟线和时钟线SCLSCL都是双向传输线,平时均处于高都是双向传输线,平时均处于高电平备用状态,
4、只有当需要关闭电平备用状态,只有当需要关闭I I2 2C C总线时,总线时,SCLSCL线才会箝线才会箝位在低电平。位在低电平。2 2、 SCLSCL线上为高电平时,线上为高电平时,SDASDA线上的数据信号才会有效,线上的数据信号才会有效, SCLSCL低时,低时,SDASDA数据无效。因此,只有当数据无效。因此,只有当SCLSCL线为低电平时,线为低电平时,SDASDA线上的电平状态才允许发生变化。线上的电平状态才允许发生变化。I I2 2C C总线的接口电路结构总线的接口电路结构2021/8/56图9-2 I2C总线的器件连接2021/8/57I I2 2C C总线信号的时序总线信号的时
5、序2021/8/58I I2 2C C协议协议一个标准的通信由四部分组成:一个标准的通信由四部分组成: STARTSTART信号信号 从地址传输从地址传输 数据传输数据传输 STOPSTOP信号信号2021/8/592021/8/510(1 1)STARTSTART信号信号 一个一个STARTSTART信号定义为信号定义为SDASDA的一个下降沿,同时的一个下降沿,同时SCLSCL保持为高。保持为高。由主机产生。由主机产生。(2 2)从地址传输)从地址传输7 7位呼叫地址,紧接着一个读位呼叫地址,紧接着一个读/ /写位,读写位告诉从器件数据传写位,读写位告诉从器件数据传输的期望方向。输的期望方
6、向。1 = 1 = 读传输,从发送数据给主。读传输,从发送数据给主。 0 = 0 = 写传输,主发送数据给从。写传输,主发送数据给从。正好匹配主器件传输的呼叫地址的从器件通过送回一个应答位正好匹配主器件传输的呼叫地址的从器件通过送回一个应答位响应。响应。从机地址由一个固定的和一个可编程的部分构成。例如,某些从机地址由一个固定的和一个可编程的部分构成。例如,某些器件有器件有4 4个固定的位(高个固定的位(高4 4位)和位)和3 3个可编程的地址位(低个可编程的地址位(低3 3位),位),那么同一总线上共可以连接那么同一总线上共可以连接8 8个相同的器件。个相同的器件。2021/8/511(3 3
7、)数据传输)数据传输 数节为数节为8 8位,高位在前,低位在后。每传输一位数据都有位,高位在前,低位在后。每传输一位数据都有一个时钟脉冲相对应。一个时钟脉冲相对应。 SCLSCL线为低电平时,线为低电平时,SDASDA线上数据就被停止传送。接收器可线上数据就被停止传送。接收器可向向SCLSCL线输出低电平而箝住线输出低电平而箝住SCLSCL(SCL=0SCL=0),迫使),迫使SDASDA线处于线处于等待状态,直到接收器准备好接收新的数据等待状态,直到接收器准备好接收新的数据/ /地址字节时,地址字节时,再释放时钟线再释放时钟线SCLSCL(SCLSCL)=1=1),使),使SDASDA线上数
8、据传输得以线上数据传输得以继续进行。继续进行。2021/8/512 数据字节没有限制,但每个字节后都必须跟随一个应答位数据字节没有限制,但每个字节后都必须跟随一个应答位应答信号在第应答信号在第9 9个时钟位上出现,主控发送器必须在被控个时钟位上出现,主控发送器必须在被控接收器发送应答信号前,预先释放对接收器发送应答信号前,预先释放对SDASDA线的控制。接收线的控制。接收器在器在SDASDA线上输出低电平为应答信号(线上输出低电平为应答信号(A A),输出高电平为),输出高电平为非应答信号(非应答信号(A A)。)。2021/8/513 主控器接收到应答信号后可进行下一字节的发送。但如果主控器
9、接收到应答信号后可进行下一字节的发送。但如果被控器由于某种原因需要进行其他处理而无法继续接收被控器由于某种原因需要进行其他处理而无法继续接收SDASDA线上数据时,便可向线上数据时,便可向SDASDA线输出一个非应答信号(线输出一个非应答信号(A A),使),使SDASDA线保持高电平,主控器据此便可产生一个停止信号来终线保持高电平,主控器据此便可产生一个停止信号来终止止SDASDA线上的数据传输。线上的数据传输。 当主控器作为接收器接收被控器送来的最后一个数据时,当主控器作为接收器接收被控器送来的最后一个数据时,必须给被控器发送一个非应答信号(必须给被控器发送一个非应答信号(A A),令被控
10、器释放),令被控器释放SDASDA线,以便主控器可以发送停止信号来结束数据的传输。线,以便主控器可以发送停止信号来结束数据的传输。I I2 2C C总线上的应答信号比较重要,在编制程序时应该着重考总线上的应答信号比较重要,在编制程序时应该着重考虑。虑。2021/8/514(4 4)STOPSTOP信号信号 在在SCLSCL为逻辑为逻辑1 1时时SDASDA的一个上升沿的一个上升沿 主器件做下面两件事情之一,数据传输中止:主器件做下面两件事情之一,数据传输中止:(a)(a)通过产生一个通过产生一个STOPSTOP信号放弃总线。信号放弃总线。(b)(b)通过产生重复的通过产生重复的STARTSTA
11、RT信号发起一个新的呼叫信号发起一个新的呼叫。2021/8/515(4) (4) 重复的重复的STARTSTART信号信号图图10108 8所示,一个重复的所示,一个重复的STARTSTART信号是不用首先产生信号是不用首先产生STOPSTOP信号终止通信号终止通信的信的STARTSTART信号。信号。(5) (5) 仲裁程序仲裁程序如果两个或更多的主器件试图在同一时间控制总线,一个时钟同步程如果两个或更多的主器件试图在同一时间控制总线,一个时钟同步程序确定总线时钟。竞争的主器件之间相对优先级由一个数据仲裁进程序确定总线时钟。竞争的主器件之间相对优先级由一个数据仲裁进程确定确定。丢失的主器件立
12、即切换到从接收模式并停止驱动丢失的主器件立即切换到从接收模式并停止驱动SDASDA输出。输出。(6) (6) 时钟同步时钟同步2021/8/516QG8的IIC特点与与 标准的标准的IICIIC协议兼容;协议兼容;支持多主操作;支持多主操作;有有6464种不同的时钟频率可供选择;种不同的时钟频率可供选择; Software selectable acknowledge bit Software selectable acknowledge bit;支持中断传输;支持中断传输;在总线仲裁中失败方可自动由主切换到从模式;在总线仲裁中失败方可自动由主切换到从模式;支持地址匹配中断;支持地址匹配中断;
13、有有S S和和P P信号产生与检测功能;信号产生与检测功能;有有“重新启动重新启动”(Repeated STARTRepeated START)信号产生能力;)信号产生能力;支持支持AckAck信号的产生与检测;信号的产生与检测;具有总线忙检测能力;具有总线忙检测能力;2021/8/51710.2 10.2 、IICIIC管脚及相关寄存器管脚及相关寄存器2021/8/518外部信号描述外部信号描述2021/8/519寄存器寄存器IIC Address Register (IICA)IIC Address Register (IICA)7-1 ADDR作为从模式时,存放被寻找的地址,对于主模式该
14、寄存器无用。作为从模式时,存放被寻找的地址,对于主模式该寄存器无用。IIC Frequency Divider Register (IICF)7-6MULT用来定义波特率的乘数因子mul:00 mul = 01;01 mul = 02;10 mul = 04;11 Reserved5-0ICRIIC Clock Rate 该ICR数值用来定义总线分频得到IIC时钟的分频因子,同时该ICR数值也用来定义数据线SDA的数据保持时间; IIC 波特率波特率 = 总线速度总线速度(Hz)/(mul * SCL 分频数分频数) SDA 保持时间保持时间 =总线周期总线周期(s) * SDA保持值保持值上
15、面两个式子中:mul由MULT决定SCL分频数和SDA 保持值就由ICR决定,参加下表;2021/8/520时钟分频与数时钟分频与数据保持时间表据保持时间表2021/8/521时钟分频设置举例时钟分频设置举例 前提:总线时钟前提:总线时钟4MHz4MHz,IICIIC的时钟为的时钟为100KHz100KHz;配置:配置:MULT = 01,对应对应 mul = 2;ICR = 0; 对应对应 SCL分频数分频数=20; SDA保持值保持值= 7; 则波特率则波特率= 总线频率总线频率(Hz)/ (mul * SCL分频数分频数) =4000000/(2*20) =100K; (周期周期10uS
16、)数据保持时间数据保持时间 = 总线周期总线周期(s) * SDA保持值保持值 = 1/4000000 * 7 = 1.75uS 如果数据保持时间不够,可以修改如果数据保持时间不够,可以修改ICR的数值,比如设置为的数值,比如设置为7,对应的,对应的SCL分频数为分频数为40,SDA保持值为保持值为10,将,将mul修改为修改为1,此时,此时100KHz的波特率不的波特率不变,但数据保持时间为变,但数据保持时间为2.5uS了。了。 SDA hold time is the delay from the falling edge of the SCL (IIC clock) to the cha
17、nging of SDA (IIC data).2021/8/522IIC Control Register (IICC)IIC Control Register (IICC)7-IICENIic模块的允许控制位,模块的允许控制位,“1”时允许,此时对应的管脚不再是普通的时允许,此时对应的管脚不再是普通的I/O管脚管脚了。了。6-IICIEIIC中断允许是否打开,中断允许是否打开,“1”时打开,一般都要使用中断进行数据的传输。时打开,一般都要使用中断进行数据的传输。5-MST主模式选择位,当从主模式选择位,当从“0”到到“1”改变时,会产生改变时,会产生S信号,且器件改为主模式;信号,且器件改
18、为主模式;当从当从“1”切换到切换到“0”时,会产生时,会产生P信号,且器件改为了从模式。信号,且器件改为了从模式。4-TX数据传送的方向控制位,数据传送的方向控制位,“1”表示发送,表示发送,“0”表示接收;该位需要根据数表示接收;该位需要根据数据传输的模式分别设置。主模式下,寻址期间该位为据传输的模式分别设置。主模式下,寻址期间该位为“1”,对于从模式来说,对于从模式来说,该位需要根据状态寄存器该位需要根据状态寄存器IICS中的中的SRW位来决定。位来决定。3-TXAK该位决定收到数据后是否发送该位决定收到数据后是否发送ACK信号,无论是主还是从模式。信号,无论是主还是从模式。“0”接收到
19、一字节数据后发送应答信号,接收到一字节数据后发送应答信号,“1”未发送应答信号。未发送应答信号。2-RSTARepeat START,在主模式下,对该位写,在主模式下,对该位写“1”会产生会产生“重新启动重新启动” 信号。信号。2021/8/523IIC Status Register (IICS)IIC Status Register (IICS)7-TCF传输结束标志。只有在写IICD或读IICD期间,才被硬件清零。当IICC中IICIE位为1且TCF也为1时,将进入中断子程0:传输正在进行 1:传输结束6-IAAS确定为从IAAS位在本身的地址与主机呼叫的地址匹配的时候被置1,写IICC
20、寄存器中的任何一位将清除此位。当IICC中IICIE位为1且IAAS也为1时,中断。0:不确定 1:确定为从5-BUSY总线忙标志。当检测到START信号时,该位置“1”,当检测到STOP信号,该位自动清“0”。主从模式无所谓。4-ARBL 总线仲裁丢失时该位置总线仲裁丢失时该位置“1”,通过软件对其写“1”手动清“0”。2-SRW从读从读/写写,“1”从机发送,“0”从机接收1-IICIFIIC的中断挂号位,的中断挂号位,该位只能通过软件对其写“1”清除。可以设置该位的事件:1、一个字节传送完成,TCF为1;2、该机(一定是从机)地址被成功匹配,即IAAS为13、 总线仲裁丢失。0-RXAK
21、接收应答。接收应答。0收到应答;1未收到应答。2021/8/524IIC Data I/O Register (IICD)IIC Data I/O Register (IICD)7:0DATA在在“主发送主发送MT”模式下,当数据写入模式下,当数据写入IICD时,就启动一次数据传时,就启动一次数据传输过程,而且数据都是高位在前。在输过程,而且数据都是高位在前。在“主接收主接收MR”模式下,读该模式下,读该数据寄存器将会启动下一个字节的数据传输。数据寄存器将会启动下一个字节的数据传输。2021/8/525中断事件中断事件中断源中断源状态状态标志标志局部使能局部使能完成完成1字节传输字节传输TCF
22、IICIFIICIE匹配收到的呼叫地址匹配收到的呼叫地址IAASIICIFIICIE仲裁丢失仲裁丢失ARBLIICIFIICIE IICIF自动置自动置1,表明有中断进入,判断对应的状态位,表明有中断进入,判断对应的状态位确定具体的中断事件。确定具体的中断事件。 IICIF位必须在位必须在中断子程序中断子程序中通过对其中通过对其写写1进行清零。进行清零。2021/8/526中断三事件中断三事件(1 1)字节传输中断:)字节传输中断:TCF (TCF (传输结束标志传输结束标志) )位在第位在第9 9个时钟的个时钟的下降沿被置下降沿被置1 1,指明字节传输结束。,指明字节传输结束。(2 2)地址
23、检测中断:)地址检测中断:当本身确定的地址当本身确定的地址(IIC(IIC地址寄存器地址寄存器) )与呼叫地址匹配时,状态寄存器中与呼叫地址匹配时,状态寄存器中IAASIAAS位被置位被置1 1。这时如。这时如果果IICIEIICIE被置被置1 1,则,则CPUCPU进入中断状态。进入中断状态。CPUCPU必须检查必须检查SRWSRW位位和设置它相应的和设置它相应的TxTx模式(模式(SRWSRW和和TxTx是标识主从关系和数据是标识主从关系和数据传输方向的一个标签,切记使用时注意这两位)。传输方向的一个标签,切记使用时注意这两位)。(3 3)仲裁丢失中断)仲裁丢失中断2021/8/527软件
24、开发软件开发从机初始化:从机初始化:(1) (1) 写写: IICA: IICA设置从地址设置从地址(2) (2) 写写: IICC: IICC使能使能IICIIC和中断和中断(3)(3)初始化若干所需初始化若干所需RAMRAM变量用于数据传输。变量用于数据传输。主机初始化:主机初始化:(1) (1) 写写: IICF: IICF设置设置IICIIC波特率波特率( (本章中提供了例子本章中提供了例子) )(2) (2) 写写: IICC: IICC使能使能IICIIC和中断和中断(3) (3) 初始化若干所需初始化若干所需RAMRAM变量用于数据传输变量用于数据传输(4) (4) 写写: II
25、CC: IICC使能使能TX TX (这一位表征发送(这一位表征发送/ /接收)接收)(5) (5) 写写: IICC: IICC使能使能MST (MST (主模式主模式) )(6) (6) 写写: IICD: IICD寻址从目标。寻址从目标。 ( (这个字节的最低一位将确定这这个字节的最低一位将确定这次通信是主接收还是主发送次通信是主接收还是主发送) )主机:写主机:写IICD启动传输启动传输从机:接收到包含地址的信息启动从机:接收到包含地址的信息启动IIC传输传输2021/8/528主机发送、从机接收主机发送、从机接收2021/8/529主机发送程序主机发送程序#include #incl
26、ude #include derivative.h #include derivative.h #define START_SIGNAL IICC_MST=1;#define START_SIGNAL IICC_MST=1;/ /* *宏定义起始信号宏定义起始信号* */ /#define STOP_SIGNAL IICC_MST=0;#define STOP_SIGNAL IICC_MST=0;/ /* *宏定义停止信号宏定义停止信号* */ /void Send_init(void);void Send_init(void); / /* *声名发送条件初始化函声名发送条件初始化函数数* *
27、/ /int Send_init_check(void);int Send_init_check(void); / /* *声名发送条件检测函数声名发送条件检测函数* */ /Byte Snd_data=0 x56,0 x57,0 x58,0 x59; /Byte Snd_data=0 x56,0 x57,0 x58,0 x59; /* *待发送的一串数据待发送的一串数据* */ /Byte i=0;Byte i=0;/ /* *记数变量记数变量* */ /void main(void) void main(void) EnableInterrupts; EnableInterrupts; /
28、 /* *中断使能中断使能* */ / IICF=0X4B; IICF=0X4B;/ /* *设定位移率为设定位移率为100kbps100kbps* */ / IICC_IICEN=1; IICC_IICEN=1; / /* * 开启开启IICIIC功能功能* */ / IICC_IICIE=1; IICC_IICIE=1; / /* *使能使能IICIIC中断中断* */ / Send_init(); Send_init();/ /* *主机发送初始化主机发送初始化* */ / for(;) for(;) _RESET_WATCHDOG(); _RESET_WATCHDOG(); / /*
29、*喂看门狗喂看门狗* */ / 2021/8/530主机发送程序主机发送程序/ /* *主机发送初始化主机发送初始化* */ /void Send_init()void Send_init() IICC_TX=1; IICC_TX=1; / /* *置此位为置此位为1 1表示发送表示发送* */ / START_SIGNAL START_SIGNAL / /* *产生开始信号产生开始信号* */ / IICD=0X04; IICD=0X04; / /* *发送从机地址(最后一位发送从机地址(最后一位“0 0”代表主机发送)代表主机发送) * */ / / /* *发送条件检测发送条件检测* *
30、/ /int Send_init_check()int Send_init_check()if(!IICS_RXAK)&IICS_TCF&(!IICS_IAAS)&(!IICS_ARBL)if(!IICS_RXAK)&IICS_TCF&(!IICS_IAAS)&(!IICS_ARBL) return 1; return 1; / /* *收到应答信号、一个数据发送完毕、没有地址匹配(主收到应答信号、一个数据发送完毕、没有地址匹配(主1 1* */ / /* *机此位永远为机此位永远为0 0)、没有仲裁丢失,返回)、没有仲裁丢失,返回1 1* */
31、 / else return 0; else return 0; 2021/8/531 / /* *中断程序中断程序* */ /interrupt 17 void IIC(void)interrupt 17 void IIC(void) IICS_IICIF=1; IICS_IICIF=1;/ /* *通过向此位写通过向此位写1 1,对其清零,对其清零* */ / if(Send_init_check() if(Send_init_check() / /* *满足发送条件,则发送满足发送条件,则发送* */ / IICD=Snd_datai+; IICD=Snd_datai+; if(i=4)
32、 if(i=4) / /* *如果发送完毕,使如果发送完毕,使LED1LED1亮亮* */ / PTBDD_PTBDD6=1;PTBDD_PTBDD6=1; PTBD_PTBD6=0;PTBD_PTBD6=0; STOP_SIGNAL STOP_SIGNAL / /* *产生停止信号产生停止信号* */ / 2021/8/532从机接收程序从机接收程序#include #include #include derivative.h #include derivative.h int Rvc_init_check(void); /int Rvc_init_check(void); /* *声名接收
33、条件检测声名接收条件检测函数函数* */ /Byte addr1;Byte addr1; / /* *用来接收地址的变量用来接收地址的变量* */ /Byte RcvData4;Byte RcvData4;/ /* *用来接收数据的数组用来接收数据的数组* */ /Byte i=0;Byte i=0;/ /* *记数变量记数变量* */ /void main(void) void main(void) EnableInterrupts; EnableInterrupts; / /* *中断使能中断使能* */ / IICA=0X04; IICA=0X04;/ /* *定义从机地址定义从机地址*
34、 */ / IICC_IICEN=1; IICC_IICEN=1;/ /* *开启开启IICIIC功能功能* */ / IICC_IICIE=1; IICC_IICIE=1; / /* *使能使能IICIIC中断中断* */ / IICC_TX=0; IICC_TX=0;/ /* *置此位为置此位为0 0表示接收表示接收* */ / for(;) for(;) _RESET_WATCHDOG(); _RESET_WATCHDOG(); / /* *喂看门狗喂看门狗* */ / 2021/8/533 / /* *接收条件检测接收条件检测* */ /int Rvc_init_check()int
35、Rvc_init_check()if(IICS_TCF)& (!IICS_ARBL)if(IICS_TCF)& (!IICS_ARBL)/ /* *一个数据接收完毕、没有仲裁丢失(若同时没有地址匹配,可以接收下一个数一个数据接收完毕、没有仲裁丢失(若同时没有地址匹配,可以接收下一个数据)据)* */ / return 1; return 1; else return 0; else return 0; / /* *中断程序中断程序* */ /interrupt 17 void IIC(void) interrupt 17 void IIC(void) IICS_IICIF=1;
36、 IICS_IICIF=1; / /* *通过向此位写通过向此位写1 1,对其清零,对其清零* */ / if(IICS_IAAS&Rvc_init_check() / if(IICS_IAAS&Rvc_init_check() /* *满足地址接收条件,可以接收地满足地址接收条件,可以接收地址址* */ / IICC_TX=0; IICC_TX=0; / /* *定此位的目的是,清定此位的目的是,清IAASIAAS位位* */ / addr1=IICD; addr1=IICD; / /* *将地址送入将地址送入addr1addr1变量变量* */ / if(!IICS_IAA
37、S&Rvc_init_check()/ if(!IICS_IAAS&Rvc_init_check()/* *满足接收条件,可以接满足接收条件,可以接/ /* *收下个收下个数据数据* */ / RcvDatai+=IICD; RcvDatai+=IICD;/ /* *接收数据接收数据* */ / if(i=4) if(i=4) / /* *如果接收完毕,则点亮如果接收完毕,则点亮LED1LED1灯灯* */ / PTBDD_PTBDD6=1; PTBDD_PTBDD6=1; PTBD_PTBD6=0; PTBD_PTBD6=0; 2021/8/534从机发送、主机接收从机发送、
38、主机接收2021/8/535主机程序主机程序#include #include #include derivative.h #include derivative.h #define START_SIGNAL IICC_MST=1;#define START_SIGNAL IICC_MST=1;/ /* *宏定义起始信号宏定义起始信号* */ /#define STOP_SIGNAL IICC_MST=0;#define STOP_SIGNAL IICC_MST=0;/ /* *宏定义停止信号宏定义停止信号* */ /void Rcv_init(void);void Rcv_init(void
39、); / /* *声名声名接收接收条件初始条件初始化函数化函数* */ /int Rcv_init_check(void);int Rcv_init_check(void);/ /* *声名声名接收接收条件检测函数条件检测函数* */ /Byte addr=0 x05;Byte addr=0 x05;/ /* *从机地址(最后一位从机地址(最后一位“1 1”代表主机接收)代表主机接收)* */ /Byte Rcv_data5;Byte Rcv_data5;/ /* *用来接收数据的数组用来接收数据的数组* */ /Byte i=0;Byte i=0;/ /* *记数变量记数变量* */ /vo
40、id main(void) void main(void) EnableInterrupts; EnableInterrupts; / /* *中断使能中断使能* */ / IICF=0X4B; IICF=0X4B;/ /* *设定位移率为设定位移率为100kbps100kbps* */ / IICC_IICEN=1; IICC_IICEN=1;/ /* * 开启开启IICIIC功能功能* */ / IICC_IICIE=1; IICC_IICIE=1;/ /* *使能使能IICIIC中断中断* */ / Rcv_init(); Rcv_init(); for(;) for(;) _RESET
41、_WATCHDOG(); _RESET_WATCHDOG(); / /* *喂看门狗喂看门狗* */ / 2021/8/536 / /* *接收条件初始化接收条件初始化* */ /void Rcv_init() void Rcv_init() IICC_TX=1; / IICC_TX=1; /* *置此位为置此位为1 1表示发送表示发送* */ / START_SIGNAL / START_SIGNAL /* *产生开始信号产生开始信号* */ / IICD=addr; / IICD=addr; /* *发送从机地址发送从机地址* */ / / /* *接收条件检测接收条件检测* */ /in
42、t Rcv_init_check() int Rcv_init_check() if(IICS_TCF)& (!IICS_IAAS) & (!IICS_ARBL)if(IICS_TCF)& (!IICS_IAAS) & (!IICS_ARBL)/ /* *一个数据发送完毕、没有地址匹配(主机此位永远为一个数据发送完毕、没有地址匹配(主机此位永远为0 0)、没有仲裁丢)、没有仲裁丢失,返回失,返回1 1* */ / return 1; return 1; else return 0; else return 0; 2021/8/537/ /* *中断程序中断程序*
43、 */ /interrupt 17 void IIC(void) interrupt 17 void IIC(void) IICS_IICIF=1; /IICS_IICIF=1; /* *通过向此位写通过向此位写1 1,对其清,对其清零零* */ / if(!IICS_RXAK) / if(!IICS_RXAK) /* *如果有应答如果有应答* */ / IICC_TX=0; IICC_TX=0; / /* *则将该位置零,表示准则将该位置零,表示准备接收备接收* */ / if(Rcv_init_check() if(Rcv_init_check() / /* *如果满足接收条件如果满足接收
44、条件* */ / Rcv_datai+=IICD; Rcv_datai+=IICD; / /* *将数据送到接收数组里将数据送到接收数组里* */ / if(i=5) if(i=5) / /* *如果接收到了所有数据如果接收到了所有数据* */ / PTBDD_PTBDD7=1; PTBDD_PTBDD7=1; / /* *点亮点亮LED2LED2,以示接收完毕,以示接收完毕* */ / PTBD_PTBD7=0; PTBD_PTBD7=0; STOP_SIGNAL STOP_SIGNAL / /* *产生停止信号产生停止信号* */ / 2021/8/538从机程序从机程序#include #include #include derivative.h #include derivative.h int Send_init_check(void);int Send_init_check(void); / /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 软件测试与优化服务合同
- 通信设备油品运输合同模板
- 2025年三方加工承揽合同(三篇)
- 2025房屋建筑工程劳务分包合同
- 2025年一般公司的劳动合同(2篇)
- 2025单位委托职称代理合同
- 202510 租赁合同(简版)
- 2025企业管理资料不锈钢安装合同文档范本
- 2025装修设计委托合同范文样本
- 休闲体育设备租赁合同
- 2025年度版权授权协议:游戏角色形象设计与授权使用3篇
- 心肺复苏课件2024
- 《城镇燃气领域重大隐患判定指导手册》专题培训
- 湖南财政经济学院专升本管理学真题
- 全国身份证前六位、区号、邮编-编码大全
- 2024-2025学年福建省厦门市第一中学高一(上)适应性训练物理试卷(10月)(含答案)
- 《零售学第二版教学》课件
- 广东省珠海市香洲区2023-2024学年四年级下学期期末数学试卷
- 房地产行业职业生涯规划
- 江苏省建筑与装饰工程计价定额(2014)电子表格版
- MOOC 数字电路与系统-大连理工大学 中国大学慕课答案
评论
0/150
提交评论