找回密码
 立即注册
查看: 523|回复: 8

8H1K08外部中断0没有进入中断服务程序的问 | 已解决

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-08-30 11:21:10

2

主题

9

回帖

54

积分

注册会员

积分
54
发表于 2024-8-29 10:48:47 | 显示全部楼层 |阅读模式
以下是根据规格书中的例程编写的程序。发现无法进入到中断程序void INT0_Isr() interrupt 0中。有没有大神帮忙看一下这个是什么问题,谢谢!

u16 ac_cycle = 0;

void        Exti_init(void)
{

        P3M0 &= 0xFB;
        P3M1 &= 0xFB;
        IT0 = 0;                                                 //设置为上下沿中断
        EX0 = 1;
        EA = 1;
}

void INT0_Isr() interrupt 0
{

        ac_cycle = 3;

        
}
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-8-29 12:12:51 | 显示全部楼层
截图202408291212416479.jpg


#include "reg51.h"
#include "intrins.h"

sfr     P0M1    =   0x93;
sfr     P0M0    =   0x94;
sfr     P1M1    =   0x91;
sfr     P1M0    =   0x92;
sfr     P2M1    =   0x95;
sfr     P2M0    =   0x96;
sfr     P3M1    =   0xb1;
sfr     P3M0    =   0xb2;
sfr     P4M1    =   0xb3;
sfr     P4M0    =   0xb4;
sfr     P5M1    =   0xc9;
sfr     P5M0    =   0xca;

sbit    P10     =   P1^0;
sbit    P11     =   P1^1;
sbit    P32     =   P3^2;
sbit    P33     =   P3^3;

void INT0_Isr() interrupt 0
{
    if (P32)                                   //判断上升沿和下降沿
    {
        P10 = !P10;                             //测试端口
    }
    else
    {
        P11 = !P11;                             //测试端口
    }
}

void main()
{
    P0M0 = 0x00;
    P0M1 = 0x00;
    P1M0 = 0x00;
    P1M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;
    P3M0 = 0x00;
    P3M1 = 0x00;
    P4M0 = 0x00;
    P4M1 = 0x00;
    P5M0 = 0x00;
    P5M1 = 0x00;

    IT0 = 0;                                    //使能INT0上升沿和下降沿中断
    EX0 = 1;                                    //使能INT0中断
    EA = 1;

    while (1);
}


DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-08-30 11:21:10

2

主题

9

回帖

54

积分

注册会员

积分
54
发表于 2024-8-29 14:00:35 | 显示全部楼层
可以帮忙看一下我的程序哪里需要修改吗?谢谢!

点评

从代码层面看不出哪里有什么问题,有没有用示波器确认下P32的波形?  详情 回复 发表于 2024-8-29 15:24
回复 支持 反对

使用道具 举报 送花

7

主题

10

回帖

322

积分

中级会员

积分
322
发表于 2024-8-29 15:24:20 | 显示全部楼层
南太平*** 发表于 2024-8-29 14:00
可以帮忙看一下我的程序哪里需要修改吗?谢谢!

从代码层面看不出哪里有什么问题,有没有用示波器确认下P32的波形?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-08-30 11:21:10

2

主题

9

回帖

54

积分

注册会员

积分
54
发表于 2024-8-29 17:28:23 | 显示全部楼层
xtajm*** 发表于 2024-8-29 15:24
从代码层面看不出哪里有什么问题,有没有用示波器确认下P32的波形?

用示波器看是有方波输入的

点评

方便的话,完整的工程发一份  详情 回复 发表于 2024-8-29 20:19
回复 支持 反对

使用道具 举报 送花

7

主题

10

回帖

322

积分

中级会员

积分
322
发表于 2024-8-29 20:19:25 | 显示全部楼层
南太平*** 发表于 2024-8-29 17:28
用示波器看是有方波输入的

方便的话,完整的工程发一份
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:213
  • 最近打卡:2025-04-23 20:59:03
已绑定手机

36

主题

560

回帖

1885

积分

荣誉版主

积分
1885
发表于 2024-8-30 00:04:35 | 显示全部楼层
从程序看,你截取的外部中断初始化和中断函数没有问题。
但因为只有一部分,无法猜测你具体是如何触发外部中断的呢?
比如 ac_cycle = 0;进中断以后 ac_cycle = 3;,那是怎么进了中断的,最好是硬件连接和程序都来一份,大家帮你分析!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:213
  • 最近打卡:2025-04-23 20:59:03
已绑定手机

36

主题

560

回帖

1885

积分

荣誉版主

积分
1885
发表于 2024-8-30 00:14:40 | 显示全部楼层
看不到程序不能分析,你得自己看有没有触发外部中断,如果触发了再往下进行排查。

如果不方便发的话,以下是我自己写着玩的demo,你看看可以参考下。
先进行的是初始化
回答1.PNG

然后是具体的执行
回答2.PNG

最后附上中断函数
回答3.PNG




回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-08-30 11:21:10

2

主题

9

回帖

54

积分

注册会员

积分
54
发表于 2024-8-30 11:13:01 | 显示全部楼层
多谢大家的帮忙指正了!问题找到了,是STC的库函数和自己编写的函数有重合导致的。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 00:14 , Processed in 0.122527 second(s), 106 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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