2021-03-17

// 本模块解决状态量采集时,发生的轻微抖动问题,连续3次位信号不变,采样值生效

unsigned char yxs[48];  // 48路状态信号,全局变量

void ProcessYx(void) {
    static unsigned char xdata lastYx[6];     // 上次采样值
    static unsigned char xdata llastYx[6];    // 上上次采样值
    static unsigned char xdata yx_data[6]; // 有效的采样值
    unsigned char xdata curYx[6];               // 当前采样值
    unsigned char data i, k, validBit;  

    curYx[0] = OS_YX1;
    curYx[1] = OS_YX2;
    curYx[2] = OS_YX3;
    curYx[3] = OS_YX4;
    curYx[4] = OS_YX5;
    curYx[5] = OS_YX6;

    for (i=0; i<6; i++){
        validBit = (curYx[i] ^ lastYx[i]) | (lastYx[i] ^ llastYx[i]);  // 若对应位是0,表示信号稳定。不稳定的数据不作为采集结果(保持原来结果)
        yx_data[i] = (curYx[i] & (~validBit)) | (yx_data[i] & validBit);
        for (k=0; k<8; k++){
            yxs[i*8+k] = (yx_data[i]>>(7-k)) & 1;    
        }
        llastYx[i] = lastYx[i];
        lastYx[i] = curYx[i];
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值