第十五课 按键之一 独立按键之按键原理
程序讲解:
/*--------------------------------------------------------------*/
//按键检测显示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
文章评论(0条评论)
登录后参与讨论