新闻  |   论坛  |   博客  |   在线研讨会
51单片机系列五:(定时器实现)长按键识别
0750long | 2009-07-10 11:33:38    阅读:3407   发布文章

 

本实验针对的对象:单片机初学者

编程语言:51单片机C语言

编写时间:2009.6.25

附件提供的资源:  1.      keil工程包(包括C语言源代码和hex文件等等)

                                    2.     Proteus仿真图

程序员: 小邹

特别说明: 欢迎大家下载,并提出修改或者优化意见

程序说明:一般情况下是按一下键led就亮,本程序实现的功能是你要按住一个键几秒钟之后led才亮,如果你再按住这个键几秒钟,led就灭

程序源代码展示:

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit key="P3"^7;
sbit led="P1"^0;
uchar tt;
void delay(uint z)
{
 uint x,y;
 for(x=z;x>0;x--)
  for(y=110;y>0;y--); 
}
void main()
{
 key=1;
 led=1;
 while(1)
 {
 if(key==0)
 {
  
  TMOD=0x01;
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  EA=1;
  ET0=1;
  TR0=1;
  while(1)
  {
   if(key==1)
   {
    break;
   }
  }
 }
 }
}
void timer_0() interrupt 1
{
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 if(key==0)
 {
  tt++;
 }
 else
 {
  TR0=0;
 }
 if(tt==60)
 {
  led=~led;
  delay(500);
  tt=0;
 }


}

请在这里下载附件:rar

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客