51单片机外部中断问题
想用51外部中断程序中设置一个标志,在主程序中检查此标志来显示要输出的东西。在进入外部中断时,我想关掉中断时能EX0=0,然后设置标志flag=1;在主函数中我判断当fl...
想用51外部中断程序中设置一个标志,在主程序中检查此标志来显示要输出的东西。在进入外部中断时,我想关掉中断时能EX0=0,然后设置标志flag=1;在主函数中我判断当flag=1时,执行显示子程序display();设置flag=0;再开EX0=1;可是这样只能让数码管闪一下就不显示了。主要想表达的函数部分如下。如果把下面函数中的EX0都改为EA,则可以达到我要的目的了。请问问题出在哪里要如何修改?
main
{
.....
......
......
while(1)
{
if(flag==1)
{
display();
flag=0;
EX0=1;
}
}
}
void int_ex0(void) interrupt 0
{
EX0=0;
flag=1;
}
EA是开着的,我用的是边沿触发IT0=1,就是想进入中断后把中断关闭,再到主程序中检测到中断设置的标志后执行完显示再把中断打开。用EX0来开关中断就有问题(EA是已经打开的),用EA开关中断就OK 展开
main
{
.....
......
......
while(1)
{
if(flag==1)
{
display();
flag=0;
EX0=1;
}
}
}
void int_ex0(void) interrupt 0
{
EX0=0;
flag=1;
}
EA是开着的,我用的是边沿触发IT0=1,就是想进入中断后把中断关闭,再到主程序中检测到中断设置的标志后执行完显示再把中断打开。用EX0来开关中断就有问题(EA是已经打开的),用EA开关中断就OK 展开
展开全部
你可以先将display放到中断中,看看中断是否响应,接着再想办法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你用的是低电平中断么?如果是的话你改成边沿触发中断方式试一下。
那你的中断频率是多少? 是被动触发还是主动触发?
那你的中断频率是多少? 是被动触发还是主动触发?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可不可以给完整程序,再说清楚用EX0出现了什么问题?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的显示程序很长,要执行很久么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询