void manage_key1(void) //perform the calibration { HT93LC46_EWEN(); DELAY_TIMES(0x0A); if(calibration_flag==0) { HT93LC46_WRITE_ONE_BYTE(0x00, 0x4B); Mindata.One_4byte=finaldata.One_4byte; DELAY_TIMES(0x0A); HT93LC46_WRITE_ONE_BYTE(0x01, Mindata.Four_1byte[0]); DELAY_TIMES(0x0A); HT93LC46_WRITE_ONE_BYTE(0x02, Mindata.Four_1byte[1]); DELAY_TIMES(0x0A); HT93LC46_WRITE_ONE_BYTE(0x03, Mindata.Four_1byte[2]); DELAY_TIMES(0x0A); HT93LC46_WRITE_ONE_BYTE(0x04, Mindata.Four_1byte[3]); DELAY_TIMES(0x0A); calibration_flag=1; } else { Maxdata.One_4byte=finaldata.One_4byte; HT93LC46_WRITE_ONE_BYTE(0x05,Maxdata.Four_1byte[0]); DELAY_TIMES(0x0A); HT93LC46_WRITE_ONE_BYTE(0x06,Maxdata.Four_1byte[1]); DELAY_TIMES(0x0A); HT93LC46_WRITE_ONE_BYTE(0x07, Maxdata.Four_1byte[2]); DELAY_TIMES(0x0A); HT93LC46_WRITE_ONE_BYTE(0x08, Maxdata.Four_1byte[3]); DELAY_TIMES(0x0A); Scalevalue.float_one_4byte=500000; Dividendvalue.float_one_4byte=(Maxdata.One_4byte-Mindata.One_4byte); Scalevalue.float_one_4byte=Dividendvalue.float_one_4byte/Scalevalue.float_one_4byte; HT93LC46_WRITE_ONE_BYTE(0x09, Scalevalue.float_four_1byte[0]); DELAY_TIMES(0x0A); HT93LC46_WRITE_ONE_BYTE(0x0A, Scalevalue.float_four_1byte[1]); DELAY_TIMES(0x0A); HT93LC46_WRITE_ONE_BYTE(0x0B, Scalevalue.float_four_1byte[2]); DELAY_TIMES(0x0A); HT93LC46_WRITE_ONE_BYTE(0x0C, Scalevalue.float_four_1byte[3]); DELAY_TIMES(0x0A); calibration_flag=0; } HT93LC46_EWDS(); DELAY_TIMES(0x0A); }
时间: 2024-04-12 19:33:31 浏览: 83
程序.rar_人工智能/神经网络/深度学习_matlab__人工智能/神经网络/深度学习_matlab_
这段代码是一个名为`manage_key1`的函数,用于执行校准操作。下面是函数的具体步骤:
1. 调用`HT93LC46_EWEN()`函数,使能EEPROM写操作。
2. 延时一段时间(`0x0A`次)。
3. 如果`calibration_flag`为0,则执行以下步骤:
- 调用`HT93LC46_WRITE_ONE_BYTE()`函数,将数据`0x4B`写入EEPROM的地址`0x00`。
- 将变量`finaldata.One_4byte`赋值给变量`Mindata.One_4byte`。
- 延时一段时间(`0x0A`次)。
- 将变量`Mindata.Four_1byte[0]`写入EEPROM的地址`0x01`。
- 延时一段时间(`0x0A`次)。
- 将变量`Mindata.Four_1byte[1]`写入EEPROM的地址`0x02`。
- 延时一段时间(`0x0A`次)。
- 将变量`Mindata.Four_1byte[2]`写入EEPROM的地址`0x03`。
- 延时一段时间(`0x0A`次)。
- 将变量`Mindata.Four_1byte[3]`写入EEPROM的地址`0x04`。
- 延时一段时间(`0x0A`次)。
- 将变量`calibration_flag`赋值为1。
4. 否则,执行以下步骤:
- 将变量`finaldata.One_4byte`赋值给变量`Maxdata.One_4byte`。
- 将变量`Maxdata.Four_1byte[0]`写入EEPROM的地址`0x05`。
- 延时一段时间(`0x0A`次)。
- 将变量`Maxdata.Four_1byte[1]`写入EEPROM的地址`0x06`。
- 延时一段时间(`0x0A`次)。
- 将变量`Maxdata.Four_1byte[2]`写入EEPROM的地址`0x07`。
- 延时一段时间(`0x0A`次)。
- 将变量`Maxdata.Four_1byte[3]`写入EEPROM的地址`0x08`。
- 延时一段时间(`0x0A`次)。
- 将常量值`500000`赋值给变量`Scalevalue.float_one_4byte`。
- 将变量`(Maxdata.One_4byte-Mindata.One_4byte)`赋值给变量`Dividendvalue.float_one_4byte`。
- 将变量`Dividendvalue.float_one_4byte/Scalevalue.float_one_4byte`的结果赋值给变量`Scalevalue.float_one_4byte`。
- 将变量`Scalevalue.float_four_1byte[0]`写入EEPROM的地址`0x09`。
- 延时一段时间(`0x0A`次)。
- 将变量`Scalevalue.float_four_1byte[1]`写入EEPROM的地址`0x0A`。
- 延时一段时间(`0x0A`次)。
- 将变量`Scalevalue.float_four_1byte[2]`写入EEPROM的地址`0x0B`。
- 延时一段时间(`0x0A`次)。
- 将变量`Scalevalue.float_four_1byte[3]`写入EEPROM的地址`0x0C`。
- 延时一段时间(`0x0A`次)。
- 将变量`calibration_flag`赋值为0。
5. 调用`HT93LC46_EWDS()`函数,禁止EEPROM写操作。
6. 延时一段时间(`0x0A`次)。
以上就是函数的主要逻辑。函数首先根据`calibration_flag`的值执行不同的操作,通过读写EEPROM来进行校准,并更新相关的变量。最后,禁止EEPROM写操作。
阅读全文