aoteman 发表于 2025-4-27 11:01:30

DebugLab 发表于 2025-4-27 10:57
打开EAXFR呢,没看到,检查错误上来就先看EAXFR和PxMx
https://www.stcaimcu.com/forum.php?mod=viewthread ...

好的,我来加上

DebugLab 发表于 2025-4-27 11:24:13

aoteman 发表于 2025-4-27 11:01
好的,我来加上


需要设置的寄存器如下,按需要设置
初始化:

//PxINT
       
//        P0INTE=0x00;
//        P1INTE=0x00;
//        P2INTE=0x00;
//        P3INTE=0x00;
//        P4INTE=0x00;
//        P5INTE=0x00;
//        P6INTE=0x00;
//        P7INTE=0x00;
//        P0IM0=0x00;
//        P0IM1=0x00;
//        P1IM0=0x00;
//        P1IM1=0x00;
//        P2IM0=0x00;
//        P2IM1=0x00;
//        P3IM0=0x00;
//        P3IM1=0x00;
//        P4IM0=0x00;
//        P4IM1=0x00;
//        P5IM0=0x00;
//        P5IM1=0x00;
//        P6IM0=0x00;
//        P6IM1=0x00;
//        P7IM0=0x00;
//        P7IM1=0x00;
//        P0WKUE=0x00;
//        P1WKUE=0x00;
//        P2WKUE=0x00;
//        P3WKUE=0x00;
//        P4WKUE=0x00;
//        P5WKUE=0x00;
//        P6WKUE=0x00;
//        P7WKUE=0x00;EA=1;中断:
//void P0INT_ISR(void) interrupt P0INT_VECTOR
//{
//        if(P0INTF&0x01)
//        {
//                P0INTF&=~0x01;
//        }
//        if(P0INTF&0x02)
//        {
//                P0INTF&=~0x02;
//        }
//        if(P0INTF&0x04)
//        {
//                P0INTF&=~0x04;
//        }
//        if(P0INTF&0x08)
//        {
//                P0INTF&=~0x08;
//        }
//        if(P0INTF&0x10)
//        {
//                P0INTF&=~0x10;
//        }
//        if(P0INTF&0x20)
//        {
//                P0INTF&=~0x20;
//        }
//        if(P0INTF&0x40)
//        {
//                P0INTF&=~0x40;
//        }
//        if(P0INTF&0x80)
//        {
//                P0INTF&=~0x80;
//        }
//}

//void P1INT_ISR(void) interrupt P1INT_VECTOR
//{
//        if(P1INTF&0x01)
//        {
//                P1INTF&=~0x01;
//        }
//        if(P1INTF&0x02)
//        {
//                P1INTF&=~0x02;
//        }
//        if(P1INTF&0x04)
//        {
//                P1INTF&=~0x04;
//        }
//        if(P1INTF&0x08)
//        {
//                P1INTF&=~0x08;
//        }
//        if(P1INTF&0x10)
//        {
//                P1INTF&=~0x10;
//        }
//        if(P1INTF&0x20)
//        {
//                P1INTF&=~0x20;
//        }
//        if(P1INTF&0x40)
//        {
//                P1INTF&=~0x40;
//        }
//        if(P1INTF&0x80)
//        {
//                P1INTF&=~0x80;
//        }
//}

//void P2INT_ISR(void) interrupt P2INT_VECTOR
//{
//        if(P2INTF&0x01)
//        {
//                P2INTF&=~0x01;
//        }
//        if(P2INTF&0x02)
//        {
//                P2INTF&=~0x02;
//        }
//        if(P2INTF&0x04)
//        {
//                P2INTF&=~0x04;
//        }
//        if(P2INTF&0x08)
//        {
//                P2INTF&=~0x08;
//        }
//        if(P2INTF&0x10)
//        {
//                P2INTF&=~0x10;
//        }
//        if(P2INTF&0x20)
//        {
//                P2INTF&=~0x20;
//        }
//        if(P2INTF&0x40)
//        {
//                P2INTF&=~0x40;
//        }
//        if(P2INTF&0x80)
//        {
//                P2INTF&=~0x80;
//        }
//}

//void P3INT_ISR(void) interrupt P3INT_VECTOR
//{
//        if(P3INTF&0x01)
//        {
//                P3INTF&=~0x01;
//        }
//        if(P3INTF&0x02)
//        {
//                P3INTF&=~0x02;
//        }
//        if(P3INTF&0x04)
//        {
//                P3INTF&=~0x04;
//        }
//        if(P3INTF&0x08)
//        {
//                P3INTF&=~0x08;
//        }
//        if(P3INTF&0x10)
//        {
//                P3INTF&=~0x10;
//        }
//        if(P3INTF&0x20)
//        {
//                P3INTF&=~0x20;
//        }
//        if(P3INTF&0x40)
//        {
//                P3INTF&=~0x40;
//        }
//        if(P3INTF&0x80)
//        {
//                P3INTF&=~0x80;
//        }
//}

//void P4INT_ISR(void) interrupt P4INT_VECTOR
//{
//        if(P4INTF&0x01)
//        {
//                P4INTF&=~0x01;
//        }
//        if(P4INTF&0x02)
//        {
//                P4INTF&=~0x02;
//        }
//        if(P4INTF&0x04)
//        {
//                P4INTF&=~0x04;
//        }
//        if(P4INTF&0x08)
//        {
//                P4INTF&=~0x08;
//        }
//        if(P4INTF&0x10)
//        {
//                P4INTF&=~0x10;
//        }
//        if(P4INTF&0x20)
//        {
//                P4INTF&=~0x20;
//        }
//        if(P4INTF&0x40)
//        {
//                P4INTF&=~0x40;
//        }
//        if(P4INTF&0x80)
//        {
//                P4INTF&=~0x80;
//        }
//}

