kwl100 2021-10-17 10:06 采纳率: 93.3%
浏览 22
已结题

怎么把K3与K4两个键的功能合并成一个键(就是一个键控制暂停与回复)


#include <reg52.h>
#include <math.h>

typedef unsigned int  u16;
typedef unsigned char  u8;

#define SMG_A_DP_PORT    P0
#define  LED_PORT  P2


 sbit LSA=P2^2;            //定义位选端口
sbit LSB=P2^3;            //同上
sbit LSC=P2^4;            //同上
sbit wela=P2^7;



//定义独立按键K4控制脚
sbit KEY4=P3^3;
sbit KEY3=P3^2; 

u8 gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                0x7f,0x6f,0x77,0x39,0x5e,0x79,0x71};//数组

void delay_10us(u16 ten_us)
{
    while(ten_us--);
}

//目标:先亮0123456,再亮最后一位//

void smg_display(void)
{
    u8 i=0;
    u8 j=0;
            for(i=0;i<7;i++)
            {
                switch(i)
                {
            
            case 0: LSC=1;LSB=1;LSA=1;break;
            case 1: LSC=1;LSB=1;LSA=0;break;
            case 2: LSC=1;LSB=0;LSA=1;break;
            case 3: LSC=1;LSB=0;LSA=0;break;
            case 4: LSC=0;LSB=1;LSA=1;break;
            case 5: LSC=0;LSB=1;LSA=0;break;
            case 6: LSC=0;LSB=0;LSA=1;break;
            case 7: LSC=0;LSB=0;LSA=1;
                        for(j=0;j<10;j++)
                        {
                            SMG_A_DP_PORT=gsmg_code[j];
                            delay_10us(640000);                
                        }
                                    
                }
        
          SMG_A_DP_PORT=gsmg_code[i];
        delay_10us(100);
        SMG_A_DP_PORT=0x00;
        
            }
        
}

void LED()
{
    u8 i=0;
      SMG_A_DP_PORT=0x00;    //消除开始时的数码管的显示
            for(i=0;i<7;i++)
        {
            LED_PORT=0xfe<<i;
            delay_10us(640000);
        }
        for(i=0;i<8;i++)
        {
             LED_PORT=~(0xff>>i);
            delay_10us(640000);
        }
        LED_PORT=0xff;
        delay_10us(640000);
}

 void exti1_init(void)
{
    IT1=1;//跳变沿触发方式(下降沿)
    EX1=1;//打开INT1的中断允许
    EA=1;//打开总中断
}
 void exti0_init(void)
{
    IT0=1;//跳变沿触发方式(下降沿)
    EX0=1;//打开INT0()的中断允许
    EA=1;//打开总中断
}

void main()
{
      exti1_init();//外部中断1配置
     exti0_init();
      while(1)
      {    
        smg_display();
          LED();
    
      }
}
void INT_1() interrupt 2 //外部中断1中断函数
{
    while(1)
    {
        delay_10us(10);
        if(KEY3==0)
        {
            KEY3=!KEY3;
        }
        else
        if(KEY4==0)
            {    
               break;
        
            }
    }
   
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 10月25日
    • 创建了问题 10月17日

    悬赏问题

    • ¥15 Android Navigation: 某XDirections类不能自动生成
    • ¥20 C#上传XML格式数据
    • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
    • ¥100 单片机hardfaulr
    • ¥20 手机截图相片分辨率降低一半
    • ¥50 求一段sql语句,遇到小难题了,可以50米解决
    • ¥15 速求,对多种商品的购买力优化问题(用遗传算法、枚举法、粒子群算法、模拟退火算法等方法求解)
    • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
    • ¥15 虚拟机检测,可以是封装好的DLL,可付费
    • ¥15 kafka无法正常启动(只启动了一瞬间会然后挂了)