欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
51單片機(jī)輪詢
[打印本頁]
作者:
cmx8608121
時(shí)間:
2018-5-7 16:45
標(biāo)題:
51單片機(jī)輪詢
方法一:
[cpp]
view plain
copy
void TimerX_handler(void)
{
ms_cnt++;
}
初始化設(shè)置該定時(shí)器x毫秒中斷一次,即ms_cnt作為一個(gè)毫秒計(jì)時(shí)器。
[cpp]
view plain
copy
main(void)
{
while(1)
{
if(ms_cnt%x==0)
{
task1();
}
if(ms_cnt%y==0)
{
task2();
}
}
}
主循環(huán)中,每隔x毫秒執(zhí)行一次task1,每隔y毫秒執(zhí)行一次task2。
方法二:
[cpp]
view plain
copy
typedef _TASK_STRUCT
{
<span style="white-space:pre"> </span>u32 time_cnt;
<span style="white-space:pre"> </span>u8 run_flag;
}TASK;
TASK task1 = {x,0};
TASK task2 = {y,0};
定義任務(wù)結(jié)構(gòu)體,每隔x時(shí)間置位task1執(zhí)行標(biāo)志位task1.run_flag,在main loop中掃描并執(zhí)行;同理task2。
[cpp]
view plain
copy
void TimerX_handler(void)
{
if(task1.run_flag == 0)
{
task1.time_cnt--;
}
if(task1.time_cnt == 0)
{
task1.run_flag = 1;
task1.time_cnt = x;
}
if(task2.run_flag == 0)
{
task2.time_cnt--;
}
if(task2.time_cnt == 0)
{
task2.run_flag = 1;
task2.time_cnt = y;
}
}
[cpp]
view plain
copy
void main(void)
{
while(1)
{
if(task1.run_flag == 1)
{
task1();
task1.run_flag = 0;
}
if(task2.run_flag == 1)
{
task2();
task2.run_flag = 0;
}
}
}
作者:
cmx8608121
時(shí)間:
2018-5-7 16:45
非常好
作者:
cmx8608121
時(shí)間:
2018-5-7 16:45
我有一個(gè)問題,可靠不
作者:
pengyongnet
時(shí)間:
2020-2-22 19:19
講的不錯(cuò)
作者:
神出沒
時(shí)間:
2020-2-23 10:38
裸機(jī)一般就這樣寫,注意一些細(xì)節(jié)
作者:
killjoy
時(shí)間:
2021-4-3 15:26
為什么不用在主函數(shù)里調(diào)用TimerX_handler這個(gè)函數(shù)呀?求解~
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1