#include <REGX52.H>
void Delay(unsigned int xms);//如果子函数放在了主函数后边,一定要在主函数前面声明一下
unsigned char LEDNum;//全局变量,上电默认为0
void main()
{
//unsigned char LEDNum=0;局部变量一定要赋初值
P2=~0x01;
while(1)
{
if(P3_1==0)//左移
{
Delay(20);
while(P3_1==0);
Delay(20);
LEDNum++;
if(LEDNum>=8)
LEDNum=0;
P2=~(0x01<<LEDNum);
}
if(P3_0==0)//右移
{
Delay(20);
while(P3_0==0);
Delay(20);
if(LEDNum==0)
LEDNum=7;
else
LEDNum--;
P2=~(0x01<<LEDNum);
}
}
}
void Delay(unsigned int xms) //@12.000MHz
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
如果子函数体放在主函数体的后边,则一定要在主函数前边进行声明;因此我们在主函数中调用其它文件中的函数时,必须在最前边进行包含头文件操作,因为头文件是对一些函数的声明。也就是说我们单片机在执行主函数之前,准备工作要做好,所有的头文件都是准备工作,主函数只负责拿过来用。
全局变量上电默认为0,所以可以不进行赋初值;
局部变量则不可以,一定要赋初值。