找回密码
 立即注册
查看: 110|回复: 6

STC15W413AS有几个外部中断 | 挺好

[复制链接]

47

主题

151

回帖

736

积分

高级会员

积分
736
发表于 2026-8-28 09:24:44 | 显示全部楼层 |阅读模式
AS.jpg SA.png
ISP APP封装脚位找不到相关信息
可能和16S一个系列的吧
PDF文档也很难匹配到这个型号资料
现在STC芯片型号很多
找对应型号芯片资料比较困难



回复

使用道具 举报 送花

47

主题

151

回帖

736

积分

高级会员

积分
736
 楼主| 发表于 2026-8-28 09:41:25 | 显示全部楼层
问Ai了
现在我已经获得了足够的信息来编写程序。让我整理一下STC15W4K32S4系列的外部中断信息:

外部中断引脚:

    INT0 → P3.2,上升沿/下降沿均可触发(IT0=0),或仅下降沿(IT0=1)
    INT1 → P3.3,上升沿/下降沿均可触发(IT1=0),或仅下降沿(IT1=1)
    INT2 → P3.6,仅下降沿触发
    INT3 → P3.7,仅下降沿触发
    INT4 → P3.0,仅下降沿触发

中断向量/中断号:

    INT0 → interrupt 0
    INT1 → interrupt 2
    INT2 → interrupt 10
    INT3 → interrupt 11
    INT4 → interrupt 16

中断寄存器:

    INT0/INT1:IE寄存器中的EX0/EX1,TCON中的IT0/IT1
    INT2/INT3/INT4:INT_CLKO(8FH)寄存器中的EX2/EX3/EX4位,加上EA总中断

现在需要确认用户所说的"STC15W413"具体对应哪个型号。根据STC15系列命名规则,STC15W4K32S4是STC15W系列中的大容量型号。用户可能指的是STC15W4K32S4系列。

我需要确认一下,根据您提到的"STC15W413",这可能是STC15W4K32S4系列中的一个具体型号,但我需要确认。让我查阅STC15系列的命名规则。

根据已有的信息,STC15W4K32S4系列包含了多种封装和存储大小。用户说的"STC15W413"很可能指的是STC15W4K32S4系列。不过为保险起见,我需要确认这个型号是否在手册中有特别说明。

现在我已经有充分的信息来编写完整的程序。让我确认一下用户需要的功能:所有外部中断(INT0/INT1/INT2/INT3/INT4),每个中断对应一个IO口取反。

我将编写完整的代码,每个中断服务程序中翻转一个不同的IO口。

由于需要确定输出引脚,让我设计合理的IO口分配。根据手册说明,INT0=P3.2、INT1=P3.3、INT2=P3.6、INT3=P3.7、INT4=P3.0。我们可以将对应的输出引脚分配到其他IO口,比如P1.0-P1.4等。

不过,在编写代码前,我需要确认一点:您说的"STC15W413"具体是指哪一个型号?是STC15W4K32S4系列吗?让我再确认一下命名规则。

根据STC15系列命名规则,STC15W4K32S4系列是STC15系列中功能最强大的型号,具有4K SRAM、32K Flash。用户说的"STC15W413"可能是简写或误写。

我直接按照STC15W4K32S4系列来编写这个程序,因为这个系列是STC15系列中外部中断功能最完整的。现在让我编写完整的代码。

根据手册信息,我已经为您整理好了完整的代码。关于您的型号,STC15W4K32S4系列(STC15W413可能指该系列)提供5个外部中断:INT0、INT1、INT2、INT3、INT4。下面为您编写完整的程序。
STC15W4K32S4 五个外部中断 - 每个中断对应一个IO口取反
外部中断引脚及中断号汇总

根据手册《STC15系列单片机的中断系统》章节:
中断         引脚         中断号         触发方式         中断允许位
INT0         P3.2         0         上升沿/下降沿或仅下降沿         EX0
INT1         P3.3         2         上升沿/下降沿或仅下降沿         EX1
INT2         P3.6         10         仅下降沿         EX2 (INT_CLKO.4)
INT3         P3.7         11         仅下降沿         EX3 (INT_CLKO.5)
INT4         P3.0         16         仅下降沿         EX4 (INT_CLKO.6)
完整代码

