求大神解释一下这个主程序什么意思?特别是标红的意思

2019-03-23 17:33发布

main()
{
        unsigned int tem_c=0;
        unsigned char B_k1=0,B_k2=0;
       
        for(tem_c=0;tem_c<50000;tem_c++);
        Clock_init();
        GPIO_int();
       
        while (1)
        {
          if((GPIOG->IDR&0x80)==0x80)B_k1=0; //PG7为高电平,未有按键
                else if(B_k1==0)//PG6按下时,指示灯亮
                {
                        for(tem_c=0;tem_c<500;tem_c++);
                        if((GPIOG->IDR&0x80)==0x00)
                        {
                                B_k1=1;
                                GPIOA->ODR=0x30;
                        }
                }
               
                if((GPIOG->IDR&0x40)==0x40)B_k2=0; //PG6为高电平,未有按键
                else if(B_k2==0)//PG7按下时,指示灯灭
                {
                        for(tem_c=0;tem_c<500;tem_c++);
                        if((GPIOG->IDR&0x40)==0x00)
                        {
                                B_k2=1;
                                GPIOA->ODR=0x0;
                        }
                }
        }
}

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
lcofjp
1楼-- · 2019-03-24 01:49
/ for(tem_c=0;tem_c<50000;tem_c++);   这种代码只是一个简单的循环,用于延时一段不太精确的时间,那种数值估计是估么着敲出来的,所以不要太介意为什么是那个数值。
lcofjp
2楼-- · 2019-03-24 07:21
如果换成是delay(5000)和delay(500)你可能就豁然开朗了
KCP
3楼-- · 2019-03-24 11:28
 精彩回答 2  元偷偷看……
KCP
4楼-- · 2019-03-24 12:45
lcofjp 发表于 2017-8-23 21:19
如果换成是delay(5000)和delay(500)你可能就豁然开朗了

B_k1=0,   B_k2=0;这两项呢 什么意思呢?
wudianjun2001
5楼-- · 2019-03-24 15:13
KCP 发表于 2017-8-23 21:46
B_k1=0,   B_k2=0;这两项呢 什么意思呢?

这两个是存储按键的状态,是按下还是未按下。
按键扫描的话,一般先判断有键按下,延时一段时间再判断一次,两次都是按下才真的算按下,这个叫消抖。
sjl2001
6楼-- · 2019-03-24 20:10
 精彩回答 2  元偷偷看……

一周热门 更多>