普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 1500|回复: 0

51单片机独立按键

[复制链接]

2

主题

9

帖子

50

积分

注册会员

Rank: 2

积分
50
发表于 2022-9-6 14:43:46 | 显示全部楼层 |阅读模式
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;

sbit KEY1=P3^1;
sbit KEY2=P3^0;
sbit KEY3=P3^2;
sbit KEY4=P3^3;
sbit LED1=P2^0;
#define KEY1_PRESS 1
#define KEY2_PRESS 2
#define KEY3_PRESS 3
#define KEY4_PRESS 4
#define KEY_UNPRESS 0

void delay_10us(u16 ten_us)
{   
          while(ten_us--);
}       
u8 key_scan(u8 mode)
{  
          static u8 key=1;
          if(mode)key=1;
          if(key=1&&(KEY1==0||KEY2==0||KEY3==0||KEY4==0))
    {
                          delay_10us(1000);
                          key=0;
                          if(KEY1==0)
                                    return KEY1_PRESS;
                                else if(KEY2==0)
                                    return KEY2_PRESS;
                                else if(KEY3==0)
                                    return KEY3_PRESS;
                                else if(KEY4==0)
                                    return KEY4_PRESS;
                }
                else if(KEY1==1&&KEY2==1&&KEY3==1&&KEY4==1)
                {
                          key=1;
                }
                    return KEY_UNPRESS;
}

void main()
{   
    u8 key=0;  
          while(1)
          {
                          key=key_scan(0);
                          if(key==KEY1_PRESS)
                                LED1=!LED1;
                          
          }
   
     
}
实验结果不是按一下亮按一下灭,请问问题出在哪里
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-27 16:38 , Processed in 0.347306 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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