麻烦大神们看下这个程序,我用ISIS 7 Professional仿真为什么....
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uint i,f;
sbit wela=P2^0;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uchar code table_l[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0xff};
void main()
{
while(1)
{
for(f=3;f>0;f--)
{
for(i=0;i<10;i++)
{
wela=1;
P0=table_l[i];
delay(250);
}
}
wela=1;
P0=0x00;
wela=0; }
}
我想做的效果是自动循环走3次,然后长亮,为什么他会无限循环。锁存器用的是573,led灯共阳极的接法。
while语句的问题,把for语句提出来试试
for(f=3;f>0;f--)
for(i=0;i<10;i++)
{
wela=1;
P0=table_l[i];
delay(250);
}
while(1)
{
wela=1;
P0=0x00;
wela=0; }
楼上正确
那请问下如果我想加入闪烁这个环节应该加在哪里?这次仿真成功了,谢谢
仿真一开始全部灯都亮了一下很快,请问如何把这次亮消掉
感谢,那请问下如果我想加入闪烁这个环节应该加在哪里?这次仿真成功了,谢谢。
仿真一开始全部灯都亮了一下很快,请问如何把这次亮消掉。按复位键它还是按程序走,但是一开始会短暂的闪烁下,是单片机默认一开始给一次低电平导致的吗,谢谢
谢谢各位大神...我改好了,感谢。新的程序
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uint i,f,d,k;
sbit wela=P2^0;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uchar code table_l[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0xff};
void main()
{
for(f=3;f>0;f--)
for(i=0;i<10;i++)
{
wela=1;
P0=table_l[i];
delay(250);
}
for(d=3;d>0;d--)
{
wela=1;
P0=0x00;
wela=0;
delay(500);
wela=1;
P0=0xff;
wela=0;
delay(500);
wela=1;
P0=0x00;
wela=0;
delay(500);
}
for(k=8;k>0;k--)
{
wela=1;
P0=0x00;
wela=0;
delay(500);
}
}