各位大侠帮我看一下我写的51单片机C程序中断有没有问题,执行中断后不能继续执行主程序,注:P3.2口一直接

注:P3.2口一直接地,程序如下:#include<reg52.h>sbitdula=P2^6;sbitwela=P2^7;sbitd0=P1^0;sbitd1=P1^1... 注:P3.2口一直接地,程序如下:
#include <reg52.h>
sbit dula=P2^6;
sbit wela=P2^7;
sbit d0=P1^0;
sbit d1=P1^1;
sbit d2=P1^2;
sbit d3=P1^3;
sbit d4=P1^4;
sbit d5=P1^5;
sbit d6=P1^6;
sbit d7=P1^7;
#define uchar unsigned char
#define uint unsigned int
uchar num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z);
void main()
{
EA=1;
EX0=1;
IT0=0;
wela=1;
P0=0xc0;
wela=0;
while(1)
{

for(num=0;num<16;num++)
{
dula=1;
P0=table[num];
dula=0;
delay(1000);
}
}
}
void delay(uint z)
{
uint a,b;
for(a=z;a>0;a--)
for(b=110;b>0;b--);
}
void exter0() interrupt 0
{
uint c;
for(c=0;c<25000;c++);
d0=0;
for(c=0;c<25000;c++);
d0=1;
for(c=0;c<25000;c++);
d1=0;
for(c=0;c<25000;c++);
d1=1;
for(c=0;c<25000;c++);
d2=0;
for(c=0;c<25000;c++);
d2=1;
for(c=0;c<25000;c++);
d3=0;
for(c=0;c<25000;c++);
d3=1;
for(c=0;c<25000;c++);
d4=0;
for(c=0;c<25000;c++);
d4=1;
for(c=0;c<25000;c++);
d5=0;
for(c=0;c<25000;c++);
d5=1;
for(c=0;c<25000;c++);
d6=0;
for(c=0;c<25000;c++);
d6=1;
for(c=0;c<25000;c++);
d7=0;
for(c=0;c<25000;c++);
d7=1;

}
展开
 我来答
miniapp1pwgfsq1ptknk
2011-08-05 · 超过19用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:42.6万
展开全部
IT0=0;//低电平触发,只要单片机监测到是低电平,就触发中断
你P3.2一直接地,一直是低电平,那中断就不断的执行,当然回不到主程序中了。
改成IT0=1;//下降沿触发,单片机监测到高电平到电平跳变,就触发中断
就算P3.2一直接地,也只触发一次,中断执行完了,就回到主程序中了。
zero_fn
2011-08-05 · TA获得超过2258个赞
知道小有建树答主
回答量:1173
采纳率:80%
帮助的人:456万
展开全部
你一个中断程序要做多久啊。你自己算算。
中断里搞那么多延迟干嘛,累死单片机。
int0一直接地就是一直有中断信号?一直在中断程序里 ,结束中断又进去了,根本不跑主程序了
追问
谢谢谢谢!是不是中断程序一定要比主程序小啊?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zbwhat
2011-08-06
知道答主
回答量:38
采纳率:0%
帮助的人:16.9万
展开全部
你中断是要实现流水灯的效果吧?但是你这样似乎好冗长啊;你调用这个函数啊_crol_()
P3.2口是外部中断0引脚 你一直接低电平当然会一直执行中断程序了 你可以把触发方式由电平触发方式变为边缘触发方式
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式