微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机 交通灯程序

单片机 交通灯程序

时间:10-02 整理:3721RD 点击:
求大神们解释下主函数里面每个程序语句的意思!谢谢!
#include<reg52.h>
#define uchar unsigned char
bit flag1=0,flag2=0;
sbit S1=P3^0;
sbit S2=P3^1;
uchar code seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0} ;
uchar dis[8];
uchar ns=30,we=30;
uchar t1_counter=0;
void delayms(uchar ms)
{
  uchar i;
  while(ms--)
  for(i=0;i<123;i++);
}
void display(uchar dis[ ])
{
  uchar i;
  for(i=0;i<8;i++)
  {
   P0=seg[dis[i]];
   P2|=i;
   delayms(1);
  }
}
void main(void)
{
  TMOD=0x10;  
  TR1=1;
  EA=1;
  ET1=1;
  while(1)
  {
   dis[0]=ns/10;
   dis[1]=ns%10;
   dis[2]=11;
   dis[3]=11;
   dis[4]=11;
   dis[5]=11;
   dis[6]=we/10;
   dis[7]=we%10;
   display(dis) ;
   if(S1==0)
   {
    delayms(10);
    while(S1==0);
    if(S1)
    {
     delayms(10);
     if(S1)
     {
      while(1)
      {
           P1=0xcc;
       delayms(100);
       P1=0xff;
       delayms(100);
       EA=0;
       if(S2==0)
       {
            delayms(10);
        while(S2==0);
        if(S2)
            {
             delayms(10);
         if(S2)
         {
                  break;
         }
        }
       }
      }          
     }            
    }
   }
   if(S2==0)
   {
    delayms(10);
    while(S2==0);
    if(S2)
    {
         delayms(10);
     if(S2)
     {
          P1=0x3c;
      EA=1;
          }
         }
        }
}
}
void t1_int(void) interrupt 3
{
TH1=15536/256;
TL1=15536%256;
if(++t1_counter==20)
{
  t1_counter=0;
  if(flag1==0)
  {  
   if(flag2==0)P1=0xdb;
   else P1=0x7e;
   if((--ns==0)||(--we==0))
   {
    flag2=~flag2;
    ns=6;
    we=6;
    flag1=~flag1;
   }
  }
   if(flag1==1)
   {
    P1=0xb7;
    if((--ns==0)||(--we==0))
    {
    flag1=~flag1;
        ns=30;
        we=30;
    }
   }
}
}

niTmde zai dou 我      

这个程序正确吗? 有没有电路图啊?  

are you kidding ?

你可以看看郭天祥的10天学会单片机视频,
会让你受益匪浅。

这都不懂?

晕了,自己要写学习学习呀

加扣扣私聊。。

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

网站地图

Top