兄弟,main函數不是這樣用的啊,你這C語言掌握的不是很好啊,有時間還是先看看C語言再編程,加油
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
sbit button = P3^2;//外部中斷P3^2和P3^3使用中斷可以不用位定義
sbit button1 = P3^3;//外部中斷P3^2和P3^3使用中斷可以不用位定義
int i=8,j=8;
bit press = 1;
uchar luishui = 0xfe;
uchar luishui1 = 0xfe;
//*******延時函數*********//
void Delay(uchar z)
{
uchar x, y;
for(x = z; x > 0; x--) for(y = 255; y > 0; y--);
}
//*********流水燈函數**********//
int choose()
{
if(i>7) //判斷P0流水燈是否循環了1次(依次點亮8個燈)
{
P0=0xff; //P0消隱
}
else //流水燈循環
{
P0=luishui;
luishui=_crol_(luishui,1);
i++; //判斷點亮的次數
}
if(j>7) //判斷P1流水燈是否循環了一次
{
P1=0xff;
}
else
{
P1=luishui1;
luishui1=_crol_(luishui1,1);
j++;
}
Delay(200); //延時
if(i>7&&j>7) //判斷兩個燈是否都循環完
return 0;
else
return 1;
}
//*********主函數***********//
void main()
{
int k=1;
IT0 = 1;//中斷初始化
EX0 = 1;
IT1 = 1;
EX1 = 1;
EA = 1;
while(press) {P1=0xff;P0=0xff;} //等待按鍵按下
while(!press)
{
while(k)
{
k=choose();
}
if(i==8&&j==8)press=1;
}
}
//**********中斷0子程序*********//
void X0_INT() interrupt 0 //中斷0的中斷號為0
{
press=0;
luishui=0xfe;
i=0;
}
//**********中斷1子程序*********//
void X1_INT() interrupt 2 //中斷1的中斷號為2,中斷號1是定時器0的中斷號
{
press=0;
luishui1=0xfe;
j=0;
} |