标题: STC单片机,任意IO口中断不成功 附程序 [打印本页]

作者: 4758866    时间: 2024-1-16 20:50
标题: STC单片机,任意IO口中断不成功 附程序
设置P1.4的高低电平中断不成功,有没有人指点一下
单片机源程序如下:
void init_IOINT()//中断初始化
{

      P1INTF&=0xE8;//清除P1.4的中断标志
            P1INTE|=0x10;//开P1.4的中断使能
        
      P1IM0 &=~0x10;//设置P1.4口低电平触发
      P1IM1 |= 0x10;

            P1IM0  |=0x10;//设置P1.4口高电平触发
            P1IM1  |=0x10;


}
//由于中断向量大于 31,在 KEIL 中无法直接编译
//必须借用第 13 号中断入口地址
void common_isr() interrupt 13
{
  unsigned char psw2_st;
  unsigned char intf;
    psw2_st = P_SW2;
    P_SW2 |= 0x80;

    intf = P1INTF;
    if (intf)
    {
        P1INTF = 0x10;

        if (intf & 0x10)
        {
         LED1=0;
        }
    }
    P_SW2 = psw2_st;
}


作者: hclin    时间: 2024-1-17 01:20
先說明你所使用的是哪個變種8051的型號,標準8051的p1.4本來就不會中斷。
作者: 4758866    时间: 2024-1-17 05:44
STC8H8K64U
作者: devcang    时间: 2024-1-17 09:54
要去看看芯片手册
作者: 4758866    时间: 2024-1-17 10:14
STC8H64K的单片机
作者: cocolala    时间: 2024-1-17 11:58
    1、必须保证芯片支持任意IO口中断,同时一定注意芯片版本是最新的。
    2、手头有一块艾克姆的STC8H3K64S4的开发板,里面有个P1.2最为中断的例子,你参考下。


    3、例程中因为中断向量超出范围,需要一端汇编的代码,注意参考啊。

实验2-5-1:P1.2口中断(下降沿中断方式).rar

27.08 KB, 下载次数: 2


作者: angmall    时间: 2024-1-17 16:56
4758866 发表于 2024-1-17 05:44
STC8H8K64U

你有加入这个文件吗?


// ISR.ASM
//将下面的代码保存为 ISR.ASM,然后将文件加入到项目中即可
                        CSEG AT 012BH ;P0 口中断入口地址
                        JMP P0INT_ISR
P0INT_ISR:
                        JMP 006BH ;借用 13 号中断的入口地址
END
作者: 4758866    时间: 2024-1-17 22:17
想用IO口中断做超声波测距,现在是死等IO状态变化,如果超声波模块出问题了其他程序也崩溃了,程序就死在那里了,现在单片机有多个模块运行,温度检测,DHT11,气压检测,超声波检测距离,modbus通信一起运行的,现在超声波检测会影响modbus通信,用12864显示的,想用中断改善一下运行效果,进入低电平中断,执行启动定时器,然后把中断改成高电平中断,高电平中断后计算距离,然后又改成低电平中断等待下一次




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1