while(1) { delay_ms(1); cnt++; if(cnt>10) { cnt = 0; //图谱界面,快速刷新 if(set==0)refresh =1; //设置界面,降低10倍刷新率 psc_cnt++; if(psc_cnt>10) { psc_cnt = 0; LED = !LED; refresh =1; buzzer = 0; #ifdef ALARM if(heartRate>limitMax||heartRate<limitMin) { if(alarm==0)alarm = 1; } if(alarm==1&&set==0) { buzzer = LED; } #endif clr_cnt++; if(set==0) { if(clr_cnt>6) { play8(80, 6, (u8*)(&S_num[16*(11)])); play8(80+8, 6, (u8*)(&S_num[16*(11)])); play8(80+16, 6, (u8*)(&S_num[16*(11)])); } else { play8(80, 6, (u8*)(&S_num[16*(heartRate/100%10)])); play8(80+8, 6, (u8*)(&S_num[16*(heartRate/10%10)])); play8(80+16, 6, (u8*)(&S_num[16*(heartRate/1%10)])); } } } } if(hr_trig) { hr_trig = 0; clr_cnt =0; alarm = 0; PIC = 3; }
时间: 2023-06-07 18:11:03 浏览: 89
这是一个无限循环的程序,每次循环会延迟1毫秒,并对计数器cnt进行操作。如果cnt大于10,计数器会被重置为0。在图谱界面,程序会快速刷新;而在设置界面,刷新率会降低10倍。此外,程序还进行了一个时间计数器操作(psc_cnt),当时间计数器大于10时,LED指示灯会反转,刷新状态也会改变(refresh=1),并且蜂鸣器会响。
相关问题
void clockwise_sense_dirction(void) { if( (!RIGHT_KEY && !LEFT_KEY) || (RIGHT_KEY && LEFT_KEY ) ) //顺时针,加亮度 { Turn_counter_cnt=0; Turn_clockwise_cnt++; if(Turn_clockwise_cnt>2) //顺时针控制延迟 { Turn_clockwise_cnt=0; if((user_set_delay_time<=30)||(user_set_delay_time>41)) //确保区间在30~40之外 { user_set_delay_time--; if(user_set_delay_time==0) { user_set_delay_time= Max_delay_time_AC; } } } } if( (!RIGHT_KEY && LEFT_KEY ) || (RIGHT_KEY && !LEFT_KEY) ) //逆时针,减亮度 { Turn_clockwise_cnt=0; Turn_counter_cnt++; if(Turn_counter_cnt>2) //逆时针控制延迟 { Turn_counter_cnt=0; if((user_set_delay_time<29)||(user_set_delay_time>=40)) //确保区间在30~40之外 { user_set_delay_time++; if(user_set_delay_time>Max_delay_time_AC) { user_set_delay_time=0; } } } } }
这段代码是用于控制旋钮旋转方向的,根据旋钮旋转的方向来控制亮度的增减。下面是对这段代码的详细解释:
首先,判断旋钮的旋转方向,如果旋钮没有旋转或者旋转方向不明确,则不做任何操作。
```
if( (!RIGHT_KEY && !LEFT_KEY) || (RIGHT_KEY && LEFT_KEY ) )
```
如果旋钮顺时针旋转,则计数器 `Turn_clockwise_cnt` 加 1,如果计数器 `Turn_clockwise_cnt` 超过 2,则将计数器 `Turn_clockwise_cnt` 重置为 0,并且将亮度增加一个步长 `user_set_delay_time--`,同时确保亮度区间在 30~40 之外。
```
Turn_clockwise_cnt++;
if(Turn_clockwise_cnt>2)
{
Turn_clockwise_cnt=0;
if((user_set_delay_time<=30)||(user_set_delay_time>41))
{
user_set_delay_time--;
if(user_set_delay_time==0)
{
user_set_delay_time= Max_delay_time_AC;
}
}
}
```
如果旋钮逆时针旋转,则计数器 `Turn_counter_cnt` 加 1,如果计数器 `Turn_counter_cnt` 超过 2,则将计数器 `Turn_counter_cnt` 重置为 0,并且将亮度减少一个步长 `user_set_delay_time++`,同时确保亮度区间在 30~40 之外。
```
Turn_counter_cnt++;
if(Turn_counter_cnt>2)
{
Turn_counter_cnt=0;
if((user_set_delay_time<29)||(user_set_delay_time>=40))
{
user_set_delay_time++;
if(user_set_delay_time>Max_delay_time_AC)
{
user_set_delay_time=0;
}
}
}
```
需要注意的是,代码中使用了两个按键 `LEFT_KEY` 和 `RIGHT_KEY` 来检测旋钮的旋转方向,需要根据具体情况来修改这两个按键的引脚号和触发方式。同时,代码中还使用了计数器来控制旋钮旋转的延迟,需要根据实际情况来调整计数器的值。
loop_cnt = loop_cnt + 1 if loop_cnt < 100 else 1
这行代码的作用是将 `loop_cnt` 的值加 1,并且如果加 1 后 `loop_cnt` 的值小于 100,那么就将 `loop_cnt` 的值更新为加 1 后的值;如果加 1 后 `loop_cnt` 的值大于等于 100,那么就将 `loop_cnt` 的值更新为 1。这样做的目的是让 `loop_cnt` 始终保持在 1-100 的范围内。
阅读全文