3655|14

68

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

为什么我的INT功能进入不了中断? [复制链接]

 

为什么我的RB0口进入不了中断?是哪里的问题?

#include<pic.h>
#include<pic16f877a.h>
#define uchar unsigned char
#define uint unsigned int
__CONFIG(0x3731); 
void delay(uint x)
{
    uint a,b;
    for(a=x;a>0;a--)
        for(b=110;b>0;b--);
}
void init()    //初始化
{
    OPTION_REG=0x00;            //RBPU=0使能B口上拉电阻,INTEDG=0下降沿触发中断
    INTCON=0xD0;                //GIE为1允许总中断,INTE=1使能RB0/INT外部中断,INTF=0清RB0外部中断标志位
    TRISB=0x01;                    //B口低2位设为键盘的输入
    TRISD=0;                    //D口低4位设为LED的输出
//    PORTB=0x01;
    PORTD=0;                    //D口清零
}
void interrupt INT()
{
    if(INTF==1)                    //查询中断标志位是否被置1
    {
        INTF=0;                    //清中断标志位
        if(RB0==0)                //再次检测RB0口是否被按下
        {
            PORTD=0x02;            //马达反转
        }
    }
}
void main()
{
    init();
    while(1)
    {
        PORTD=0x00;            //马达反转
    }
}

最新回复

GIE、PEIE都开了么   详情 回复 发表于 2020-9-11 11:58
点赞 关注
 

回复
举报

1万

帖子

2853

TA的资源

管理员

沙发
 

有提示报错原因吗?

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

没有错误提示。可以中断置1,但进不了中断  详情 回复 发表于 2020-6-30 20:26
 
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 

回复

1万

帖子

25

TA的资源

版主

板凳
 

中断没有开吧

点评

INTCON=0xD0;                //GIE为1允许总中断,INTE=1使能RB0/INT外部中断,INTF=0清RB0外部中断标志位     有开中断的  详情 回复 发表于 2020-6-30 20:26
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(高级)

4
 

用ICD2仿真,可以看到中断位置1,但是进不了中断。

点评

我没有PIC16F877A的硬件 仅通过软件仿真:目前是可以进入中断的。从程序编写上来说,初始化这段,可以这样调整: ①设置管脚电平(PORTx→H,L); ②设置管脚方向(TRISx→输入/输出); ③设  详情 回复 发表于 2020-7-6 16:03
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(高级)

5
 
okhxyyo 发表于 2020-6-28 05:58 有提示报错原因吗?

没有错误提示。可以中断置1,但进不了中断

 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(高级)

6
 

INTCON=0xD0;                //GIE为1允许总中断,INTE=1使能RB0/INT外部中断,INTF=0清RB0外部中断标志位

 

 

有开中断的

 
 
 

回复

310

帖子

5

TA的资源

一粒金砂(中级)

7
 

帮顶

 
 
 

回复

638

帖子

2

TA的资源

版主

8
 
yealien 发表于 2020-6-30 20:25 用ICD2仿真,可以看到中断位置1,但是进不了中断。

我没有PIC16F877A的硬件

仅通过软件仿真:目前是可以进入中断的。从程序编写上来说,初始化这段,可以这样调整:

①设置管脚电平(PORTx→H,L);

②设置管脚方向(TRISx→输入/输出);

③设置上拉(若有的话);

④清相关中断标志,设置中断允许位;

⑤打开所需要的总中断及外设置中断。

点评

调了顺序,还是不行。  详情 回复 发表于 2020-7-10 18:54
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(高级)

9
 
dingzy_2002 发表于 2020-7-6 16:03 我没有PIC16F877A的硬件 仅通过软件仿真:目前是可以进入中断的。从程序编写上来说,初始化这段,可以 ...

void init()    //初始化
{
    OPTION_REG=0x00;            //RBPU=0使能B口上拉电阻,INTEDG=0下降沿触发中断
    INTCON=0xD0;                //GIE为1允许总中断,INTE=1使能RB0/INT外部中断,INTF=0清RB0外部中断标志位
    TRISB=0x01;                    //B口低2位设为键盘的输入
    TRISD=0;                    //D口低4位设为LED的输出
//    PORTB=0x01;
    PORTD=0;                    //D口清零
}

 

是这样啊.

 
 
 

回复

638

帖子

2

TA的资源

版主

10
 

我一般这样写:

①:

//    PORTB=0x01;
    PORTD=0;                    //D口清零

②:

    TRISB=0x01;                    //B口低2位设为键盘的输入
    TRISD=0;                    //D口低4位设为LED的输出

   OPTION_REG=0x00;            //RBPU=0使能B口上拉电阻,INTEDG=0下降沿触发中断
    INTCON=0xD0;                //GIE为1允许总中断,INTE=1使能RB0/INT外部中断,INTF=0清RB0外部中断标志位
 

点评

好象与我的顺序刚好相反了,我明天试试  详情 回复 发表于 2020-7-7 19:58
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(高级)

11
 
dingzy_2002 发表于 2020-7-7 11:49 我一般这样写: ①: //    PORTB=0x01;     PORTD=0;   &n ...

好象与我的顺序刚好相反了,我明天试试

 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(高级)

12
 
dingzy_2002 发表于 2020-7-6 16:03 我没有PIC16F877A的硬件 仅通过软件仿真:目前是可以进入中断的。从程序编写上来说,初始化这段,可以 ...

调了顺序,还是不行。

点评

我是用软件仿真的,是可以进入中断的; 硬件仿真时,进入不子中断,还主要看寄存器配置问题; 以我的经验来看:多观察寄存器数据变化会更快的发现问题。    详情 回复 发表于 2020-7-11 14:45
 
 
 

回复

638

帖子

2

TA的资源

版主

13
 
yealien 发表于 2020-7-10 18:54 调了顺序,还是不行。

我是用软件仿真的,是可以进入中断的;

硬件仿真时,进入不子中断,还主要看寄存器配置问题;

以我的经验来看:多观察寄存器数据变化会更快的发现问题。

 

点评

我用软件仿真也没问题,但是硬件仿真就进不了中断  详情 回复 发表于 2020-7-13 18:37
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(高级)

14
 
dingzy_2002 发表于 2020-7-11 14:45 我是用软件仿真的,是可以进入中断的; 硬件仿真时,进入不子中断,还主要看寄存器配置问题; 以我 ...

我用软件仿真也没问题,但是硬件仿真就进不了中断

 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

15
 

GIE、PEIE都开了么

 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表