找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 858|回复: 7
收起左侧

STC单片机,任意IO口中断不成功 附程序

[复制链接]
ID:145357 发表于 2024-1-16 20:50 | 显示全部楼层 |阅读模式
设置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;
}

回复

使用道具 举报

ID:43600 发表于 2024-1-17 01:20 | 显示全部楼层
先說明你所使用的是哪個變種8051的型號,標準8051的p1.4本來就不會中斷。
回复

使用道具 举报

ID:145357 发表于 2024-1-17 05:44 来自手机 | 显示全部楼层
STC8H8K64U
回复

使用道具 举报

ID:277550 发表于 2024-1-17 09:54 | 显示全部楼层
要去看看芯片手册
回复

使用道具 举报

ID:145357 发表于 2024-1-17 10:14 来自手机 | 显示全部楼层
STC8H64K的单片机
回复

使用道具 举报

ID:226055 发表于 2024-1-17 11:58 | 显示全部楼层
    1、必须保证芯片支持任意IO口中断,同时一定注意芯片版本是最新的。
    2、手头有一块艾克姆的STC8H3K64S4的开发板,里面有个P1.2最为中断的例子,你参考下。
8H3K板.jpg

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

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

27.08 KB, 下载次数: 2

回复

使用道具 举报

ID:155507 发表于 2024-1-17 16:56 | 显示全部楼层

你有加入这个文件吗?


// ISR.ASM
//将下面的代码保存为 ISR.ASM,然后将文件加入到项目中即可
                        CSEG AT 012BH ;P0 口中断入口地址
                        JMP P0INT_ISR
P0INT_ISR:
                        JMP 006BH ;借用 13 号中断的入口地址
END
回复

使用道具 举报

ID:145357 发表于 2024-1-17 22:17 来自手机 | 显示全部楼层
想用IO口中断做超声波测距,现在是死等IO状态变化,如果超声波模块出问题了其他程序也崩溃了,程序就死在那里了,现在单片机有多个模块运行,温度检测,DHT11,气压检测,超声波检测距离,modbus通信一起运行的,现在超声波检测会影响modbus通信,用12864显示的,想用中断改善一下运行效果,进入低电平中断,执行启动定时器,然后把中断改成高电平中断,高电平中断后计算距离,然后又改成低电平中断等待下一次
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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