⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 countforce.lst

📁 这个是汽车制动台控制程序的C语言版本. 用于实际产品中.单片机用的是PIC16F877A.
💻 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 + -