//void P5INT_ISR(void) interrupt P5INT_VECTOR
//{
//        if(P5INTF&0x01)
//        {
//                P5INTF&=~0x01;
//        }
//        if(P5INTF&0x02)
//        {
//                P5INTF&=~0x02;
//        }
//        if(P5INTF&0x04)
//        {
//                P5INTF&=~0x04;
//        }
//        if(P5INTF&0x08)
//        {
//                P5INTF&=~0x08;
//        }
//        if(P5INTF&0x10)
//        {
//                P5INTF&=~0x10;
//        }
//        if(P5INTF&0x20)
//        {
//                P5INTF&=~0x20;
//        }
//        if(P5INTF&0x40)
//        {
//                P5INTF&=~0x40;
//        }
//        if(P5INTF&0x80)
//        {
//                P5INTF&=~0x80;
//        }
//}

//void P6INT_ISR(void) interrupt P6INT_VECTOR
//{
//        if(P6INTF&0x01)
//        {
//                P6INTF&=~0x01;
//        }
//        if(P6INTF&0x02)
//        {
//                P6INTF&=~0x02;
//        }
//        if(P6INTF&0x04)
//        {
//                P6INTF&=~0x04;
//        }
//        if(P6INTF&0x08)
//        {
//                P6INTF&=~0x08;
//        }
//        if(P6INTF&0x10)
//        {
//                P6INTF&=~0x10;
//        }
//        if(P6INTF&0x20)
//        {
//                P6INTF&=~0x20;
//        }
//        if(P6INTF&0x40)
//        {
//                P6INTF&=~0x40;
//        }
//        if(P6INTF&0x80)
//        {
//                P6INTF&=~0x80;
//        }
//}

//void P7INT_ISR(void) interrupt P7INT_VECTOR
//{
//        if(P7INTF&0x01)
//        {
//                P7INTF&=~0x01;
//        }
//        if(P7INTF&0x02)
//        {
//                P7INTF&=~0x02;
//        }
//        if(P7INTF&0x04)
//        {
//                P7INTF&=~0x04;
//        }
//        if(P7INTF&0x08)
//        {
//                P7INTF&=~0x08;
//        }
//        if(P7INTF&0x10)
//        {
//                P7INTF&=~0x10;
//        }
//        if(P7INTF&0x20)
//        {
//                P7INTF&=~0x20;
//        }
//        if(P7INTF&0x40)
//        {
//                P7INTF&=~0x40;
//        }
//        if(P7INTF&0x80)
//        {
//                P7INTF&=~0x80;
//        }
//}

xiaocake 发表于 2025-4-27 14:00:26

P3.6和P3.7对应的外部中断 INT2和INT3 都只支持下降沿中断。。。

换用INT0和INT1(对应引脚是P3.2和P3.3),同时支持上升沿和下降沿中断。

ercircle 发表于 2025-4-27 14:48:17

xiaocake 发表于 2025-4-27 14:00
P3.6和P3.7对应的外部中断 INT2和INT3 都只支持下降沿中断。。。

换用INT0和INT1(对应引脚是P3.2和P3.3) ...

这个是IO中断,和外部中断不一样的

aoteman 发表于 2025-4-27 15:10:48

xiaocake 发表于 2025-4-27 14:00
P3.6和P3.7对应的外部中断 INT2和INT3 都只支持下降沿中断。。。

换用INT0和INT1(对应引脚是P3.2和P3.3) ...

不行啊,外部中断不支持上升沿触发,我要Pwm的占空比,需要读下降沿和上升沿之间的间隔时间

aoteman 发表于 2025-4-27 15:11:39

xiaocake 发表于 2025-4-27 14:00
P3.6和P3.7对应的外部中断 INT2和INT3 都只支持下降沿中断。。。

换用INT0和INT1(对应引脚是P3.2和P3.3) ...

而且在打板子项目交付来不及

aoteman 发表于 2025-4-27 15:47:55

ercircle 发表于 2025-4-27 14:48
这个是IO中断,和外部中断不一样的

只说了不一样区别在什么地方,硬件原理吗,对于应用层,貌似都是边沿出发为主

ercircle 发表于 2025-4-27 15:52:40

aoteman 发表于 2025-4-27 15:47
只说了不一样区别在什么地方,硬件原理吗,对于应用层,貌似都是边沿出发为主 ...

对于开发者,区别就是寄存器配置差异,和中断差异。

aoteman 发表于 2025-4-28 07:50:06

ercircle 发表于 2025-4-27 15:52
对于开发者,区别就是寄存器配置差异,和中断差异。

多谢大神,加上汇编可以触发边沿中断了,谢了,我也是第一次用Stc的IO中断,以往也都是多用外部中断,封贴!!!

haiyang201 发表于 2025-4-28 08:51:14

1325986650 发表于 2025-4-27 08:17
本身PWM就可以输出你需要的几个占空比。为啥要用中断?
                                  if(Zoom_speed= ...

他是要检测占空比,而不是输出
页: 1 2 [3]
查看完整版本: 大神们求救,十万火急帮帮小弟,IO中断的问题