【单片机期中测试】4.按键不同时长控制流水灯

简介: 【单片机期中测试】4.按键不同时长控制流水灯
#include<reg52.h>
#define uc unsigned char
sbit key = P3^1;
void delay(uc c)
{
  uc a,b;
  for(;c>0;c--)
    for(a=38;a>0;a--)
        for(b=130;b>0;b--);
}
void delay1(uc c1)
{
  uc a1,b1;
  for(;c1>0;c1--)
  {
    for(a1=38;a1>0;a1--)
        for(b1=130;b1>0;b1--);
      if(key == 0)
        return;
  }
}
uc state()     //长按返回1,单击返回2,双击返回3
{
  uc x=0;
  uc i=0,j=0;
  while(key == 0 && i<8)
  {
    delay(5);
    i++;
  }
  if(i>=8) 
    x=1;
  else
  {
    while(key==1 && j<8)
    {
      j++;
      delay(5);
    }
    if(key==0)
      x=3;
    if(j>=8)
      x=2;
  }
  return x;
}
void main()
{
  uc x,k=0x01;
  while(1)
  {  
     if(key == 0)
   {    
    x=state();  
    while(x==1)
    { 
      delay(1);
      while(key==0);
      delay(1);
      P2=~k;
      k<<=1;
      if(k==0) k=0x01;      
      delay1(20);
      if(key==0)
      {
        x=state(); k=0x01;
        break;
      }
    }   
    while(x==2)
    {       
      P2=0xff;
      if(key==0)
      {
        x=state();
        break;
      }
    }
    while(x==3)
    {   
      P2=0;   
      if(key==0)
      {
        x=state();
        break;
      }
    }       
   }
  }
}
  • 接线:key1接P3^1
相关文章
|
7天前
|
编译器 C语言 C++
【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)
【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)
定时器+按键控制LED流水灯模式+定时器时钟——“51单片机”
定时器+按键控制LED流水灯模式+定时器时钟——“51单片机”
|
7天前
|
C语言
独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位——“51单片机”
独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位——“51单片机”
|
7天前
|
C语言
###51单片机学习-----如何通过C语言运用延时函数设计LED流水灯
###51单片机学习-----如何通过C语言运用延时函数设计LED流水灯
87 0
|
9月前
单片机按键的使用
单片机按键的使用
127 0
|
8天前
|
缓存 编译器 索引
单片机中按键检测函数详细分析经典
单片机中按键检测函数详细分析经典
95 0
|
5月前
|
编解码 前端开发 安全
基于CW32F030单片机的便携式多功能测试笔
一、产品背景 在日常的硬件调试工作中,我们最常使用的仪器仪表可能就是万用表了,虽然万用表号称“万用”,但大部分时候,我们需要使用到的功能无非是电压测量和通断测量。 作为调试的“得力干将”,万用表有时候也会存在一些缺点和局限性,比如:体积较大不便于携带、无法直接反应逻辑电平情况而需要自己判断、不同型号万用表的通断档位阈值电阻不同等等,而最令人头大的,莫过于万用表的COM表笔通常需要接地,而pcb上可能没有直插孔位可以方便的固定笔尖,因此不得不用手辅助“黑表笔“,影响操作灵活性。 二、产品构思 对于这支测试笔,我对他的功能有以下期望: 1、电压测量+阈值判断,阈值电平可以根据需求自行设定
55 0
基于CW32F030单片机的便携式多功能测试笔
|
9月前
|
C语言
51单片机按键
学习按键处理
88 0
51单片机按键
|
9月前
【单片机期中测试】13.串口通信的应用(2)—— 超声波通过串口返回数据
【单片机期中测试】13.串口通信的应用(2)—— 超声波通过串口返回数据
85 0
|
9月前
【单片机期中测试】12.串口通信的应用(1)——两台单片机之间的通信
【单片机期中测试】12.串口通信的应用(1)——两台单片机之间的通信
93 0

热门文章

最新文章