考研笔试:单片机51之按键控制LED

1、问题要求

2、解决代码 

#include<reg52.h>
#define uchar unsigned char
uchar count=0;
void Time0_init();

sbit button=P3^1;
sbit LED=P3^0;

void main()
{
Time0_init();
while(1)
{
  if(button==1)
  {
    EA=0;
	ET0=0;
	count=0;
  }
  else if(button==0)
  {
    EA=1;
	ET0=1;
  }
}
}

void Time0_init(){
TMOD=0X01;
TH0=(65536-20000)/256;//20000us=20ms=0.02s
TL0=(65536-20000)%256;
TR0=1;
}

void Time0_service() interrupt 1
{
  TH0=(65536-20000)/256;//20000us=20ms=0.02s
  TL0=(65536-20000)%256;
  count++;
  if((count>=10)&&(count<100))
  {
     if(button==0)
	 {
	   LED=0;
	
	 }
  }
  else if(count>=100)
  {
     if(button==0)
	 {
	   LED=1;
	 }
  }

}

3、仿真说明

长按0.2秒后,松开亮:

长按2s后,松开灭: 

发布了64 篇原创文章 · 获赞 70 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/fanjufei123456/article/details/105245664
今日推荐