前言 大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁 主要内容含:
#include <REGX52.H>
void main()
{
while(1)//保持不间断的执行流
{
if(P3_1==0)//按下
{
P2_0=0;//灯灭
}
else//松手
{
P2_0=1;//灯亮
}
}
}
while(P3_1==0);
,使他实现【到达中间时间段,停下等待按钮状态:实现按下进入循环,松手跳出循环继续程序】#include <REGX52.H>
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
void main()
{
while(1)
{
if(P3_1==0)//按下
{
Delay(20);//在前一段抖动时间延时
while(P3_1==0);//到达中间时间段,停下等待按钮状态:实现按下进入循环,松手跳出循环继续程序
Delay(20);//在后一段抖动时间延时
P2_0=~P2_0;//取反
}
}
}
unsigned char LEDNum=0;
,让其在按下松开后++;控制LED模块的P2寄存器对其取反即可1111 1111
,再次++,变为0000 0000
,取反后变成1111 1111
,灯灭;#include <REGX52.H>
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
void main()
{
unsigned char LEDNum=0;
while(1)
{
if(P3_1==0)
{
Delay(20);
while(P3_1==0);
Delay(20);
LEDNum++;
P2=~LEDNum;
}
}
}
要确保两个按钮共同控制,因此要设置:
unsigned char LEDNum=8;
0x01;
,左右变换都从初始地址出发#include <REGX52.H>
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
unsigned char LEDNum=8;//常量
void main()
{
P2=~0x01;
while(1)
{
if(P3_1==0)
{
Delay(20);
while(P3_1==0);
Delay(20);
if(LEDNum>=8)
{
LEDNum=0;
}
else
{
LEDNum++;
}
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);
}
}
}