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

求助大佬,为什么普通IO口中断设置受P_SW2寄存器的影响?

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2024-11-16 11:36:36

8

主题

9

回帖

214

积分

中级会员

积分
214
发表于 2023-5-28 12:10:21 | 显示全部楼层 |阅读模式

求助大佬,为什么普通IO口中断设置受P_SW2寄存器的影响?

源码如下:

void main(void)
{
                EAXFR = 1;                                                                         // ʹÄÜ·ÃÎÊ XFR
                CKCON = 0x00;                                                         // ÉèÖÃÍⲿÊý¾Ý×ÜÏßËÙ¶ÈΪ×î¿ì
                WTST = 0x00;                                                                // ÉèÖóÌÐò´úÂëµÈ´ý²ÎÊý£¬µÈ´ýʱ¼äΪ0¸öʱÖÓ£¬CPUÖ´ÐгÌÐòËÙ¶È×î¿ì

//    P_SW2 |= 0x80;
    CLKDIV = 0;                                //24MHzÖ÷Ƶ£¬·ÖƵÉèÖÃ
//    P_SW2 &= 0x7F;

          P0M0 = 0x00;    P0M1 = 0x00;
    P1M0 = 0x00;    P1M1 = 0x00;
    P2M0 = 0x00;    P2M1 = 0x00;
    P3M0 = 0x00;    P3M1 = 0x00;
    P4M0 = 0x00;    P4M1 = 0x00;
    P5M0 = 0x00;    P5M1 = 0x00;
    P6M0 = 0x00;    P6M1 = 0x00;
    P7M0 = 0x20;    P7M1 = 0x00;

                P0IM1 = 0x00;P0IM0 = 0x00;        // P0.0ÉèÖÃΪϽµÑØ´¥·¢
//        P0IM1 = 0x00;P0IM0 = 0x01;        // P0.0ÉèÖÃΪÉÏÉýÑØ´¥·¢
//        P0IM1 = 0x01;P0IM0 = 0x00;        // P0.0ÉèÖÃΪµÍµçƽ´¥·¢
//        P0IM1 = 0x01;P0IM0 = 0x01;        // P0.0ÉèÖÃΪ¸ßµçƽ´¥·¢

                P0INTE = 0x01;                                                        // ʹÄÜP0.0¿ÚÖжÏ
                EA = 1;       

        while(1)
        {

其中的
//    P_SW2 |= 0x80;
//    P_SW2 &= 0x7F;
注释去掉之后,P0.0的端口中断就失效了,查了芯片手册,这样设置也没有发现有冲突呀,感觉有点奇怪,求了解的大佬指点,谢谢!
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:100
  • 最近打卡:2025-06-17 08:13:13

734

主题

1万

回帖

1万

积分

管理员

积分
16690
发表于 2023-5-28 12:15:27 | 显示全部楼层
扩展的 XFR 要能被访问,要设置允许访问
1.png

打开允许访问后,不要关闭
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:95
  • 最近打卡:2025-06-17 10:15:05

74

主题

6094

回帖

1万

积分

超级版主

积分
12735
发表于 2023-5-28 13:11:53 | 显示全部楼层
IO中断寄存器是扩展寄存器,访问扩展寄存器必须要P_SW2的最高位为1才能访问。
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-05-11 21:30:30
已绑定手机

4

主题

9

回帖

94

积分

注册会员

积分
94
发表于 2023-10-22 16:39:50 | 显示全部楼层
梁*** 发表于 2023-5-28 13:11
IO中断寄存器是扩展寄存器,访问扩展寄存器必须要P_SW2的最高位为1才能访问。 ...

老师您好,最近在学习STC32,按照网上的一些教程来不知道为何IO口的中断始终无法进入。
已经使用了KEIL中断号扩展工具,编译也没有发生错误。
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4716
代码整理到了这个贴上,属实困扰了许久,求助大佬能指点下
(另外不知道有没有不适用中断13号的IO中断例程?)

点评

/************* 功能说明 ************** 请先别修改程序, 直接下载"Objects"里的"interrupt.hex"测试, 主频选择11.0592MHZ. 测试正常后再修改移植. 由于使用的中断号超过了31,所以KEIL C251编译器要拓展Keil的C代  详情 回复 发表于 2023-10-23 12:10
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:95
  • 最近打卡:2025-06-17 10:15:05

74

主题

6094

回帖

1万

积分

超级版主

积分
12735
发表于 2023-10-23 12:10:08 | 显示全部楼层
本帖最后由 梁工 于 2023-10-23 12:11 编辑
9DH*** 发表于 2023-10-22 16:39
老师您好,最近在学习STC32,按照网上的一些教程来不知道为何IO口的中断始终无法进入。
已经使用了KEIL中 ...
不需要借用13号中断的程序,直接使用对应的中断号。

/*************        功能说明        **************

请先别修改程序, 直接下载"Objects"里的"interrupt.hex"测试, 主频选择11.0592MHZ. 测试正常后再修改移植.
由于使用的中断号超过了31,所以KEIL C251编译器要拓展Keil的C代码中断号, 运行一下"拓展Keil的C代码中断号.exe"即可。

P0~P7所有IO中断测试程序.
P0.0~P0.7中断对应取反P1.0~P1.7输出指示。
P1.0~P1.7中断对应取反P0.0~P0.7输出指示。
P2.0~P2.7中断对应取反P4.0~P4.7输出指示。
P3.0~P3.7中断对应取反P4.0~P4.7输出指示。
P4.0~P4.7中断对应取反P2.0~P2.7输出指示。
P5.0~P5.7中断对应取反P4.0~P4.7输出指示。
P6.0~P6.7中断对应取反P7.0~P7.7输出指示。
P7.0~P7.7中断对应取反P6.0~P6.7输出指示。

由于IO有限, 本例子只设置了P0.0~P0.7和P2.0~P2.7的中断, 中断函数分别取反P1.0~P1.7和P4.0~P4.7来指示进入中断.
用户可以根据例子随意设置自己需要的IO中断.
主函数取反P3.3输出一个方波信号, 方便用户测试.

******************************************/

STC32-外部中断相关程序.rar (57.1 KB, 下载次数: 88)



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-05-11 21:30:30
已绑定手机

4

主题

9

回帖

94

积分

注册会员

积分
94
发表于 2023-10-23 12:49:52 | 显示全部楼层
梁*** 发表于 2023-10-23 12:10
不需要借用13号中断的程序,直接使用对应的中断号。

/*************        功能说明        ************ ...

谢谢梁老师~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:263
  • 最近打卡:2025-04-03 13:38:29

10

主题

52

回帖

1356

积分

金牌会员

积分
1356
发表于 2023-10-27 10:40:54 | 显示全部楼层
因为STC好多系列单片机是在传统80C51上升级了,扩展了好多功能,这些功能的使用要通过特殊功能寄存器来规定,传统单片机中内部特殊功能寄存器范围80H-FFH不够用,因此扩展了外部SFR,你要使用这一部分的SFR就要先允许开通这个区间后再用,也就用P_SW2 |= 0x80;来开通,显然P_SW2这个SFR肯定在内部80H-FFH范围内。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-18 07:51 , Processed in 0.332956 second(s), 92 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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