大哥帮我分析一下这个程序,在keil上面仿真可以完美运行,在单片机上为什么就不能运行呢?

大哥帮我分析一下这个程序,在keil上面仿真可以完美运行,在单片机上为什么就不能运行呢?
#include <reg52.h>
void heidaijiance(void);
void delay(unsigned char x);
void delay10s();
unsigned char heidaishu;
unsigned char i;
void main(void)//彩虹总在风雨后to大森&亚强&天奇
{
heidaishu=0;
IT0=1;
EA=1;
EX0=1;
P1=0xff;
while(1)
{
P1=0x05;
if(heidaishu==3)
{
P1=0x05;
delay(20);
P1=0xff;
}
if(heidaishu==6)
{
P1=0xff;
delay10s();
P1=0x0a;
delay(20);
}
if(heidaishu>=7)
{
P1=0x0a;
}
delay(20);
}
}
void heidaijiance(void) interrupt 0
{
heidaishu++;
}
void delay10s()
{
unsigned int a,b;
for(a=1500;a>0;a--)
for(b=650;b>0;b--);
//for(c=110;c>0;c--);
}
void delay(unsigned char x)
{
unsigned char a,b;
for(a=x;a>0;a--)
for(b=50;b>0;b--);
}
谁来回答一下?

先确认你的硬件没有问题。追问

程序烧到单片机里面最前面的几个存储单元有一些程序,然后空了很多存储单元才继续存储程序,这是什么问题?

追答

你大概对编译原理不太了解。前面空出的少量单元可能是中断向量所造成的间隔。
你可以把具体的情况贴出来,看看编译结果是否异常。
就是编译后的.map或.m51文件。

追问

编译没问题,仿真运行正常。

追答

那么跟你所说的现象无关。先排查硬件问题。

温馨提示:答案为网友推荐,仅供参考