找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

小白求助:STC8F1K08S2单片机无法进入外部中断

查看数: 6322 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-12-6 12:23

正文摘要:

AN1分别接外部中断4管脚(P3.0)和地,AN2分别接P3.1和地之间。上面的测试程序是按下AN1或者AN2,LED都会亮,实际上只有按下AN2灯会亮,按下AN1灯不亮,也就是没有进入中断。其他的外部中断也试了,也是没有进入中断 ...

回复

ID:644425 发表于 2020-4-11 22:24
你测试中断,就要一个空的while(1); 在那里候着,啥事都让中断干,才行。你while里,只要an2没有按下,就关灯,循环还那么快,中断了都不知道。
ID:377210 发表于 2019-12-6 16:35
问题解决了:其实并不是没有进入中断,只是因为速度太快了,LED测试时肉眼看不出来,实际已经进入中断了的。8F系列速度确实比15W系列的快了,导致在15W系列上可以用的程序到8F系列却用不了,
通过增加延时时间,或者在中断服务程序里加个跳转函数处理即可解决。 谢谢@pcbboy 的指点
ID:377210 发表于 2019-12-6 15:34
pcbboy 发表于 2019-12-6 13:25
你那个中断里面不处理自然看不到反应了。比如LED取反啥的也好啊。

STC自己的范例为你参考:

好的,我改一下看看
ID:25310 发表于 2019-12-6 13:25
你那个中断里面不处理自然看不到反应了。比如LED取反啥的也好啊。

STC自己的范例为你参考:

#include "reg51.h"
#include "intrins.h"

sbit    P10         =   P1^0;
sbit    P11         =   P1^1;

void INT1_Isr() interrupt 2
{
    if (INT1)                                   //判断上升沿和下降沿
    {
        P10 = !P10;                             //测试端口
    }
    else
    {
        P11 = !P11;                             //测试端口
    }
}

void main()
{
    IT1 = 0;                                    //使能INT1上升沿和下降沿中断
    EX1 = 1;                                    //使能INT1中断
    EA = 1;

    while (1);
}

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

Powered by 单片机教程网

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