我想问下,这是个测量距离的代码,怎么让他距离先出现150,再出现200则h加一,距离先出现200,再出现150则f加一,并且可以循环。

我想问下,这是个测量距离的代码,怎么让他距离先出现150,再出现200则h加一,距离先出现200,再出现150则f加一,并且可以循环。

void Timer0() interrupt 1
{
    unsigned long i=0,j,h=1;

    if(time<10)//0.5s
        time++;
    else
    {
        time=0;
        i=mcp_read();测量
        i=i*1135/2907;
        disp1[0]=i/100000+0x30;
        disp1[1]=i%100000/10000+0x30;
        disp1[2]=i%10000/1000+0x30;
        disp1[3]=i%1000/100+0x30;
        disp1[5]=i%100/10+0x30;
        disp1[6]=i%10+0x30;
        write_string(1,0,disp1);
        //距离计算
        j=(204657-i);
        j=j*10/69+10000;
        i=j;
        t[0]=i/10000+0x30;
        t[1]=i%10000/1000+0x30;
        t[2]=i%1000/100+0x30;
        t[4]=i%100/10+0x30;
        t[5]=i%10+0x30;
        write_string(2,0,t);

“Devil组”引证GPT后的撰写:
在代码中添加以下的逻辑来实现您的需求:

unsigned int distance = i; // 假设i是当前测量得到的距离值
static unsigned int last_distance = 0;
static unsigned int h = 1; // 初始化h为1
static unsigned int f = 0;
if (distance == 150 && last_distance == 200) {
    h++; // 距离先出现150,再出现200则h加一
} else if (distance == 200 && last_distance == 150) {
    f++; // 距离先出现200,再出现150则f加一
}
last_distance = distance;
if (h > 5) {
    h = 1; // 超过5次后,重置h
}
if (f > 5) {
    f = 0; // 超过5次后,重置f
}


用一个静态变量last_distance来记录上一次测量得到的距离值,然后根据当前和上一次的距离值,判断是否需要让h或f加一。注意,这里的h和f都是静态变量,它们的值会被保留下来,直到下一次执行这段代码。

最后,还需要加上一个判断,当h或f的值超过5时,需要将它们重置为1或0,以实现循环的效果。