任务;让八位数码管全部显示,从0-9循环;然后一位数码管显示一个数依次1-8。
下边的程序运行完第一步for之后就不正常了,写的是1-8一直显示,可是一但运行完for,后边就成了最后一个数码管从1开始到8,,,但是去掉for语句之后,后半部分程序正常。而且执行完任务二,程序就一直循环执行任务二(本来要连任务一一起循环执行的),这是怎么回事,麻烦大神看看程序;
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit d=P2^6;
sbit w=P2^7;
uchar x;
uchar code num[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};
void delay(int);
void main()
{
w=1;
P0=0x00;
w=0;
while(1)
{
for(x=0;x<10;x++) //所有的管显示同样的数字 0-9,即任务的第一步
{
d=1;
P0=num[x];
d=0;
delay(5000);
};
d=1; //开始任务第二步
P0=num[1];
d=0;
P0=0xff;
w=1;
P0=0xfe;
w=0;
delay(5);
d=1;
P0=num[2];
d=0;
P0=0xff;
w=1;
P0=0xfd;
w=0;
delay(5);
d=1;
P0=num[3];
d=0;
P0=0xff;
w=1;
P0=0xfb;
w=0;
delay(5);
d=1;
P0=num[4];
d=0;
P0=0xff;
w=1;
P0=0xf7;
w=0;
delay(5);
d=1;
P0=num[5];
d=0;
P0=0xff;
w=1;
P0=0xef;
w=0;
delay(5);
d=1;
P0=num[6];
d=0;
P0=0xff;
w=1;
P0=0xdf;
w=0;
delay(5);
d=1;
P0=num[7];
d=0;
P0=0xff;
w=1;
P0=0xbf;
w=0;
delay(5);
d=1;
P0=num[8];
d=0;
P0=0xff;
w=1;
P0=0x7f;
w=0;
delay(5); };
}
void delay(int xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=10;j>0;j--);
}
|