void my_t90(s32 bq,s32 yq)// { my.t90_start = bq * p.s.t90_0; my.t90_start /= 1000; if(my.t90_start < 2){ my.t90_start = 2; } my.t90_end = bq * p.s.t90_90; my.t90_end /= 1000; switch(my.t90_case){ case 0 :{ my.t90_case++; }break; case 1 :{ if(yq > my.t90_start){ my.t90_cnt = my.timer_1ms;//计数器清空 my.t90_case++; } }break; case 2 :{ if(yq > my.t90_end){ my.t90_case++; }else if(yq < my.t90_start){ my.t90_case--; }else{ my.t90_ms = my.timer_1ms - my.t90_cnt; my.t90_ms /= 100; } }break; case 3 :{ if(yq < my.t90_end){ my.t90_cnt = my.timer_1ms;//计数器清空 my.t90_case--; } }break; default :{ my.t90_case = 0; }break; } }
时间: 2024-04-19 15:30:09 浏览: 197
这段代码定义了一个名为 `my_t90` 的函数,它接受两个参数 `bq` 和 `yq`,类型都是 `s32`。
在函数内部,首先计算了 `my.t90_start` 的值,通过将 `bq` 乘以 `p.s.t90_0` 后再除以 1000。然后检查 `my.t90_start` 的值是否小于 2,如果是,则将其设置为 2。
接下来,计算了 `my.t90_end` 的值,通过将 `bq` 乘以 `p.s.t90_90` 后再除以 1000。
然后,使用 `switch` 语句根据变量 `my.t90_case` 的值执行不同的操作。
- 当 `my.t90_case` 的值为 0 时,执行 `case 0` 下的代码,将 `my.t90_case` 的值加一。
- 当 `my.t90_case` 的值为 1 时,执行 `case 1` 下的代码。如果 `yq` 的值大于 `my.t90_start`,则将变量 `my.t90_cnt` 设置为 `my.timer_1ms`,并将 `my.t90_case` 的值加一。
- 当 `my.t90_case` 的值为 2 时,执行 `case 2` 下的代码。如果 `yq` 的值大于 `my.t90_end`,则将 `my.t90_case` 的值加一;如果 `yq` 的值小于 `my.t90_start`,则将 `my.t90_case` 的值减一;否则,计算 `my.t90_ms` 的值为 `my.timer_1ms` 减去 `my.t90_cnt`,然后除以 100。
- 当 `my.t90_case` 的值为 3 时,执行 `case 3` 下的代码。如果 `yq` 的值小于 `my.t90_end`,则将变量 `my.t90_cnt` 设置为 `my.timer_1ms`,并将 `my.t90_case` 的值减一。
如果以上条件都不满足,则执行 `default` 下的代码,将变量 `my.t90_case` 设置为 0。
该函数的作用是根据不同的 `my.t90_case` 值来选择不同的操作,并根据条件对变量进行赋值。
阅读全文