单片机中常用的几种函数
一、独立按键控制LED亮灭
#include <REGX52.H>
void main()
{
while(1)
{
if(P3_1==0||P3_0==0||P3_2==0||P3_3==0)//四个独立按键控制LED亮灭 按下亮 松开关
{
P2_0=0;
}
else
{
P2_0=1;
}
}
}
二、独立按键控制LED状态
控制LED状态时存在按键抖动
相应代码为
#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) //如果K1按键按下就亮
{
Delay(20); //延长消除抖动时间 即一直亮
while(P3_1==0); //重新按下之后P3_1==1 会跳出该循环 松手检测
Delay(20); //延长消除抖动时间
P2_0=~P2_0; //LED1取反
}
}
}
三、独立按键控制LED移位
#include <REGX52.H>
void Delay(unsigned int xms);
unsigned char LEDNum;
void main()
{
P2=~0x01; //上电默认LED1点亮
while(1)
{
if(P3_1==0) //如果K1按键按下
{
Delay(20);
while(P3_1==0);
Delay(20);
LEDNum++; //LEDNum自增
if(LEDNum>=8) //限制LEDNum自增范围
LEDNum=0;
P2=~(0x01<<LEDNum); //LED的第LEDNum位点亮
}
if(P3_0==0) //如果K2按键按下
{
Delay(20);
while(P3_0==0);
Delay(20);
if(LEDNum==0) //LEDNum减到0后变为7
LEDNum=7;
else //LEDNum未减到0,自减
LEDNum--;
P2=~(0x01<<LEDNum); //LED的第LEDNum位点亮
}
}
}
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}