社区导航

 

搜索
查看: 363|回复: 11

[求助] 为什么我的INT功能进入不了中断?

[复制链接]

82

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2020-6-27 20:40 | 显示全部楼层 |阅读模式

为什么我的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;            //马达反转
    }
}


回复

使用道具 举报

1万

TA的帖子

133

TA的资源

管理员

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2020-6-28 05:58 | 显示全部楼层

有提示报错原因吗?

点评

没有错误提示。可以中断置1,但进不了中断  详情 回复 发表于 2020-6-30 20:26

玩板看这里:

http://bbs.eeworld.com.cn/elecplay.html

EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!


回复

使用道具 举报

1万

TA的帖子

13

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 2020-6-28 09:04 | 显示全部楼层

中断没有开吧

点评

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

回复

使用道具 举报

82

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2020-6-30 20:25 | 显示全部楼层

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

点评

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

回复

使用道具 举报

82

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2020-6-30 20:26 | 显示全部楼层
okhxyyo 发表于 2020-6-28 05:58 有提示报错原因吗?

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


回复

使用道具 举报

82

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2020-6-30 20:26 | 显示全部楼层

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

 

 

有开中断的


回复

使用道具 举报

136

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2020-7-1 20:58 | 显示全部楼层

帮顶


回复

使用道具 举报

599

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

发表于 2020-7-6 16:03 | 显示全部楼层
yealien 发表于 2020-6-30 20:25 用ICD2仿真,可以看到中断位置1,但是进不了中断。

我没有PIC16F877A的硬件

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

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

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

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

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

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

点评

调了顺序,还是不行。  详情 回复 发表于 半小时前

回复

使用道具 举报

82

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2020-7-6 18:33 | 显示全部楼层
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口清零
}

 

是这样啊.


回复

使用道具 举报

599

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

发表于 2020-7-7 11:49 | 显示全部楼层

我一般这样写:

①:

//    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外部中断标志位
 

点评

好象与我的顺序刚好相反了,我明天试试  详情 回复 发表于 3 天前

回复

使用道具 举报

82

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2020-7-7 19:58 | 显示全部楼层
dingzy_2002 发表于 2020-7-7 11:49 我一般这样写: ①: //    PORTB=0x01;     PORTD=0;   &n ...

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


回复

使用道具 举报

82

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

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

调了顺序,还是不行。


回复

使用道具 举报

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

关闭

站长推荐上一条 1/8 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

词云| Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-7-10 19:37 , Processed in 0.350079 second(s), 30 queries , Gzip On, MemCache On.

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