找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2044|回复: 8
打印 上一主题 下一主题
收起左侧

单片机外部中断结束后,程序运行错误

[复制链接]
跳转到指定楼层
楼主
ID:325524 发表于 2018-5-8 21:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
unsigned char a;
void main()
{
    a=0xf0;
    EA=1;
    EX0=1;
    IT0=0;
    while(1)
    {
        P1=a;
    }
}
void int0() interrupt 0
{
    a=0x0f;
}
外部中断的低电平撤销后,P1的值变不回来,请问这是怎么回事,需要怎么改?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:229959 发表于 2018-5-8 23:01 | 只看该作者
单片机保持最后的状态,所以a还是等于0x0f,
while(1)
{if(IT0!=0)
   {a=0xf0;}
   P1=a;
}
你试试,我也是刚学的

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:325524 发表于 2018-5-9 08:17 来自手机 | 只看该作者
zhongbo1991 发表于 2018-5-8 23:01
单片机保持最后的状态,所以a还是等于0x0f,
while(1)
{if(IT0!=0)

很感谢,但还是回不来
回复

使用道具 举报

地板
ID:213173 发表于 2018-5-9 09:04 | 只看该作者
void int0() interrupt 0
{
    a=~a;
}
回复

使用道具 举报

5#
ID:164602 发表于 2018-5-9 09:12 | 只看该作者
你的程序没有问题:外部中断0发生后,P1口的值变化了的。
我已经在我的板子上试验通过了。说明中断没有问题。

变不回来,因为你的程序没有让它变回来啊。
要变原来的值,你的主循环中,就要有设置语句才行。
可能你理解中断的执行有误解:中断发生后,回到原来程序发生中断时的位置,不是让程序从头再来一次!
按你的程序,只能是回到主循环内,你的a就是初值是之前定义的,当然就执行不到了。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

6#
ID:297166 发表于 2018-5-11 01:39 | 只看该作者
IT0=0,你的意思是按下按键P1=0x0f,松开按键P1=0xf0?
这回试试行不行······
#include<reg52.h>
unsigned char a;
void main()
{
    EA=1;
    EX0=1;
    IT0=0;
    while(1)
    {
        a=0xf0;
        P1=a;
    }
}
void int0() interrupt 0
{
    a=0x0f;
    P1=a;
}
有一个疑问,这里IT0=0,不是低电平一直中断吗,P1的值怎么会改变(当一直中断的时候)?是在给高电平后中断结束,P1才被重新赋值的吧
所以你的P1一直是中断语句中赋予的值,其实中断中重复了那么多次赋值,仅仅是赋值给a而已,和P1没有关系的

评分

参与人数 1黑币 +90 收起 理由
admin + 90 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

7#
ID:325524 发表于 2018-5-11 18:22 | 只看该作者
wulin 发表于 2018-5-9 09:04
void int0() interrupt 0
{
    a=~a;

十分感谢,谢谢
回复

使用道具 举报

8#
ID:325524 发表于 2018-5-11 18:23 | 只看该作者
HC6800-ES-V2.0 发表于 2018-5-9 09:12
你的程序没有问题:外部中断0发生后,P1口的值变化了的。
我已经在我的板子上试验通过了。说明中断没有问 ...

谢谢大佬解答
回复

使用道具 举报

9#
ID:325524 发表于 2018-5-11 18:25 | 只看该作者
blossom99 发表于 2018-5-11 01:39
IT0=0,你的意思是按下按键P1=0x0f,松开按键P1=0xf0?
这回试试行不行······
#include

我是用一根线将3.2接到gnd了,然后把线拔掉,理论上要退出中断啊,这个程序是a的赋值把我搞晕了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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