微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 按一个按钮后,当到一定时间时,LED1灯亮起来,另一时段时LED2...

按一个按钮后,当到一定时间时,LED1灯亮起来,另一时段时LED2...

时间:10-02 整理:3721RD 点击:

老师的作业,一个定时器的应用,如题,麻烦大家帮一下,搞了通宵都做不出来.多谢!
请问大家有没有定时器的例子,我想在一个程序里,按一个按钮后,当到一定时间时,LED1灯亮起来,另一时段时LED2也亮起来
想实现的功能是:
一直接下A开关9秒后,判断B开关有没有按下,如果没有按下,则led_in亮起来,当15分钟后,Led亮起来,
现在一直按下A开关15分钟后,LED亮起来已可以实现
但A开关保持持续被按下9秒时,判断B开关有没有按下,如果没有按下,则led_in亮起来,这个不知怎样实现.
多谢!
下面是我现在的程序:
#include <reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sbit akey=P2^0;     //A开关
sbit inkey=P2^1;     //B开关
////////////////////////////
sbit led=P1^0;     //
sbit led_in=p1^1
bit t_sen_flag=0;
int t_count=0;
///////////////////////////下面为中断程序模块/////////////////////////
void init() //初始化数据
{
TMOD = 0x11;
TH0  = 0x3C; //(12MHZ的晶振赋值TH0=0x3C;TL0=0xB0;)
TL0  = 0xB0;
EA   = 1;
ET0  = 1;
TR0  = 0;
}
void Timer0(void) interrupt 1
{
    TH0=0x3C;
TL0=0xB0;
  t_flag_time=1;
}      
////////////////////////////////////////////////////////////////////////////
uchar K=0;
void keyscan()                     //按键扫描
{
if(akey==0)                      //"A开关"是否被按下
{
      delay(10);               
  if(akey==0)                  
     {
          while(!akey);        
          K=1;
     }
}
   
if(inkey==0)                      //"B开关"是否被按下
{
   delay(10);                     
  if(inkey==0)                     
     {
        while(!inkey);            
         K=2;   
      }
}
}
////////////////A开关一直被按下,即就是A开关一直得到信号///////15000/////////////////////////////////////////////////////
if(t_sen_flag==1)      //A key一直按着则会启动该程序
{
  if(t_count<15000)    //十五分钟时间判定
   {t_count++;}
   else
   {
   led=1;
   t_count=0;
   t_sen_flag=0;
   TR0=0;}
}
/////////////////////////////////////////////////////////////////////////////
void main()
{
P1=0x90;
led=0;
led_in=0;                              //LED 初始化
    init();                               //中断服务初始化
      while(1)
         {        
      keyscan();
    switch(K)
    {
    case 1:                          //按下A开关
        {      
       TR0=0;            
       t_sen_flag=1;
       t_count=0;
       TR0=1;
        };break;
     default:break;
    }
       }
}

有高手帮下忙吗?下星期一得交作业了,多谢多谢。

求高手出现解答难题。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top