兄弟,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;
} |