📄 countforce.lst
字号:
1: #include <pic.h>
2: #include "total.h"
3:
4: /*******************************************************************************************
5: * 最近修改时间: 05-3-31
6: * 修改原因: 简化代码,增加通用性
7: * 修改人: 饶阳胜
8: *******************************************************************************************/
9: /*******************************************************************************************
10: * 函数名称: Count_Force.c
11: * 功能: 计算力
12: * 入口参数: unsigned short *dema_point 指向标定点的指针
13: * unsigned short *ad_result AD转换的结果
14: * 出口参数: 力值
15: * 全局变量: 无
16: * 调用模块: 无
17: * 设计者: 饶阳胜
18: * 日期: 05/3/7
19: * 说明: 力 = Y0 + (Y1 - Y0)/(X1 - X0)*(X - X0)
20: * 对标定数据存放格式有以下要求:
21: * 指针指向的第一个对象是:标定的点数
22: * ----------二-------:标定点的AD值
23: * ----------三-------:标定点的力值
24: * 后面依次类推
25: *******************************************************************************************/
26: short Count_Force(unsigned short *dema_point, unsigned short ad_result)
27: {
28: unsigned char i,j; //用于与标定点数做比较的临时变量
29: unsigned short x0,y0,x1,y1; //计算时用到参数
30: unsigned long middle_result;
31:
32: if(ad_result <= dema_point[1]){ //如果读取到的AD值小于最小标定点的数值,则将制动力置0
33: return 0; //等于0点,返回0值
34: /* }else if(ad_result < dema_point[1]){
35: x0 = dema_point[1];
36: y0 = dema_point[2];
37: x1 = dema_point[3];
38: y1 = dema_point[4];
39:
40: middle_result = y1 - y0;
41: middle_result *= ad_result - x0;
42: middle_result /= x1 - x0;
43: middle_result += y0;
44:
45: return middle_result;*/
46: }else{
47: for(i = 0,j = 1; i < dema_point[0] - 1; ++i,j += 2){ //寻找计算分量
48: if(ad_result > dema_point[j]){
49: x0 = dema_point[j + 0]; //得到计算分量x0
50: y0 = dema_point[j + 1]; //得到计算分量y0
51: x1 = dema_point[j + 2]; //得到计算分量x1
52: y1 = dema_point[j + 3]; //得到计算分量y1
53: }else{
54: break;
55: }
56: }
57: middle_result = y1 - y0;
58: middle_result *= ad_result - x0;
59: middle_result /= x1 - x0;
60: middle_result += y0;
61: return middle_result;
62: }
63: }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -