LscmunaixMG 发表于 2017-6-18 10:15:19

C51实现10连击翻转LED亮灭状态,对新手有帮助。


#include "reg51.h"
#include"intrins.h"
sbit led=P3^4 ;//灯,连接Vcc。
sbit key=P3^5 ;//按键,连接Gnd。


void delay10ms()                //@6MHz
{
      unsigned char i, j;

      _nop_();
      _nop_();
      i = 59;
      j = 89;
      do
      {
                while (--j);
      } while (--i);
}

void main(){
unsigned char a=0; //连击次数
unsigned int b=0; //等待时间

      while(1){
                if(key == 0){//按键按下
                delay10ms(); //延迟10ms
                a++; //连击次数+1
                b=0; //等待时间清零
                        if(a>=10){ //连击次数大于等于10
                        a=0; //连击次数清零
                        b=0; //等待时间清零
                        led=~led; //led翻转
                        }
                while(key == 0); //防止按键按住不放
                } else { //未按下
                delay10ms();
                        if(a>=1){ //连击次数大于等于1
                        b++; //等待时间+1
                              if(b>=100){ //1秒内未检测到按键
                              a=0;//连击次数清零
                              b=0;//等待时间清零
                              }
                        }
                }
               
      }
}


demon 发表于 2017-7-3 18:11:21

{:5_118:}现在还没接触单片机,只能单纯的四处暖(水)贴。消灭零回复。
页: [1]
查看完整版本: C51实现10连击翻转LED亮灭状态,对新手有帮助。