打印

求大神看看,新手写的程序,哪错了啊?

[复制链接]
1688|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shashabi0132|  楼主 | 2012-9-5 19:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为啥中断会持续调用啊??我只是在满足条件if(num2==1)的时候调用了一次而已啊!求大神开导,万分感谢
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar num2,num,t,temp,temp1;
sbit beep=P1^5;
uchar code table1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code table2[]={
0x7f,0xbf,0xdf};
void timer0();
void delay (uint);
void delay (uint z)
{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);
}
void main()
{
beep=0;

t=0;

EA=1;

ET0=1;

//TF0=1

TMOD=0x01;

TR0=1;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

while(1)

{

P0=table1[num];

P2=table2[num2];

delay(800);

num++;

if(num==10)

{

num=0;

num2++;

/*
timer0();*/

}

if(num2==2)


{

num2=0;

beep=1;

}

if(num2==1)


{

timer0();

P0=0xff;

}
}
}
void timer0() interrupt 1
{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

t++;

//P0=0xff;

if(t==20)

{

t=0;

beep=1;

P2=0xff;

delay(300);

P2=table2[num2];

beep=0;

delay(300);

}
}

相关帖子

沙发
efen| | 2012-9-5 19:57 | 只看该作者
中断函数不用调用的,满足触发条件便会自动进入了

使用特权

评论回复
板凳
NE5532| | 2012-9-5 20:03 | 只看该作者
看来楼主是没搞懂什么叫中断,也不知道怎么声明中断服务函数,Google这几个关键字,然后我们再回来讨论。

使用特权

评论回复
地板
zhang7676050| | 2012-9-5 20:55 | 只看该作者
2楼和3楼都说了,再看看书吧,中断没有搞明白

使用特权

评论回复
5
sedatefire| | 2012-9-5 22:47 | 只看该作者
2楼和3楼都说了,再看看书吧,中断没有搞明白
zhang7676050 发表于 2012-9-5 20:55

看到这些回复...
就当我来打酱油的吧

使用特权

评论回复
6
wukunshan| | 2012-9-6 14:27 | 只看该作者
不是中断没搞明白,是C51的逻辑没搞明白。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

22

帖子

0

粉丝