任務;讓八位數碼管全部顯示,從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--);
}
|