标题: 为什么我这样用定时器做交通灯会不按规定动作?单片机定时器的工作顺序又是怎样的? [打印本页]

作者: xiazhangle    时间: 2015-10-17 16:55
标题: 为什么我这样用定时器做交通灯会不按规定动作?单片机定时器的工作顺序又是怎样的?
#include<reg51.h>
sbit NBG=P2^0;
sbit NBY=P2^1;
sbit NBR=P2^2;
sbit DXG=P2^3;
sbit DXY=P2^4;
sbit DXR=P2^5;
int t,j;
void delay250ms(void)   //误差 0us
{
    unsigned char a,b,c;
    for(c=11;c>0;c--)
        for(b=92;b>0;b--)
            for(a=122;a>0;a--);
}

void main()
{
  P2=0;
  TMOD=0X02;
  IE=0X82;
  TH0=(65536-5000)/256;
  TL0=(65536-5000)%256;
  TR0=1;
  while(1)
    {if(t<1000)
  {
    DXG=1;
        NBR=1;
        DXY=0;
        NBY=0;
        DXR=0;
  }
  if((t>1000)&&(t<2000))
  {
    DXG=0;
        NBR=1;
        for(j=0;j<5;j++)
        {
          DXY=~DXY;
          delay250ms();
        }
  }
  if((t>2000)&&(t>3000))
  {
    NBG=1;
        DXR=1;
        NBR=0;
        DXY=0;
  }
  if((t>3000)&&(t<4000))
  {
    NBG=0;
    DXR=1;
        for(j=0;j<5;j++)
        {
          NBY=~NBY;
          delay250ms();
        }
  }
  }
}
void trafficlight() interrupt 1
{
  t++;
  if(t<4000)
        return;
        t=0;  
}


作者: ok66    时间: 2015-10-17 17:40
网上有计算软件
作者: xiazhangle    时间: 2015-10-17 20:14
ok66 发表于 2015-10-17 17:40
网上有计算软件

我入门菜鸟,想自己写些东西,请高手指导指导





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1