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

STC8H外部中断

[复制链接]
已绑定手机

11

主题

17

回帖

141

积分

注册会员

积分
141
发表于 2026-7-29 14:55:36 | 显示全部楼层 |阅读模式
STC8H4K64TLCD芯片  INT0和INT1 可以只配置上升沿中断吗?
回复

使用道具 举报 送花

865

主题

1万

回帖

2万

积分

管理员

积分
25104
发表于 2026-7-29 15:01:11 | 显示全部楼层
截图202607291500243474.jpg
回复

使用道具 举报 送花

865

主题

1万

回帖

2万

积分

管理员

积分
25104
发表于 2026-7-29 15:01:32 | 显示全部楼层

现在我已经获取了完整的资料,可以回答这个问题了。


关于 STC8H4K64TLCD 芯片 INT0/INT1 能否只配置上升沿中断

您好!我是 STC 的 FAE 工程师,针对您的问题,回答如下:

传统外部中断 INT0/INT1 的触发方式

根据 STC8H 系列手册「中断系统」 章节的说明,INT0 和 INT1 的触发方式由 IT0/IT1 位(在 TCON 寄存器中)控制:

  • IT0/IT1 = 0:上升沿和下降沿触发中断(即电平触发方式,低电平有效)
  • IT0/IT1 = 1:仅下降沿触发中断(边沿触发方式)

传统 INT0/INT1 的触发方式只有两种选择:"下降沿触发""低电平触发"不支持单独配置为上升沿触发

解决方案:使用"所有 I/O 口均可中断"功能

不过,STC8H4K64TLCD 芯片支持 "所有 I/O 口均可中断" 功能(详见手册「所有的I/O口均可中断,不是传统外部中断」章节)。根据手册中的功能支持表格:

产品线 I/O中断 I/O中断优先级 I/O中断唤醒功能
STC8H4K64TLCD系列 4级

●:有此功能,且功能正常

该功能支持 4 种独立的中断模式,通过 PxIM0 和 PxIM1 寄存器配置:

PnIM1.x PnIM0.x Pn.x口中断模式 掉电唤醒支持
0 0 下降沿中断 支持
0 1 上升沿中断 支持
1 0 低电平中断 不支持
1 1 高电平中断 不支持

所以,如果您需要只配置上升沿中断,可以使用 I/O 口中断功能,将对应引脚(如 P3.2/INT0 或 P3.3/INT1 所在的引脚)配置为上升沿中断模式。

示例代码(使用 I/O 口中断实现上升沿触发)

// 测试工作频率为11.0592MHz
#include "stc8h.h"
#include "intrins.h"

void main()
{
    P_SW2 |= 0x80;   // 使能访问XFR

    // 设置所有I/O口为准双向口
    P0M0 = 0x00; P0M1 = 0x00;
    P1M0 = 0x00; P1M1 = 0x00;
    P2M0 = 0x00; P2M1 = 0x00;
    P3M0 = 0x00; P3M1 = 0x00;
    P4M0 = 0x00; P4M1 = 0x00;
    P5M0 = 0x00; P5M1 = 0x00;

    // 以P3.2(INT0引脚)为例,配置为上升沿中断
    P3IM0 |= 0x04;   // P3.2 IM0 = 1
    P3IM1 &= ~0x04;  // P3.2 IM1 = 0  → 上升沿中断
    P3INTE |= 0x04;  // 使能P3.2口中断

    EA = 1;          // 开总中断

    while (1);
}

// 由于中断向量大于31,需借用第13号中断入口地址
// 同时需要在项目中添加ISR.ASM文件(见手册范例)
void common_isr() interrupt 13
{
    unsigned char intf;
    intf = P3INTF;
    if(intf)
    {
        P3INTF = 0x00;   // 清中断标志
        if(intf & 0x04)  // P3.2中断
        {
            // 上升沿触发,在此处添加您的处理代码
        }
    }
}

注意:由于 I/O 口中断的中断向量大于 31,Keil C51 默认不支持。您需要:

  1. 使用手册中提供的 ISR.ASM 跳转文件(将中断入口跳转到 13 号中断)
  2. 或者使用 Keil 中断向量拓展插件(运行"拓展Keil的C代码中断号.exe")

总结

方式 是否支持仅上升沿 说明
传统 INT0/INT1(TCON 寄存器控制) ❌ 不支持 仅支持下降沿或低电平
I/O 口中断功能(PxIM0/PxIM1 寄存器控制) 支持 可独立配置为上升沿中断

建议方案:使用 I/O 口中断功能,将 INT0/INT1 对应的引脚(P3.2/P3.3)配置为上升沿中断模式,即可实现您需要的功能。

信息来源:STC8H 系列手册「中断系统」章节及「所有的I/O口均可中断,不是传统外部中断」章节。


🔍 搜索 "https://www.stcaimcu.com/thread-25041-1-1.html"

⏱️ 查找用时 9.8s | 总回答用时 22.9s

回复

使用道具 举报 送花

865

主题

1万

回帖

2万

积分

管理员

积分
25104
发表于 2026-7-29 15:03:33 | 显示全部楼层
截图202607291503302167.jpg
回复

使用道具 举报 送花

865

主题

1万

回帖

2万

积分

管理员

积分
25104
发表于 2026-7-29 15:04:44 | 显示全部楼层
截图202607291504325544.jpg
回复

使用道具 举报 送花

83

主题

8216

回帖

1万

积分

超级版主

积分
17634
发表于 2026-7-29 15:48:53 | 显示全部楼层
INT0和INT1 不能只配置为上升沿中断,可以配置为 下降沿 或 下降沿+上升沿 中断。
但是,你可启用P3.2、P3.3的普通IO中断,可以设置为上升沿中断。
回复

使用道具 举报 送花

已绑定手机

52

主题

2860

回帖

3147

积分

荣誉版主

积分
3147
发表于 2026-7-29 17:23:07 | 显示全部楼层
可以增加一级三极管反相电路,既满足了逻辑要求,又保护了IO安全
~~~
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-9-22 11:34 , Processed in 0.091264 second(s), 69 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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