标题: 自己随便编的一个动态数码管的程序,可是程序执行到一半就不执行了,怎么回事。。 [打印本页]

作者: princetony    时间: 2017-5-23 23:20
标题: 自己随便编的一个动态数码管的程序,可是程序执行到一半就不执行了,怎么回事。。
#include "reg52.h"
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
  sbit lesa=P2^2;
  sbit lesb=P2^3;
  sbit lesc=P2^4;
  u8 code shuma[]={0x01,0x40,0x08};
void delay(u16 i)
{
while(i--);
}
void code display(u8 j)
{
u8 i;
  if(j==0||j==2)
  {
for(i=0;i<8;i++)
{
switch(i)
{
case(0):
lesa=0;lesb=0;lesc=0;break;
case(1):
lesa=1;lesb=0;lesc=0;break;
case(2):
lesa=0;lesb=1;lesc=0;break;
case(3):
lesa=1;lesb=1;lesc=0;break;
case(4):
lesa=0;lesb=0;lesc=1;break;
case(5):
lesa=1;lesb=0;lesc=1;break;
case(6):
lesa=0;lesb=1;lesc=1;break;
case(7):
lesa=1;lesb=1;lesc=1;break;
}
P0=shuma[j];
delay(50000);
P0=0x00;
} }
else  if(j==1){
for(i=7;i>=0;i--)
{
switch(i)
{
case(0):
lesa=0;lesb=0;lesc=0;break;
case(1):
lesa=1;lesb=0;lesc=0;break;
case(2):
lesa=0;lesb=1;lesc=0;break;
case(3):
lesa=1;lesb=1;lesc=0;break;
case(4):
lesa=0;lesb=0;lesc=1;break;
case(5):
lesa=1;lesb=0;lesc=1;break;
case(6):
lesa=0;lesb=1;lesc=1;break;
case(7):
lesa=1;lesb=1;lesc=1;break;
}
P0=shuma[j];
delay(50000);
P0=0x00;
} }

}
void main ()
{
u8 j;
while(1){
j=0;
display(j);
lesa=1;lesb=1;lesc=1;
P0=0x02;
delay(50000);
P0=0x00;
j=1;
display(j);            
lesa=0;lesb=0;lesc=0;
P0=0x10;
delay(50000);
P0=0x00;
j=2;
display(j);
lesa=1;lesb=1;lesc=1;
P0=0x04;
delay(50000);
P0=0x00;
j=1;
display(j);     
lesa=0;lesb=0;lesc=0;
P0=0x20;
delay(50000);
P0=0x00;
}
}

作者: yzwzfyz    时间: 2017-5-24 02:10
走单步,看它停在哪里,或在哪里死转。
作者: zl2168    时间: 2017-5-24 08:19
yzwzfyz 发表于 2017-5-24 02:10
走单步,看它停在哪里,或在哪里死转。

补充:执行延时子程序时,用“过程单步”,即一步执行完毕。用keil c调试可查错。
作者: 黑点哥iii    时间: 2017-5-24 09:03
 走单步,看它停在哪里,或在哪里死转
作者: music1002    时间: 2017-5-24 10:09
用keil c调试




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1