用KEIL调试的一段程序一直在STARTUP.A51文件中循环 5
以下这段程序我在build的时候没问题,但是debug的时候会跳到STARTUP.A51文件,并且一直在这循环IDATALOOP:MOV@R0,A请大神们看看这是什么问题...
以下这段程序我在build的时候没问题,但是debug的时候会跳到STARTUP.A51文件,并且一直在这循环IDATALOOP: MOV @R0,A 请大神们看看这是什么问题
DJNZ R0,IDATALOOP
#include<reg51.h>
sbit RELAY = P2^7;
sbit K0 = P0^0;
sbit K1 = P0^1;
sbit K2 = P0^2;
sbit K3 = P0^3;
sbit K4 = P0^4;
sbit K5 = P0^5;
sbit K6 = P0^6;
sbit K7 = P0^7;
void delay500ms();
void main()
{
if(P0!=0x00)
{
int x,y,z;
x=0x07&P0;
y=0x38&P0;
y=y>>3;
z=0xc0&P0;
z=z>>6;
for(;x>0;x--)
{
RELAY=0;
for(;y>0;y--)
{
delay500ms();
}
RELAY=1;
for(;z>0;z--)
{
delay500ms();
}
}
}
}
void delay500ms(void)
{
unsigned char i,j,k;
for(i=15;i>0;i--)
for(j=202;j>0;j--)
for(k=81;k>0;k--);
} 展开
DJNZ R0,IDATALOOP
#include<reg51.h>
sbit RELAY = P2^7;
sbit K0 = P0^0;
sbit K1 = P0^1;
sbit K2 = P0^2;
sbit K3 = P0^3;
sbit K4 = P0^4;
sbit K5 = P0^5;
sbit K6 = P0^6;
sbit K7 = P0^7;
void delay500ms();
void main()
{
if(P0!=0x00)
{
int x,y,z;
x=0x07&P0;
y=0x38&P0;
y=y>>3;
z=0xc0&P0;
z=z>>6;
for(;x>0;x--)
{
RELAY=0;
for(;y>0;y--)
{
delay500ms();
}
RELAY=1;
for(;z>0;z--)
{
delay500ms();
}
}
}
}
void delay500ms(void)
{
unsigned char i,j,k;
for(i=15;i>0;i--)
for(j=202;j>0;j--)
for(k=81;k>0;k--);
} 展开
3个回答
展开全部
IDATALOOP:
MOV @R0,A
DJNZ R0,IDATALOOP
这基本上肯定要死在循环中的,R0既然作为了Ri,就不能再作为Rn来使用了。
MOV @R0,A
DJNZ R0,IDATALOOP
这基本上肯定要死在循环中的,R0既然作为了Ri,就不能再作为Rn来使用了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
STARTUP.A51有问题了就删除,然后我的就好了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
硬件初始化除了问题,我不知道是不是你的环境除了问题。我以前遇到过一次是main函数写错了写成mian了,然后跳转不过来,就在.s文件里面跑死了,你看看还不是你的跳转函数出了问题,
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询