/*---------------------------------------------------------------------*/
/* STC15W4K32S4系列 五个外部中断程序                                     */
/* 每个外部中断对应一个IO口取反                                         */
/*                                                                      */
/* 中断引脚分配:                                                        */
/*   INT0 -> P3.2 (中断号0)  -> 取反 P1.0                              */
/*   INT1 -> P3.3 (中断号2)  -> 取反 P1.1                              */
/*   INT2 -> P3.6 (中断号10) -> 取反 P1.2                              */
/*   INT3 -> P3.7 (中断号11) -> 取反 P1.3                              */
/*   INT4 -> P3.0 (中断号16) -> 取反 P1.4                              */
/*                                                                      */
/* 编译环境: Keil C51,选择 Intel 8052 编译                             */
/* 头文件: 包含 reg51.h 即可                                            */
/*---------------------------------------------------------------------*/

#include <reg51.h>
#include <intrins.h>

/* 特殊功能寄存器定义(需手动声明) */
sfr INT_CLKO = 0x8F;    /* 外部中断2/3/4允许寄存器 */
sfr P1M1 = 0x91;        /* P1口模式控制寄存器1 */
sfr P1M0 = 0x92;        /* P1口模式控制寄存器0 */
sfr P3M1 = 0xB1;        /* P3口模式控制寄存器1 */
sfr P3M0 = 0xB2;        /* P3口模式控制寄存器0 */

/* 输出引脚定义 */
sbit LED_OUT0 = P1^0;   /* INT0触发时取反 */
sbit LED_OUT1 = P1^1;   /* INT1触发时取反 */
sbit LED_OUT2 = P1^2;   /* INT2触发时取反 */
sbit LED_OUT3 = P1^3;   /* INT3触发时取反 */
sbit LED_OUT4 = P1^4;   /* INT4触发时取反 */

/*---------------------------------------------------------------------*/
/* 主函数                                                              */
/*---------------------------------------------------------------------*/
void main(void)
{
    /* 1. 配置输出引脚P1.0~P1.4为推挽输出(强上拉) */
    /*    P1M1和P1M0对应位: 0/1 = 推挽输出 */
    P1M1 = 0x00;    /* P1.0~P1.7 均为推挽输出 */
    P1M0 = 0x1F;    /* 仅P1.0~P1.4为推挽输出(低5位) */
    /* 实际上推挽需要P1M1=0, P1M0=1 */
   
    /* 2. 配置外部中断输入引脚P3.2/P3.3/P3.6/P3.7/P3.0 */
    /*    作为输入使用,需设置为高阻输入 */
    P3M1 = 0xCD;    /* P3.0/P3.2/P3.3/P3.6/P3.7 高阻输入 */
    P3M0 = 0x00;   
    /* 详细位: P3.0=1, P3.1=0, P3.2=1, P3.3=1, P3.4=0, P3.5=0, P3.6=1, P3.7=1 */
    /* P3M1: 1 1 0 0 1 1 1 0 = 0xCE 不对,重新计算 */
   
    /* 重新计算:P3.0、P3.2、P3.3、P3.6、P3.7 需要高阻输入 */
    /* P3M1对应位为1, P3M0对应位为0 → 高阻输入 */
    /* bit7=P3.7=1, bit6=P3.6=1, bit5=P3.5=0, bit4=P3.4=0 */
    /* bit3=P3.3=1, bit2=P3.2=1, bit1=P3.1=0, bit0=P3.0=1 */
    /* P3M1 = 1100 1111 = 0xCF */
    P3M1 = 0xCF;    /* P3.0/P3.2/P3.3/P3.6/P3.7 高阻输入 */
    P3M0 = 0x00;    /* 其余为准双向 */
   
    /* 3. 配置外部中断触发方式 */
    /*    IT0=0: INT0上升沿/下降沿均可触发 */
    /*    IT1=0: INT1上升沿/下降沿均可触发 */
    /*    IT0=1: 仅下降沿。这里设为0, 双沿触发 */
    TCON &= 0xFC;   /* IT0=0, IT1=0, 上升沿/下降沿均可触发 */
   
    /* 4. 开启中断 */
    EX0 = 1;        /* 允许INT0中断 */
    EX1 = 1;        /* 允许INT1中断 */
   
    /* INT2/INT3/INT4 中断允许位在INT_CLKO寄存器中 */
    INT_CLKO |= 0x70;   /* EX4=1, EX3=1, EX2=1 (BIT6/5/4) */
   
    /* 5. 打开总中断 */
    EA = 1;
   
    /* 6. 初始化输出引脚电平 */
    LED_OUT0 = 0;
    LED_OUT1 = 0;
    LED_OUT2 = 0;
    LED_OUT3 = 0;
    LED_OUT4 = 0;
   
    /* 主循环 */
    while(1)
    {
        /* 主程序可以执行其他任务 */
    }
}

/*---------------------------------------------------------------------*/
/* 外部中断0服务程序 (INT0 -> P3.2)                                    */
/*---------------------------------------------------------------------*/
void INT0_Routine(void) interrupt 0
{
    LED_OUT0 = ~LED_OUT0;   /* P1.0取反 */
}

