原创 第十五课 按键之一 独立按键之按键原理

2009-5-25 19:43 3909 10 10 分类: MCU/ 嵌入式

第十五课 按键之一 独立按键之按键原理


程序讲解:


/*--------------------------------------------------------------*/
//按键检测显示LED
//Time: 19:22 2009-4-28



/*--------------------------------------------------------------*/
//包含头文件
#include <AT89X52.H>



/*--------------------------------------------------------------*/
//按键接口定义(对应实验板上的接口)
sbit K1 = P3^2;
sbit K2 = P3^3;



/*--------------------------------------------------------------*/
//延时10000+1us 函数定义
void delay10ms(void)
{
    unsigned char i,j;
    for(i=204;i>0;i--)
    for(j=23;j>0;j--);
}



/*--------------------------------------------------------------*/
//主函数
void main(void)
{
 unsigned char i;
 while(1)
 {
  if(!K1)      //判断有无按键按下,则对应IO口被拉低,即P3^2=0,此时K1也就为0
  {
   delay10ms();  //延时消抖
   if(!K1) P1 = ~i++; while(!K1){P1 = ~i;};  按键K1按下则i加1,取反~是因为LED低电平有效
  }
  if(!K2)    //判断有无按键按下,则对应IO口被拉低,即P3^3=0,此时K2也就为0
  {
   delay10ms();  //延时消抖
   if(!K2) P1 = ~i--; while(!K2){P1 = ~i;};   按键K2按下则i减1,取反~是因为LED低电平有效
  }
 }
}



本节重点:


1、按键消抖


2、  if(!K2) P1 = ~i--; while(!K2){P1 = ~i;};    语句。这句话可以有效控每次按键按下i只加1,希望大家能够体会这句话的内涵,在后面的课程中还会用到!


演示视频:


http://v.youku.com/v_show/id_XOTIzNjI2MjA=.html


相关程序:https://static.assets-stash.eet-china.com/album/old-resources/2009/5/25/f2489e58-a41d-4049-a4ad-a7f47485a1f6.rar


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
10
关闭 站长推荐上一条 /3 下一条