程序如下:<br /> void TaskStart(void *pdata)<br />{<br /> uint8 i;<br /> uint8 DataBuf[11];<br /><br /> pdata = pdata; /* 避免编译警告 */<br /><br /> TargetInit(); /* 目标板初始化 */<br /> IODIR |= BEE; /* 设置蜂鸣器为输出*/<br /> PINSEL0 = (PINSEL0 & 0xcffff3ff); /* 管教选择模块初始化 */<br /> IOSET = BEE;<br /> <br /> for (i = 0; i < 10; i++)<br /> {<br /> DataBuf[i + 1] = i + '0';<br /> }<br /> DataBuf[0] = 0; /* 扩展地址 */<br /> I2cWrite(CSI24WC02, DataBuf, 11);<br /><br /> OSTimeDly(OS_TICKS_PER_SEC / 100 + 1);<br /> I2cRead(CSI24WC02, DataBuf, DataBuf, 1, 10);<br /> for (i = 0; i < 10; i++)<br /> {<br /> if (DataBuf != (i + '0'))<br /> {<br /> break;<br /> }<br /> }<br /> if ( i < 10)<br /> { /* 读写错误 */<br /> while (1)<br /> {<br /> IOCLR = BEE;<br /> OSTimeDly(OS_TICKS_PER_SEC / 5);<br /> IOSET = BEE;<br /> OSTimeDly(OS_TICKS_PER_SEC / 5);<br /> }<br /> <br /> }<br /> else<br /> { /* 读写成功 */<br /> IOCLR = BEE;<br /> OSTimeDly(OS_TICKS_PER_SEC);<br /> IOSET = BEE;<br /> while (1);<br /> }<br />}<br /><br />疑问:前面的程序如此赋值 DataBuf[i + 1] = i + '0';也就是说<br />DataBuf[1] = 0<br />......<br />DataBuf[10] = 9<br /> <br />那么if (DataBuf != (i + '0'))当i=0时该语句不成立,其他情况也就是i=1、...9时,该语句都成立,那么就会执行错误处理,不知为何如此编写程序!!!!!!!!!!! |
|