找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 800|回复: 0
打印 上一主题 下一主题
收起左侧

单片机流水灯

[复制链接]
跳转到指定楼层
楼主
ID:556736 发表于 2019-6-6 18:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "reg52.h"   
#include<intrins.h>
typedef unsigned int u16;   
typedef unsigned char u8;
sbit k1=P3^0;  
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
#define led P2
void delay(x)   
{
    u8 a,b;
    for(b=x;b>0;b--)
        for(a=113;a>0;a--);
}

void keypros()
{
  u8 i=0;
if(k1==0)    //检测按键K1是否按下
{
  delay(100);   //消除抖动
  if(k1==0)  //再次判断按键是否按下
  {
   
     led=0x00;
      delay(100);
    led=0xfe;
    for(i=0;i<8;i++)
    {
    led=~(led>>1);
    delay(100);
    }
   
    led=0xff;
    delay(100);
    for(i=0;i<8;i++)
    {
    led=led>>1;
    delay(100);
    }
  }
  while(!k1);  //检测按键是否松开
}  

if(k2==0)    //检测按键K2是否按下
{
  delay(100);   //消除抖动
  if(k2==0)  //再次判断按键是否按下
  {
   led=0x7f;
    delay(100);
     for(i=0;i<7;i++)
     {
     led=_cror_(led,1);
     delay(100);
     }
    led=0xff;
    delay(100);
    led=0xaa;
    delay(100);
     for(i=0;i<4;i++)
     {
     led=_crol_(led,1);
     delay(100);
     }
  }
  while(!k2);  //检测按键是否松开
}  

if(k3==0)    //检测按键K3是否按下
{
  delay(100);   //消除抖动
  if(k3==0)  //再次判断按键是否按下
  {
  led=0xcc;
    delay(50000);
    for(i=0;i<4;i++)
     {
     led=_crol_(led,2);
     delay(50000);
     }
  }
  while(!k3);  //检测按键是否松开
}  

if(k4==0)    //检测按键K4是否按下
{
  delay(100);   //消除抖动
  if(k4==0)  //再次判断按键是否按下
  {
   led=0xf0;
    delay(50000);
    for(i=0;i<4;i++)
     {
     led=_crol_(led,4);
     delay(50000);
     }
    led=0x00;
    delay(50000);
   
  }
  while(!k4);  //检测按键是否松开
}  
}

void main()
{
while(1)
{
  keypros();  //按键处理函数
}  
}



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表