NNSHOOT 发表于 2024-8-13 16:45:53

32G单片机的端口中断问题,急急~~

如果同时使用P1,P2,P3端口中断,该如何声明…例程中都是使用单一端口,然后跳转到13号中断~~在线等,感谢~~

DebugLab 发表于 2024-8-13 18:03:57


进中断判断PxINTF即可,记得清零



注意:





DebugLab 发表于 2024-8-13 18:09:20

可以全往13中断跳,然后软件读一下PxINTF
也可以使用中断号拓展插件,但是和REMOVEUNSED冲突
https://www.stcai.com/gjrj



DebugLab 发表于 2024-8-13 22:10:15

wnagming 发表于 2024-8-13 21:28
你说不让用上升沿和下降沿中断,那可以使用什么中断?

高电平低电平

DebugLab 发表于 2024-8-13 22:11:24

wnagming 发表于 2024-8-13 21:28
你说不让用上升沿和下降沿中断,那可以使用什么中断?
32G8K64应该可以用边沿中断

NNSHOOT 发表于 2024-8-14 10:14:00

DebugLab 发表于 2024-8-13 18:09
可以全往13中断跳,然后软件读一下PxINTF
也可以使用中断号拓展插件,但是和REMOVEUNSED冲突
https://www.s ...

你好,那怎么声明嘞,汇编程序?那能不能有些往中断13,有些往中断12?中断12也可以公用?

DebugLab 发表于 2024-8-14 10:23:01

NNSHOOT 发表于 2024-8-14 10:14
你好,那怎么声明嘞,汇编程序?那能不能有些往中断13,有些往中断12?中断12也可以公用? ...

中断12不是保留中断不要用

DebugLab 发表于 2024-8-14 10:33:02

NNSHOOT 发表于 2024-8-14 10:14
你好,那怎么声明嘞,汇编程序?那能不能有些往中断13,有些往中断12?中断12也可以公用? ...

        CSEG                AT FF0133H
        JMP                        FF006BH
        CSEG                AT FF013BH
        JMP                        FF006BH
        CSEG                AT FF0143H
        JMP                        FF006BH
       
        END

NNSHOOT 发表于 2024-8-14 13:29:13

DebugLab 发表于 2024-8-14 10:33
CSEG                AT FF0133H
        JMP                        FF006BH
        CSEG                AT FF013BH


谢谢

angmall 发表于 2024-8-14 13:51:00

你也可以参考梁工的写法。



//========================================================================
// 函数: AUXR_ISR(void) interrupt 13
// 描述: 扩展中断函数(中断号>=32的中断)
// 参数: none.
// 返回: none.
// 版本: VER1.0
// 日期: 2018-4-2
// 备注:
//========================================================================
u8        isr_index;
void        AUXR_ISR(void) interrupt 13
{
        u8        i;
        switch(isr_index)
        {
                case 32:                //0103H 波形发生器5 中断入口
                                                //用户中断处理代码
                break;

                case 33:                //010BH        波形发生器异常2 中断入口
                                                //用户中断处理代码
                break;

                case 34:                //0113H        波形发生器异常4 中断入口
                                                //用户中断处理代码
                break;

                case 35:                //011BH        触摸按键 中断入口
                                                //用户中断处理代码
                break;

                case 36:                //0123H        RTC 中断入口
                        i = RTCIF;
                        RTCIF = 0;                //中断标志, 0x80:闹钟中断, 0x40:日中断, 0x20:小时中断, 0x10:分钟中断, 0x08:秒中断, 0x04:1/2秒中断, 0x02:1/8秒中断, 0x01:1/32秒中断
                        if(i & 0x08)        //秒中断
                        {
                                B_1S = 1;                        //用户中断处理代码
                        }
                break;

                case 37:                //012BH        P0口中断入口
                                                //用户中断处理代码
                break;

                case 38:                //0133H        P1口中断入口
                                                //用户中断处理代码
                break;

                case 39:                //013BH        P2口中断入口
                                                //用户中断处理代码
                break;

                case 40:                //0143H        P3口中断入口
                                                //用户中断处理代码
                break;

                case 41:                //014BH        P4口中断入口
                                                //用户中断处理代码
                break;

                case 42:                //0153H        P5口中断入口
                                                //用户中断处理代码
                break;

                case 43:                //015BH        P6口中断入口
                                                //用户中断处理代码
                break;

                case 44:                //0163H        P7口中断入口
                                                //用户中断处理代码
                break;

                case 45:                //016BH        P8口中断入口
                                                //用户中断处理代码
                break;

                case 46:                //0173H        P9口中断入口
                                                //用户中断处理代码
                break;
               
                default:
                break;
        }
}


;isr.asm
        EXTRN DATA        (isr_index)

        CSEG        AT        0103H                ;32号 波形发生器5 中断入口
        MOV                isr_index, #32        ;标记中断号32
        LJMP        006BH                        ;跳转到中断号13的向量
       
        CSEG        AT        010BH                ;33号 波形发生器异常2 中断入口
        MOV                isr_index, #33        ;标记中断号33
        LJMP        006BH                        ;跳转到中断号13的向量
       
        CSEG        AT        0113H                ;34号 波形发生器异常4 中断入口
        MOV                isr_index, #34        ;标记中断号34
        LJMP        006BH                        ;跳转到中断号13的向量
       
        CSEG        AT        011BH                ;35号 触摸按键 中断入口
        MOV                isr_index, #35        ;标记中断号35
        LJMP        006BH                        ;跳转到中断号13的向量
       
        CSEG        AT        0123H                ;36号 RTC 中断入口
        MOV                isr_index, #36        ;标记中断号36
        LJMP        006BH                        ;跳转到中断号13的向量
       
        CSEG        AT        012BH                ;37号 P0口中断入口
        MOV                isr_index, #37        ;标记中断号37
        LJMP        006BH                        ;跳转到中断号13的向量

        CSEG        AT        0133H                ;38号 P1口中断入口
        MOV                isr_index, #38        ;标记中断号38
        LJMP        006BH                        ;跳转到中断号13的向量
       
        CSEG        AT        013BH                ;39号 P2口中断入口
        MOV                isr_index, #39        ;标记中断号39
        LJMP        006BH                        ;跳转到中断号13的向量
       
        CSEG        AT        0143H                ;40号 P3口中断入口
        MOV                isr_index, #40        ;标记中断号40
        LJMP        006BH                        ;跳转到中断号13的向量
       
        CSEG        AT        014BH                ;41号 P4口中断入口
        MOV                isr_index, #41        ;标记中断号41
        LJMP        006BH                        ;跳转到中断号13的向量
       
        CSEG        AT        0153H                ;42号 P5口中断入口
        MOV                isr_index, #42        ;标记中断号42
        LJMP        006BH                        ;跳转到中断号13的向量
       
        CSEG        AT        015BH                ;43号 P6口中断入口
        MOV                isr_index, #43        ;标记中断号43
        LJMP        006BH                        ;跳转到中断号13的向量
       
        CSEG        AT        0163H                ;44号 P7口中断入口
        MOV                isr_index, #44        ;标记中断号44
        LJMP        006BH                        ;跳转到中断号13的向量
       
        CSEG        AT        016BH                ;45号 P8口中断入口
        MOV                isr_index, #45        ;标记中断号45
        LJMP        006BH                        ;跳转到中断号13的向量
       
        CSEG        AT        0173H                ;46号 P9口中断入口
        MOV                isr_index, #46        ;标记中断号46
        LJMP        006BH                        ;跳转到中断号13的向量
       
       
        END
页: [1]
查看完整版本: 32G单片机的端口中断问题,急急~~