m0_61528815 2023-10-18 21:30 采纳率: 50%
浏览 7
已结题

51 为什么中断程序中只有KEY3有用

#51 为什么中断程序中只有KEY3有用


#include "reg52.h"

typedef unsigned int u16;    //对系统默认数据类型进行重定义
typedef unsigned char u8;

//定义LED1管脚
sbit LED1=P2^0;

//定义独立按键控制脚
sbit KEY1=P3^1;
sbit KEY2=P3^0 ;
sbit KEY3=P3^2;
sbit KEY4=P3^3;

#define SMG_A_DP_PORT    P0    //使用宏定义数码管段码口

//共阴极数码管显示0~F的段码数据
u8 gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

/*******************************************************************************
* 函 数 名       : delay_10us
* 函数功能         : 延时函数,ten_us=1时,大约延时10us
* 输    入       : ten_us
* 输    出         : 无
*******************************************************************************/
void delay_10us(u16 ten_us)
{
    while(ten_us--);    
}

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

    while(1)
    {            
                        
    }        
}

void exti0() interrupt 0 //外部中断0中断函数
{
    delay_10us(1000);//消斗
    if(KEY1==0)//判断按键是否按下
        SMG_A_DP_PORT=gsmg_code[0];//将数组第1个数据赋值给数码管段选口
  if(KEY2==0)
        SMG_A_DP_PORT=gsmg_code[1];
    if(KEY3==0)
        SMG_A_DP_PORT=gsmg_code[2];    
    if(KEY4==0)
        SMG_A_DP_PORT=gsmg_code[3];
}

```

  • 写回答

2条回答 默认 最新

  • qllaoda 2023-10-19 09:06
    关注

    因为只有KEY3在INT0引脚上,并且也开启了INT0中断,其它按键要么不在中断引脚,要么没开启中断,更没有对应的中断服务程序

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月27日
  • 已采纳回答 10月19日
  • 修改了问题 10月18日
  • 创建了问题 10月18日

悬赏问题

  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?
  • ¥15 各位佬,下面的问题怎么用python实现?
  • ¥15 CCF-CSP 2023 第三题 解压缩(50%)
  • ¥30 comfyui openpose报错
  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出