解读程序:void I2C_test_MYJ(void) { unsigned char nnn = 0; unsigned char n = 0; uint8_t ii = 0; uint8_t io_first_flag = 0; uint8_t io_error0 = 0; uint8_t io_error1 = 0; uint32_t t_count0 = 0; uint32_t t_count1 = 0; uint32_t t_count2 = 0; uint32_t t_count3 = 0; uint32_t t_count4 = 0; /IO口引脚初始化*****************/ Gpio_InitIOExt(3,1,GpioDirOut,TRUE,FALSE,TRUE,FALSE); Gpio_InitIOExt(2,7,GpioDirOut,TRUE,FALSE,TRUE,FALSE); Gpio_InitIOExt(3,2,GpioDirOut,TRUE,FALSE,TRUE,FALSE); Gpio_InitIOExt(3,3,GpioDirOut,TRUE,FALSE,TRUE,FALSE); Gpio_SetIO(3,2,1); Gpio_SetIO(3,3,1); Gpio_SetIO(3,1,1); Gpio_SetIO(2,7,1); delay1ms(10); while(1) { delay1ms(5); if(0 == I2C0_Read(i2cRxData0,13))//mei lianjie { LED0_ON; io_error0 = 1; status = 1; error1[0]++; } else { i2cRxData0[13] = 0; for(ii = 0; ii < 12; ii++) { i2cRxData0[13] += i2cRxData0[ii]; } if(i2cRxData0[13] != i2cRxData0[12])//jduge { LED0_ON; io_error0 = 1; status = 4; error1[3]++; } if(i2cRxData0[10] == 0 && i2cRxData0[11] < 0X50)// yu zhen xiao { LED0_ON; io_error0 = 1; status = 2; error1[1]++; } }
时间: 2024-04-13 08:27:58 浏览: 81
欧姆龙MYJ_LYJ_通用继电器选型手册(中文)
这段程序主要是对I2C进行测试和处理。首先,定义了一些变量和计数器,包括nnn、n、ii、io_first_flag、io_error0、io_error1、t_count0、t_count1、t_count2、t_count3和t_count4。
然后,进行了一些IO口引脚的初始化,使用了Gpio_InitIOExt函数对一些引脚进行配置。
接下来,在一个无限循环中,每隔5毫秒延迟一次。然后通过调用I2C0_Read函数读取I2C数据,如果返回值为0,则表示没有连接成功。在这种情况下,LED0会点亮,io_error0会被置为1,status会被设置为1,并且error1[0]会自增。
如果连接成功,则对接收的数据进行处理。首先,将i2cRxData0[13]初始化为0,并对前12个字节进行累加,结果存储在i2cRxData0[13]中。然后,判断i2cRxData0[13]和i2cRxData0[12]是否相等,如果不相等,则表示数据错误。在这种情况下,LED0会点亮,io_error0会被置为1,status会被设置为4,并且error1[3]会自增。
接下来,判断i2cRxData0[10]是否为0且i2cRxData0[11]是否小于0x50。如果满足条件,则表示数据有效。在这种情况下,LED0会点亮,io_error0会被置为1,status会被设置为2,并且error1[1]会自增。
以上就是这段程序的基本逻辑和功能。
阅读全文