⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 4.lst

📁 51控制的十字路口交通灯 左右转 人行道
💻 LST
字号:
C51 COMPILER V7.06   4                                                                     04/16/2006 17:29:00 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 4
OBJECT MODULE PLACED IN 4.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 4.c

stmt level    source

   1          // cross road traffic light control system              
   2          // designed by chen jin yu   wu zhen quan      
   3          // 2006.4.10  at guang dong university of technology
   4          // information engineering college
   5          
   6          #include"reg51.h"
   7          unsigned char code table[]={  // seven segments LED code
   8                  0xC0,/*0*/
   9                  0xF9,/*1*/
  10                  0xA4,/*2*/
  11                  0xB0,/*3*/
  12                  0x99,/*4*/
  13                  0x92,/*5*/
  14                  0x82,/*6*/
  15                  0xF8,/*7*/
  16                  0x80,/*8*/
  17                  0x90,/*9*/};
  18          sbit A_R=P1^0;//A road Red light
  19          sbit A_G=P1^1;//A road Green light
  20          sbit A_Y=P1^2;//A road Yellow light
  21          sbit A_A=P1^3;//A road Arrow light
  22          sbit C_R=P1^4;//B road Red light
  23          sbit C_G=P1^5;//B road Green light
  24          sbit C_Y=P1^6;//B road Yellow light
  25          sbit C_A=P1^7;//B road Arrow light
  26          sbit B_R=P3^0;//C road Red light
  27          sbit B_G=P3^1;//C road Green light
  28          sbit B_Y=P3^2;//C road Yellow light
  29          sbit B_A=P3^3;//C road Arrow light
  30          sbit D_R=P3^4;//D road Red light
  31          sbit D_G=P3^5;//D road Green light
  32          sbit D_Y=P3^6;//D road Yellow light
  33          sbit D_A=P3^7;//D road Arrow light
  34          sbit PB1=P2^7;//primary road led bit 1
  35          sbit PB2=P2^6;//primary road led bit 2
  36          sbit SB1=P2^5;//secondary road led bit 1
  37          sbit SB2=P2^4;//secondary road led bit 2
  38          unsigned char CASE;// road situation
  39          unsigned char PT;//primary road time
  40          unsigned char ST;//secondary road time
  41          void display(unsigned char PT,unsigned char ST);//road  time display
  42          void init(void);//initialise system
  43          void delay(void);// led scan delay
  44          time0()interrupt 1 using 1//T0 interrupt serve (delay 50ms)
  45          { 
  46   1        unsigned char i;
  47   1        i++;
  48   1        TH0=-50000/256;
  49   1        TL0=-50000%256;
  50   1           if(i>20)
  51   1            {
  52   2             i=0;
  53   2             PT--;
  54   2                 ST--;
  55   2            }
C51 COMPILER V7.06   4                                                                     04/16/2006 17:29:00 PAGE 2   

  56   1      }
  57          
  58          void init(void)//initialise system
  59          { 
  60   1      P0=0x00;//initialise I\O ports
  61   1      P1=0xFF; 
  62   1      P2=0xFF;
  63   1      P3=0xFF;
  64   1      CASE=1;//the initial road situation
  65   1      TMOD=0x61;//initialise timer
  66   1      TH0=-50000/256;
  67   1      TL0=-50000%256;
  68   1      EA=1;
  69   1      ET0=1;
  70   1      TR0=1;
  71   1      }
  72          
  73          void display(unsigned char PT,unsigned char ST)//road time display function
  74          {
  75   1       unsigned char n;
  76   1       n=PT%10;
  77   1       PB1=0;
  78   1       P0=table[n];
  79   1       delay();
  80   1       delay();
  81   1       PB1=1;
  82   1       delay();
  83   1       n=PT/10;
  84   1       PB2=0;
  85   1       P0=table[n];
  86   1       delay();
  87   1       delay();
  88   1       PB2=1;
  89   1       delay();
  90   1       n=ST%10;
  91   1       SB1=0;
  92   1       P0=table[n];
  93   1       delay();
  94   1       delay();
  95   1       SB1=1;
  96   1       delay();
  97   1       n=ST/10;
  98   1       SB2=0;
  99   1       P0=table[n];
 100   1       delay();
 101   1       delay();
 102   1       SB2=1;
 103   1       delay();
 104   1       }
 105          
 106          void delay(void)// led scan delay
 107          {  int k;
 108   1         for(k=0;k<300;k++)
 109   1              ;
 110   1      }
 111          
 112          
 113          void main(void)
 114          {        
 115   1        init();
 116   1        while(1)
 117   1        {
C51 COMPILER V7.06   4                                                                     04/16/2006 17:29:00 PAGE 3   

 118   2          switch(CASE)
 119   2               {
 120   3                 case 1:
 121   3                      PT=15;
 122   3                  ST=75;
 123   3      
 124   3                              C_R=0;//C go ahead forbit
 125   3                              D_R=0;//D go ahead forbit
 126   3                              A_A=0;//A road turn left allow
 127   3                              A_R=0;
 128   3                              B_A=0;//B road turn left allow
 129   3                              B_R=0;
 130   3                      while(!(PT==0&&ST==0))
 131   3                  {
 132   4                               if(PT<6&&ST<66&&ST>PT)
 133   4                                   { 
 134   5                                         if(PT%2==1)
 135   5                                             {
 136   6                                              A_A=1;//A road turn left flash
 137   6                              B_A=1;//B road turn left flash
 138   6                                                      }
 139   5                                          else 
 140   5                              {
 141   6                                              A_A=0;
 142   6                              B_A=0;
 143   6                                                      }
 144   5                                        }
 145   4                   if(PT==0&&ST==60)
 146   4                              {
 147   5                                     PT=60;
 148   5                             A_A=1;//A road turn left forbid
 149   5                                     B_A=1;//B road turn left forbid
 150   5                                         A_G=0;//A road go ahead allow
 151   5                                         A_R=1;
 152   5                                         B_G=0;//B road go ahead allow
 153   5                                         B_R=1;
 154   5                         
 155   5                        }
 156   4                   if(PT<6&&ST<6)
 157   4                                          { 
 158   5                                                   A_G=1;
 159   5                                               B_G=1;
 160   5                                               if(PT%2==1)
 161   5                                                 {
 162   6                                                      A_Y=1;//A road yellow light flash
 163   6                                  B_Y=1;//B road yellow light flash
 164   6                                                          }
 165   5                                              else 
 166   5                                 {
 167   6                                                      A_Y=0;
 168   6                                  B_Y=0;
 169   6                                                      }
 170   5                                                 }
 171   4                           display(PT,ST);
 172   4                          }
 173   3                  A_G=1;//A road go ahead forbit
 174   3                          B_G=1;//B road go ahead forbit
 175   3                              CASE=2;
 176   3                              break;
 177   3                       
 178   3             
 179   3             case 2:
C51 COMPILER V7.06   4                                                                     04/16/2006 17:29:00 PAGE 4   

 180   3                      PT=55;
 181   3                  ST=10;
 182   3                              A_R=0;//A road go ahead forbit
 183   3                              B_R=0;//B road go ahead forbit
 184   3                  C_A=0;//C road turn left allow
 185   3                              C_R=0;
 186   3                              D_A=0;//D road turn left allow
 187   3                              C_R=0;
 188   3                      while(!(PT==0&&ST==0))
 189   3                    { 
 190   4                        if(PT<51&&ST<6&&PT>ST)
 191   4                                   { 
 192   5                                         if(PT%2==1)
 193   5                                             {
 194   6                                              C_A=1;//C road turn left flash
 195   6                              C_A=1;//C road turn left flash
 196   6                                                      }
 197   5                                          else 
 198   5                              {
 199   6                                              C_A=0;
 200   6                              C_A=0;
 201   6                                                      }
 202   5                                        }
 203   4                      if(PT==45&&ST==0)
 204   4                                  {
 205   5                                                ST=45;
 206   5                            C_A=1;//C road turn left forbid
 207   5                                        D_A=1;//D road turn left forbid
 208   5                                            C_G=0;//C road go ahead allow
 209   5                                                C_R=1;
 210   5                                            D_G=0;//D road go ahead allow
 211   5                                                D_R=1;
 212   5                            
 213   5                                               }
 214   4                      if(PT<6&&ST<6)
 215   4                                          { 
 216   5                                                   C_G=1;
 217   5                                               D_G=1;
 218   5                                               if(PT%2==1)
 219   5                                                 {
 220   6                                                      C_Y=1;//C road yellow light flash
 221   6                                  D_Y=1;//D road yellow light flash
 222   6                                                          }
 223   5                                              else 
 224   5                                 {
 225   6                                                      C_Y=0;
 226   6                                  D_Y=0;
 227   6                                                      }
 228   5                                                 }
 229   4                              display(PT,ST);
 230   4                             }
 231   3                  C_G=1;//C road go ahead forbit
 232   3                          D_G=1;//C road go ahead forbit
 233   3                              CASE=1;
 234   3                              break;
 235   3                         
 236   3             }
 237   2         }
 238   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V7.06   4                                                                     04/16/2006 17:29:00 PAGE 5   

   CODE SIZE        =    459    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -