找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机单个按钮(状态机)编程

[复制链接]
跳转到指定楼层
楼主
ID:164604 发表于 2018-4-6 17:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P3^7;
//uchar mode;
//uint count;
void keyscan();
void main()
{
         P3=0xff;
        while(1)
        {
                ;
                //delay();
                keyscan();
                //inst();
                ;
  }
}
void keyscan()
{
         static uchar mode=0;
   static long  count=0;//2»¶¨òåÎa¾2쬱äá¿»áèçoΡ
        switch(mode)
        {
         case 0:
           {
                         if(key1==0)
                         {
                                mode=1;
       }
     }
                break;
                case 1:
                {
                 count++;
     if(count>50)       
                 {
                         count=0;
                         if(key1)
                         {
                                mode=0;
        }
                                else
                                {
                                mode=2;       
        }                       
     }                                        
                }
                 break;
           case 2:
                 {
                         count++;
                         if(count>10000)
                         {
                                 count=0;
                                 mode=4;
       }         
     }                         
                break;
                case 4:
                {
                        if(key1)
                        {
                        P1=0x01;
                        mode=0;
      }
                        else
                        {
                        P1=0x2;
                        mode=5;
      }
    }       
                break;
                case 5:
                {
                        if(key1)
                        {
                                mode=0;
      }
    }       
  }

}

评分

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

查看全部评分

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

使用道具 举报

沙发
ID:164604 发表于 2018-4-6 17:58 | 只看该作者
短按P1输出1,长按P1输出2
回复

使用道具 举报

板凳
ID:66287 发表于 2018-7-26 16:18 | 只看该作者
写的不错,感谢分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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