单片机系列(三)之修改
2007-04-23 23:07
169 查看
今天参考了网上的一篇关于去抖动的程序,把昨天的改了一下,但并没有实现检测一个键同时按下两次或多次的情况。
/*
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|| FileName: key.c ||
|| Function: 实现一个按键控制一个灯的亮灭 ||
|| Author : Softstone ||
|| Date : 2007/04/21 ||
|| Email : softstonechwch@126.com ||
||$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
*/
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define LED P0 //LED接在P0口上,使用低四位,P0^0——P0^3
#define KEY P2
sbit LedCs= P3^7;
//函数声明
void Delay(void);
void KeyScan(void);
void main()
{
KEY = 0xff;
LED = 0xff;
LedCs = 0;
while (1)
{
KeyScan();
}
}
void KeyScan()
{
uchar temp;
while(1)
{
if ( KEY!=0xff )
{
Delay();
if ((KEY != 0xff) && (KEY != LED))
{
switch ( KEY )
{
case 0xfe: LED = 0xfe; break;
case 0xfd: LED = 0xfd; break;
case 0xfb: LED = 0xfb; break;
case 0xf7: LED = 0xf7; break;
default: break;
}
}
while (KEY == 0xff); //等待按键放下
}
}
}
/*############################
延时程序
*/
void Delay()
{
unsigned int kk=0x16ff;
do{_nop_();kk--;}
while(kk!=0);
}
/*
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
|| FileName: key.c ||
|| Function: 实现一个按键控制一个灯的亮灭 ||
|| Author : Softstone ||
|| Date : 2007/04/21 ||
|| Email : softstonechwch@126.com ||
||$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
*/
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define LED P0 //LED接在P0口上,使用低四位,P0^0——P0^3
#define KEY P2
sbit LedCs= P3^7;
//函数声明
void Delay(void);
void KeyScan(void);
void main()
{
KEY = 0xff;
LED = 0xff;
LedCs = 0;
while (1)
{
KeyScan();
}
}
void KeyScan()
{
uchar temp;
while(1)
{
if ( KEY!=0xff )
{
Delay();
if ((KEY != 0xff) && (KEY != LED))
{
switch ( KEY )
{
case 0xfe: LED = 0xfe; break;
case 0xfd: LED = 0xfd; break;
case 0xfb: LED = 0xfb; break;
case 0xf7: LED = 0xf7; break;
default: break;
}
}
while (KEY == 0xff); //等待按键放下
}
}
}
/*############################
延时程序
*/
void Delay()
{
unsigned int kk=0x16ff;
do{_nop_();kk--;}
while(kk!=0);
}
相关文章推荐
- sharepoint 2016 学习系列篇(8)-如何修改网站标题以及Logo
- Android【USB名称修改系列】第4项-如何修改BICR在PC"我的电脑"中显示的label名称
- Android【USB名称修改系列】第11项-如何修改preloader阶段的vcom口在windows右下角的提示框的字符串显示
- Android【USB名称修改系列】第14项-如何修改pc端設備管理器中"Android Phone"目錄下的設備名
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(11)-验证码实现和底层修改
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览
- 如何修改邮箱的英文界面:Exchange2003学习系列之三
- android加固系列—2.加固前先要学会破解,调试内存值修改程序走向
- Android打包系列 JAR反编译修改后重新打包
- MSP430系列单片机-读RAM数据烧写到Flash中
- 线段树系列-hdu-1394-Minimum Inversion Number-单点修改区间求和(求逆序对)
- STM8系列单片机命名规则
- FAQ系列 | 写新数据时某列值总是被自动修改
- SPI总线在51系列单片机系统中的实现
- 数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案
- 【开发过程问题汇总系列】【定时器】Timer运行的过程中把系统时间修改为以前的时间会停止运行的问题
- 单片机MCS-51系列指令快速记忆法
- IBM x系列服务器bnt 10G网卡禁用虚拟化修改方法 周龙宝
- zynq-7000系列基于zynq-zed的ramdisk文件系统的修改
- Community Server系列之七:快速找到需要修改的文件[技巧]