51單片機入門教程-2020版 程序全程純手打 從零開始入門

P18全部代碼,注意看作用域阿兄弟們:
#include <REGX52.H>
#include <INTRINS.H>
void Delay(unsigned int xms) //@11.0592MHz
{
unsigned char data i, j;
while(xms--)
{
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
void Timer0_Init(void)
{
TMOD &= 0xF0; //設置定時器模式
TMOD |= 0x01; //設置定時器模式
TL0 = 0x18; //設置定時初始值
TH0 = 0xFC; //設置定時初始值
TF0 = 0; //清除TF0標志
TR0 = 1; //定時器0開始計時
ET0 = 1;
EA = 1;
PT0 = 0;
}
unsigned int Key()
{
unsigned int KeyNumber = 0;
if(P3_1 == 0)
{
while(P3_1 == 0);
return KeyNumber = 1;
}
}
unsigned int LEDMode=0;
void main()
{
Timer0_Init();
P2 = 0xFE;
while(1)
{
unsigned int keyNum=0;
keyNum = Key();
if(keyNum)
{
if(keyNum == 1)
{
LEDMode++;
if(LEDMode >= 2)
{
LEDMode = 0;
}
}
}
}
}
unsigned int T0Count;
void Timer0_Routine() interrupt 1
{
TL0 = 0x18; //設置定時初始值
TH0 = 0xFC; //設置定時初始值
T0Count++;
if(T0Count >= 300)
{
T0Count=0;
if(LEDMode == 0)
{
P2=_crol_(P2,1);
}
if(LEDMode == 1)
{
P2=_cror_(P2,1);
}
}
}