/*---------------------------------------------------------------------*/
/* 外部中断1服务程序 (INT1 -> P3.3)                                    */
/*---------------------------------------------------------------------*/
void INT1_Routine(void) interrupt 2
{
    LED_OUT1 = ~LED_OUT1;   /* P1.1取反 */
}

/*---------------------------------------------------------------------*/
/* 外部中断2服务程序 (INT2 -> P3.6)                                    */
/*---------------------------------------------------------------------*/
void INT2_Routine(void) interrupt 10
{
    LED_OUT2 = ~LED_OUT2;   /* P1.2取反 */
}

/*---------------------------------------------------------------------*/
/* 外部中断3服务程序 (INT3 -> P3.7)                                    */
/*---------------------------------------------------------------------*/
void INT3_Routine(void) interrupt 11
{
    LED_OUT3 = ~LED_OUT3;   /* P1.3取反 */
}

/*---------------------------------------------------------------------*/
/* 外部中断4服务程序 (INT4 -> P3.0)                                    */
/*---------------------------------------------------------------------*/
void INT4_Routine(void) interrupt 16
{
    LED_OUT4 = ~LED_OUT4;   /* P1.4取反 */
}

关键说明

根据手册《中断系统》章节:

    INT0/INT1(P3.2/P3.3)的触发方式由 TCON 寄存器中的 IT0/IT1 控制:
        ITx=0:上升沿或下降沿均可触发
        ITx=1:仅下降沿触发

    INT2/INT3/INT4(P3.6/P3.7/P3.0)只能下降沿触发,由 INT_CLKO(地址0x8F)寄存器控制:
        EX2(bit4)、EX3(bit5)、EX4(bit6)来允许中断

    P3M1/P3M0 用于配置P3口的输入/输出模式,外部中断引脚建议配置为高阻输入模式(P3M1对应位=1,P3M0对应位=0)。

    P1M1/P1M0 用于配置P1口的输出模式,输出引脚(取反的IO口)配置为推挽输出模式(P3M1=0,P3M0=1)以增强驱动能力。

注意事项

    外部中断2/3/4为固定最低优先级,若需要更高优先级请考虑使用INT0/INT1。
    每个中断引脚输入信号至少需要维持2个时钟周期以确保被检测到。
    若使用INT0/INT1作为按键输入,建议按键接到VCC(上拉),按键按下时产生下降沿触发;或按键接地,按键释放时产生上升沿触发(需设置IT0/IT1=0)。

如果您需要将某个中断改为仅下降沿触发,请将 TCON 中的相应位置1(IT0=1 或 IT1=1)。如需调整输出IO口或中断触发方式,请告诉我具体需求,我可以进一步修改。

🔍 搜索 "STC15W413 外部中断 程序 引脚取反"

📌 相关论坛讨论

    STC15W413AS有几个外部中断
    IAP15W4K61S4 LQFP64封装脚位是怎么排列的
    所有普通I/O口都支持的外部中断演示程序,8H系列、32G系列, 中断号37~44

⏱️ 查找用时 19.3s | 总回答用时 46.2s
回复

使用道具 举报 送花

33

主题

3078

回帖

7172

积分

论坛元老

积分
7172
发表于 2026-8-28 09:52:46 | 显示全部楼层
AI: 您好!我是 STC AI 技术助手,已加载 STC全系列MCU专业技术手册。我可以帮您:- 回答STC技术手册中的技术问题- 自动生成您需要的通用MCU程序- 自动高效排查您程序中的错误- 搜索论坛(www.STCAIMCU.com)历史讨论- 点此可跳转 Web-ISP 在线下载工具- 您喜爱的Agent工具也可接入 STC数据手册MCP服务器和可以自动控制STC-ISP的MCP服务- MCP服务可以让AI帮您参考手册写程序,控制STC-ISP自动下载程序,享受全自动请问您有什么STC技术问题需要帮助 ?

我: STC15W413AS有几个外部中断

AI: 从选型表来看,STC15W408AS系列中包含的型号有:STC15W401AS、STC15W402AS、STC15W404AS、STC15W408AS、IAP15W413AS、IRC15W415AS等。我没有直接看到"STC15W413AS"这个具体型号(注意IAP15W413AS是IAP版本),但用户问的可能是IAP15W413AS或者STC15W413AS这个型号。

从选型表中可以看到,IAP15W413AS属于**STC15W408AS系列**。那么从前面中断系统的表格中,STC15W408AS系列支持:
- 外部中断0 (INT0) √
- 外部中断1 (INT1) √
- 外部中断2 (INT2) √
- 外部中断3 (INT3) √
- 外部中断4 (INT4) √

