按钮检测(改进版)
来源:互联网 发布:蒙牛和伊利 知乎 编辑:程序博客网 时间:2024/05/16 17:41
/*
标题:范例 4-7
版本:1.0
Target:89S51
程序描述:这个范例说明如何使用按钮输入数据 */
/* ***************************************************** */
#include <REGX51.H>
#define TIMER0_COUNT 0XEE11/*10000h-(12,000,000/(12*200)) 每秒中断200次*/
#define TRUE 1
#define FALSE 0
#define TIMES 25
code
seven_seg[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,
0X90};
int c,ups,downs;
//
// 函数 timer0_isr 检查是否有按键按下。W 检查 P2_0和P2_1。当P2_0=0时,
//按钮可能被按下,但为避免无效信息造成误判,且消除弹跳时间,
//故延迟一段时间后再检查P2_0是否为0,依然是0的话就确认按键被按下。P2_1按钮的情况类似。
//
static void timer0_isr(void) interrupt TF0_VECTOR using 1
{
TR0=0;
TL0=(TIMER0_COUNT & 0x00FF);
TH0=(TIMER0_COUNT >> 8);
TR0=1;
if (ups !=0)
{ //检查ups等于0吗?
ups--; //如果ups不等于0,就将ups减1
if (ups==0 && P2_0==0)
{ //如果ups减到0,就检查P2_0==0
c++; // 如果P2_0是0就表示上数的弹跳按钮被按下,所以c加1
if(c==10) c=0; //如果c加到10,就将c恢复为0
}
} else if (P2_0==0) ups=TIMES; //如果ups=0且P2_0=0就将ups设
为25
if (downs !=0)
{ //检查downs等于0吗?
downs--; //如果downs不等于0,就将downs减1
if (downs==0 && P2_1==0)
{ //如果downs 减到0,就检查P2_1=0
c--; // 如果P2_1是0就表示下数的弹跳按钮被按下,所以c减1
if(c==-1) c=9; //如果c减到-1时,就将c恢复为10
}
} else if (P2_1==0) downs=TIMES; //如果downs=0且 P2_1 =0
就将downs设为25
P1=seven_seg[c];
}
static void timer0_initialize(void)
{
EA=0;
TR0=0;
TMOD &= 0XF0;
TMOD |=0x01;
TL0=(TIMER0_COUNT & 0x00FF);
TH0=(TIMER0_COUNT >> 8);
PT0=0;
ET0=1;
TR0=1;
EA=1;
}
void main (void)
{
c=0;
ups=0;
downs=0;
timer0_initialize();
P1=seven_seg[c];
while(1);
}
- 按钮检测(改进版)
- QT:图片按钮(改进版)
- 5-8 离散点检测(改进版无error)
- 按钮检测
- 人脸识别之人脸检测(十五)--改进版VJ人脸检测(LBP特征,VISAPP2017)
- 改进的图片按钮
- C语言实现linux网卡检测-改进版
- OJ1914(改进,通过OJ检测)
- 单选按钮检测
- Unity的Htc Vive手柄按钮检测(转)
- 都要学C(改进版)
- FindProcess (vc++ 改进版 )
- 蚂蚁搬家(改进版)
- 回文字符串(改进版)
- 贪吃蛇(改进版)
- VC2010 单文档动态创建按钮和响应函数 (请CSDN改进博客支持截图)
- 关于博客Read More按钮的改进
- Bootstrap3 按钮改进之个人学习笔记
- DDoS防御的八大方法详解
- 中文传值乱码问题
- 4×4小键盘输入
- 关于TimeSpan相关
- 在面试时遇到不了解的问题,如何顺畅的与面试人员交流?
- 按钮检测(改进版)
- 编故事
- javascript优化
- Google Adsense api 推荐介绍 ~!没有网站照样赚钱!
- 套接字模式—非阻塞模式开发(1)
- GNU Make手册阅读笔记(8)-- 第九章
- windows 上启用当前进程的用户调试权限
- 才写的J2ME手机游戏泡泡堂源码
- 【转载】在 Android 上更改與取得系統時區及時間