一般,单片机上电默认是高电平,此时:P2=1111 1111(即十六进制的F),所有灯不亮,我们定义一个字符,初值取零,使其累加得到的结果与其相反,我们可以利用位运算中的取反,得到想要的结果
#include <REGX52.H>
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms--)
{ i = 2;
j = 239;
do
{
while (--j);
}
while (--i);
}
}
void main()
{
unsigned char m=0;
while(1)
{
if(P3_1==0)
{
Delay(20);
while(P3_1==0)
Delay(20);
m++;
P2=~m; //取反
}
}
}
↓