当前位置: 代码迷 >> 单片机 >> 请教大家有没有定时器的例子
  详细解决方案

请教大家有没有定时器的例子

热度:84   发布时间:2016-04-28 15:25:09.0
请问大家有没有定时器的例子
请问大家有没有定时器的例子,我想在一个程序里,按一个按钮后,当到一定时间时,LED1灯亮起来,另一时段时LED2也亮起来

------解决方案--------------------

bit key_1=0;
unsigned int kcnt;
sbit key=P0^0;//
void init_sys(void)
{
TH0=0xD8;     //mode 1,[email protected]
TL0=0xf0;
ET0=1; //定时器0中断开
ET1=0; //定时器1中断关
TR0=1; //not need
TR1=1;
IT0=0; //INT0 Down Edge //Active                       xxxINT0 LOW Active
ES=1; //串口中断开
RI=0;
REN=1;//允许接收
}
void delay_ms(unsigned int n)
{
uchar i;
while(n!=0)
{
for(i=0;i<=133;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
n--;
}
}
void main(void)
{
init_sys();
delay_ms(900);
tx_buf("testtesttestest",16);
lcm_init();
while(1)
{
            if(key_1=1){亮第二个灯;key_1=0;}
}
}
void Timer0(void) interrupt 1
{
TH0=(65535-10000)>>8;
TL0=(65535-10000)&0X00FF;
if(key==0)
{
        if(kcnt<200)kcnt++;
if(kcnt==2)key_1=1;
}
else kcnt=0;
key=1;
}

------解决方案--------------------
程序懒得写了,给你一个思路吧,使用单片机的定时器\计数器功能,工作再定时器模式,两个定时器的定时时间不同,再进行键盘扫描,扫描到有按键按下时开中端和定时器;在终端函数里点亮LED灯,由于定时时间不一样,会在不同的时间点亮
另一个办法就是自己写延时函数了
推荐第一个种,能加深定时终端的了解
------解决方案--------------------
支持二楼,不过也不用使用两个定时器,直接在定时器中断中进行计数,代替延时,然后也能够保证Led2每次都在Led1后亮
  相关解决方案