📄 countforce.c
字号:
#include <pic.h>
#include "total.h"
/*******************************************************************************************
* 最近修改时间: 05-3-31
* 修改原因: 简化代码,增加通用性
* 修改人: 饶阳胜
*******************************************************************************************/
/*******************************************************************************************
* 函数名称: Count_Force.c
* 功能: 计算力
* 入口参数: unsigned short *dema_point 指向标定点的指针
* unsigned short *ad_result AD转换的结果
* 出口参数: 力值
* 全局变量: 无
* 调用模块: 无
* 设计者: 饶阳胜
* 日期: 05/3/7
* 说明: 力 = Y0 + (Y1 - Y0)/(X1 - X0)*(X - X0)
* 对标定数据存放格式有以下要求:
* 指针指向的第一个对象是:标定的点数
* ----------二-------:标定点的AD值
* ----------三-------:标定点的力值
* 后面依次类推
*******************************************************************************************/
short Count_Force(unsigned short *dema_point, unsigned short ad_result)
{
unsigned char i,j; //用于与标定点数做比较的临时变量
unsigned short x0,y0,x1,y1; //计算时用到参数
unsigned long middle_result;
if(ad_result <= dema_point[1]){ //如果读取到的AD值小于最小标定点的数值,则将制动力置0
return 0; //等于0点,返回0值
/* }else if(ad_result < dema_point[1]){
x0 = dema_point[1];
y0 = dema_point[2];
x1 = dema_point[3];
y1 = dema_point[4];
middle_result = y1 - y0;
middle_result *= ad_result - x0;
middle_result /= x1 - x0;
middle_result += y0;
return middle_result;*/
}else{
for(i = 0,j = 1; i < dema_point[0] - 1; ++i,j += 2){ //寻找计算分量
if(ad_result > dema_point[j]){
x0 = dema_point[j + 0]; //得到计算分量x0
y0 = dema_point[j + 1]; //得到计算分量y0
x1 = dema_point[j + 2]; //得到计算分量x1
y1 = dema_point[j + 3]; //得到计算分量y1
}else{
break;
}
}
middle_result = y1 - y0;
middle_result *= ad_result - x0;
middle_result /= x1 - x0;
middle_result += y0;
return middle_result;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -