单片机怎么在灯闪烁的同时去做另一件事情呢?

2020-01-13 18:34发布


程序中定时1s和10s有什么问题没有

BOOL  volatile  led_flag;
BOOL  volatile  flag_1s;
BOOL  volatile  flag_10s;

void Sys_10ms_Interrupt(void) //10ms中断函数
{
        static volatile  u16 led_timer = 0;
        static volatile  u16 count_timer = 0;
        static volatile  u16 count_timer2 = 0;
        count_timer++;
        flag_1s = 0;
        if(count_timer%100 == 0)       
        {       
                flag_1s = 1;          //1s定时
                count_timer2++;
                if(count_timer2 == 10)
                {                  
                        flag_10s = 1;       //10s定时
                        count_timer2 = 0;
                }
        }
        led_timer++;
        if(led_timer>10) //100ms 反转
        {
                led_flag =~led_flag;
                led_timer = 0;
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
42条回答
not_at_all
1楼-- · 2020-01-14 23:28
没有人叫你一直等啊!搞个定时器中断,设一个标志位,时间没到跳过去,时间到了才执行。
adcr
2楼-- · 2020-01-15 03:09
 精彩回答 2  元偷偷看……
cht-rtos
3楼-- · 2020-01-15 07:37
打一枪就转移阵地
Name_006
4楼-- · 2020-01-15 12:14
新手吗  建议新手不要学电子了,学不完的知识,可以考虑转大数据处理 这些互联网项目。虽然哪都有学不完的知识,但是相对新的东西工资高
@lonely
5楼-- · 2020-01-15 13:43
这些不是及时处理还是不要放在中断里吧,主函数处理多好
jswd0810
6楼-- · 2020-01-15 15:31
中断只是处理重要事情,其它的放到主程序扫描执行吧

一周热门 更多>