让我再确认一下用户所说的STC15W413AS是否就是IAP15W413AS,以及这个型号是否确实属于STC15W408AS系列。从手册中可以看到,IAP15W413AS是属于STC15W408AS系列的型号。但用户写的是"STC15W413AS",可能就是指这个系列的某个型号。

让我再看一下中断系统中关于外部中断的具体支持情况,确认STC15W408AS系列的外部中断具体是哪些。

从前面中断源表格中可以看到,**STC15W408AS系列**的外部中断状态:
- 外部中断0 (INT0):√
- 外部中断1 (INT1):√
- 外部中断2 (INT2):√
- 外部中断3 (INT3):√
- 外部中断4 (INT4):√

所以我确认,STC15W408AS系列(包含IAP15W413AS等型号)**共有5个外部中断**:INT0、INT1、INT2、INT3、INT4。

---

根据STC15系列手册查询结果,我来为您解答:

## STC15W413AS 的外部中断数量

**STC15W413AS**(属于 **STC15W408AS 系列**,与之同系列还包括 STC15W401AS、STC15W402AS、STC15W404AS、STC15W408AS、IAP15W413AS 等型号)**共有 5 个外部中断**:

| 外部中断 | 支持情况 |
|---------|---------|
| 外部中断0 (INT0) | √ |
| 外部中断1 (INT1) | √ |
| 外部中断2 (INT2) | √ |
| 外部中断3 (INT3) | √ |
| 外部中断4 (INT4) | √ |

**说明:**
- 这 5 个外部中断分别为 **INT0 ~ INT4**,均支持掉电唤醒功能(选型表中"标准外部中断支持掉电唤醒"列显示"5")。
- 在 STC15 系列中,INT2、INT3、INT4 为**上升沿触发**(不可配置),而 INT0、INT1 可通过 $IT0$/$IT1$ 位配置上升沿或下降沿触发。
- 需要特别注意的是,这些型号支持的是**标准外部中断**,而非像 STC8H 等系列那样所有 I/O 口均可中断的功能。

如需了解各外部中断的具体引脚分配或中断号/优先级配置,欢迎继续提问!

**信息来源**:《STC15系列手册》第「17 中断系统」章及第「3 STC15系列选型简介」章。

---

[🔍 搜索 "STC15W413AS有几个外部中断"](https://www.stcaimcu.com/plugin. ... relevance&fid=0)

**📌 相关论坛讨论**
1. [STC15W413AS有几个外部中断](https://www.stcaimcu.com/forum.p ... mp;extra=#pid230574)
2. [IAP15W413AS](https://www.stcaimcu.com/forum.p ... amp;extra=#pid82011)
3. [STC15W408AS外部中断不触发](https://www.stcaimcu.com/forum.p ... amp;extra=#pid68345)

⏱️ 查找用时 10.2s | 总回答用时 18.6s
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

16

主题

936

回帖

4169

积分

超级版主

积分
4169
发表于 2026-8-28 09:54:50 | 显示全部楼层
截图202608280953215020.jpg

属于STC15W408AS系列
数据手册:https://www.stcaimcu.com/data/download/Datasheet/STC15-CN.pdf
回复

使用道具 举报 送花

已绑定手机

7

主题

411

回帖

6598

积分

论坛元老

积分
6598
发表于 2026-8-28 10:02:54 | 显示全部楼层
《STC15系列规格书》里应该有这型号,属于STC15W401AS系列。
除了上面说的INT0~INT4外,还可以用PCA的捕获功能来实现3个外中断(CCP0、CCP1、CCP2)。
此外,STC8A、STC8H(部份型号)、STC32G、AI8051U等支持IO口中断(注意看手册),基本相当于每个IO都能“外中断”。

傲游截图20260828101027.jpg

回复

使用道具 举报 送花

83

主题

8219

回帖

1万

积分

超级版主

积分
17644
发表于 2026-8-28 10:47:44 | 显示全部楼层
    INT0 → P3.2,上升沿/下降沿均可触发(IT0=0),或仅下降沿(IT0=1)
    INT1 → P3.3,上升沿/下降沿均可触发(IT1=0),或仅下降沿(IT1=1)
    INT2 → P3.6,仅下降沿触发
    INT3 → P3.7,仅下降沿触发
    INT4 → P3.0,仅下降沿触发
回复

使用道具 举报 送花

47

主题

151

回帖

736

积分

高级会员

积分
736
 楼主| 发表于 2026-8-28 11:01:27 | 显示全部楼层
谢谢 挺好.
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-9-23 15:05 , Processed in 0.070846 second(s), 68 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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