找回密码
 立即注册
查看: 259|回复: 13

用P3.2做I/O的第三个中断按钮程序烧录后没有效果

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:121
  • 最近打卡:2025-05-02 08:41:13
已绑定手机

83

主题

286

回帖

395

积分

中级会员

积分
395
发表于 2025-1-25 13:56:08 | 显示全部楼层 |阅读模式
截图202501251354382424.jpg
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2025-1-25 14:16:12 | 显示全部楼层
可否给出完整的初始化程序?
有可能是没有打开对应引脚的IO中断使能?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1835

积分

金牌会员

积分
1835
发表于 2025-1-25 23:54:40 | 显示全部楼层
什么型号?多少脚的芯片?
超31号中断要打补丁或重定向,做了吗?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:121
  • 最近打卡:2025-05-02 08:41:13
已绑定手机

83

主题

286

回帖

395

积分

中级会员

积分
395
发表于 2025-1-26 09:13:38 | 显示全部楼层
王*** 发表于 2025-1-25 14:16
可否给出完整的初始化程序?
有可能是没有打开对应引脚的IO中断使能?

void P3_IO_Init(void)
{
        P3IM0 = 0X00;                //IO中断模式设置为了下降沿
        P3IM1 = 0Xff;
       
        P3INTE= 0X08;                //打开中断       
}

void P3_IO_ISR(void)        interrupt 40
{
        u8 intf;
       
        intf = P3INTF;
       
        if( intf )                        //判断也没有IO触发了中断
        {
                P3INTF = 0;
               
                if( intf & 0x08 )//判断是否是P33按钮按下
                {
                        passward[0] = 1;
                        //P01 = !P01;
                }
                if( intf & 0x04 )//判断是否是P32按钮按下
                {
                        passward[0] = 2;
                        //P01 = !P01;
                }               
        }
}


***
//main中:
        P3_IO_Init();                                                                        //IO中断初始化
        P4_IO_Init();
其他地方没变,就是I/O原例程,要做的是作业:抢答器,需要三个按键中断。

点评

P3IM0 = 0X00; //IO中断模式设置为了下降沿 P3IM1 = 0Xff; 这一句错误了 [attachimg]82951[/attachimg] 你现在设置的是低电平中断,也就是端口电平为低的时候会反复重复进入中断,可能导致一些奇怪  详情 回复 发表于 2025-1-26 09:39
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:121
  • 最近打卡:2025-05-02 08:41:13
已绑定手机

83

主题

286

回帖

395

积分

中级会员

积分
395
发表于 2025-1-26 09:14:34 | 显示全部楼层
王*** 发表于 2025-1-25 14:16
可否给出完整的初始化程序?
有可能是没有打开对应引脚的IO中断使能?

感谢回复与关注。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:121
  • 最近打卡:2025-05-02 08:41:13
已绑定手机

83

主题

286

回帖

395

积分

中级会员

积分
395
发表于 2025-1-26 09:24:16 | 显示全部楼层
Lkck*** 发表于 2025-1-25 23:54
什么型号?多少脚的芯片?
超31号中断要打补丁或重定向,做了吗?

感谢关注,是AI8051U V1.2 实验箱,第14集I/O中断例程的作业:抢答器,31号中断打补丁或重定向,例程能调的通,没有报错,两个按键的烧录例程没有问题,三个按键时P32/P34/P35都试过,用一个Init P3,两个P3.3/P3.2,是不是一个中断定义,控制不了多个端口呢?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2025-1-26 09:39:52 | 显示全部楼层
香河英*** 发表于 2025-1-26 09:13
void P3_IO_Init(void)
{
        P3IM0 = 0X00;                //IO中断模式设置为了下降沿

P3IM0 = 0X00;                //IO中断模式设置为了下降沿
P3IM1 = 0Xff;

这一句错误了
截图202501260938549499.jpg
你现在设置的是低电平中断,也就是端口电平为低的时候会反复重复进入中断,可能导致一些奇怪的问题。
改为
P3IM0 = 0X00;                //IO中断模式设置为了下降沿
P3IM1 = 0X00;
再试一下
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:121
  • 最近打卡:2025-05-02 08:41:13
已绑定手机

83

主题

286

回帖

395

积分

中级会员

积分
395
发表于 2025-1-27 11:08:23 | 显示全部楼层
王*** 发表于 2025-1-26 09:39
P3IM0 = 0X00;                //IO中断模式设置为了下降沿
P3IM1 = 0Xff;

感谢分享,我这就试试。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:121
  • 最近打卡:2025-05-02 08:41:13
已绑定手机

83

主题

286

回帖

395

积分

中级会员

积分
395
发表于 2025-1-27 13:32:33 | 显示全部楼层
王*** 发表于 2025-1-26 09:39
P3IM0 = 0X00;                //IO中断模式设置为了下降沿
P3IM1 = 0Xff;

感谢关注,试了P3.2/P3.3/P3.4/P3.5不能同时控制数码管和LED,不知道为什么。不知道知道是不是端口冲突,还是一个声明P3端口,下面的具体端口不能使用一个定义。

点评

只要按下按键能有效果就说明IO中断没有问题,至于不能同时控制的问题大概是程序的逻辑问题  详情 回复 发表于 2025-1-27 16:26
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2025-1-27 16:26:38 | 显示全部楼层
香河英*** 发表于 2025-1-27 13:32
感谢关注,试了P3.2/P3.3/P3.4/P3.5不能同时控制数码管和LED,不知道为什么。不知道知道是不是端口冲突, ...

只要按下按键能有效果就说明IO中断没有问题,至于不能同时控制的问题大概是程序的逻辑问题
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 09:03 , Processed in 0.131627 second(s), 110 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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