关于C51释放按键与后沿消抖
2016-06-15 05:31
281 查看
/****************************
独立按键,按一次按键,LED灯
左移一位
****************************/
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit Key=P1^0;
void delayms(uint z);
void main()
{
P0=0xFE;
Key=0x01;
while(1)
{
if(!Key)
{
delayms(10);
//延时10MS前沿消抖
if(!Key)
{
P0=_crol_(P0,1);
//while(!Key);
//如果不加按键释放语句,LED灯会不断左移动直到释放按键,
//人为按键时间要大于10MS,所以导致Key的状态多次检测。
//同时,这个语句是消耗CPU的,最好用定时中断解决。
//delayms(10);
//后沿没有必要消抖,因为按键都弹上去了,除非按键损坏。
}
}
}
}
void delayms(uint z) //延时约1MS
{
uint x,y;
for(x=z;x>0;x--)
{
for(y=114;y>0;y--);
}
}
独立按键,按一次按键,LED灯
左移一位
****************************/
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit Key=P1^0;
void delayms(uint z);
void main()
{
P0=0xFE;
Key=0x01;
while(1)
{
if(!Key)
{
delayms(10);
//延时10MS前沿消抖
if(!Key)
{
P0=_crol_(P0,1);
//while(!Key);
//如果不加按键释放语句,LED灯会不断左移动直到释放按键,
//人为按键时间要大于10MS,所以导致Key的状态多次检测。
//同时,这个语句是消耗CPU的,最好用定时中断解决。
//delayms(10);
//后沿没有必要消抖,因为按键都弹上去了,除非按键损坏。
}
}
}
}
void delayms(uint z) //延时约1MS
{
uint x,y;
for(x=z;x>0;x--)
{
for(y=114;y>0;y--);
}
}
相关文章推荐
- 51单片机模拟简单交通灯
- 51单片机延时程序探讨
- 利用US-100超声波传感器测距的核心代码
- 51单片机串口通信及波特率寄存器设置
- [51]12864液晶程序
- [51]1602液晶程序
- [51]数码管作时钟
- [51]简单按键计数程序
- STC15W4K32S系列 低速模式
- 51单片机英文全称
- STC15W4K32S4 系列 T0定时器输出时钟
- 定时器0控制LED闪灭
- 51单片机配合超声波测距以及用1602液晶进行显示
- 51单片机在Keil中使用printf进行串口输出
- C语言编程技巧----如何定义全局变量----->提高代码可移植性
- 电子研发联盟-红外调光灯设计
- 红外遥控解码,中断方式,51汇编代码
- 51单片机的边沿触发及电平触发简介及测量
- 基于51单片机modbusRTU从机设计
- STC单片机timer2捕获模式测频率