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

📄 jiaotongdeng.lst

📁 学期末的单片机实践作品--交通灯(含程序、仿真图、PCB)
💻 LST
字号:
C51 COMPILER V9.00   JIAOTONGDENG                                                          01/04/2013 16:40:46 PAGE 1   


C51 COMPILER V9.00, COMPILATION OF MODULE JIAOTONGDENG
OBJECT MODULE PLACED IN jiaotongdeng.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE jiaotongdeng.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #define uchar unsigned char
   3          #define uint unsigned  int
   4          sbit sw1=P3^0;
   5          sbit sw2=P3^1;
   6          sbit sw3=P3^2;
   7          sbit key_ew=P3^3;
   8          sbit key_sn=P3^4;
   9          sbit BZ=P3^5;
  10          uchar TH,TL; 
  11          uchar SN=30,EW=25,NN=60;
  12          uint tt,ii,jj,kk;
  13          uchar code DisCode[]
  14          ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  15          uchar Disbuff0[2];
  16          uchar Disbuff1[2];
  17          void Delay(uint x)//MS延时
  18          {
  19   1              uchar i;
  20   1              while(x--)for(i=0;i<123;i++);
  21   1      }  
  22          void init()
  23          {
  24   1       TMOD=0x01;      
  25   1       TH=(65536-4000)/256,
  26   1       TL=(65536-4000)%256;
  27   1       TH0=TH;
  28   1       TL0=TL;
  29   1       EA=1;
  30   1       ET0=1;
  31   1       TR0=1;
  32   1      }
  33          void fenli0()
  34          {
  35   1       Disbuff0[0]=SN/10;
  36   1       Disbuff0[1]=SN%10;
  37   1      }
  38          void fenli1()
  39          {
  40   1        Disbuff1[0]=EW/10;
  41   1        Disbuff1[1]=EW%10;
  42   1      }
  43          
  44          void Display()
  45          {
  46   1         uchar ii;
  47   1         if(ii==0)
  48   1         {   
  49   2           P0=0x80;
  50   2               P2=0x80;
  51   2           P2=DisCode[Disbuff0[0]]|0x80;
  52   2               P0=DisCode[Disbuff1[0]]&0x7f;
  53   2              }
  54   1               else
  55   1               { 
C51 COMPILER V9.00   JIAOTONGDENG                                                          01/04/2013 16:40:46 PAGE 2   

  56   2                P0=0x80;
  57   2                P2=0x80;
  58   2                P2=DisCode[Disbuff0[1]]&0x7f;
  59   2                P0=DisCode[Disbuff1[1]]|0x80;
  60   2               }                                                               
  61   1               ii=~ii;
  62   1      }
  63          void fuzhi()//赋值
  64          {
  65   1        if(NN==60)
  66   1        {
  67   2          SN=30;
  68   2              EW=25;
  69   2              P1=0x5E;
  70   2        }
  71   1        if(EW==0&&NN==35)
  72   1        {
  73   2          EW=5;
  74   2              P1=0x6E;
  75   2        }
  76   1        if(NN==30)
  77   1         {
  78   2          SN=25;
  79   2              EW=30;
  80   2              P1=0xB3;
  81   2         }
  82   1         if(SN==0&&NN==5)
  83   1         {
  84   2           SN=5;
  85   2               P1=0xB5;
  86   2         }
  87   1      }
  88          void LED()//LED
  89          {
  90   1        if(NN<=40&&NN>35)//
  91   1         {
  92   2          if(kk)
  93   2              {
  94   3            P1=0x5E;
  95   3              }
  96   2              else P1=0xfE; 
  97   2         }
  98   1         if(NN<=35&&NN>30)
  99   1          {
 100   2               if(kk)
 101   2               {
 102   3                P1=0x6E;
 103   3               }
 104   2               else P1=0xEE; 
 105   2              }
 106   1         if(NN<=10&&NN>5)
 107   1         {
 108   2          if(kk)
 109   2              {
 110   3            P1=0xB3;
 111   3              }
 112   2              else P1=0xF7; 
 113   2         }
 114   1         if(NN<=5)
 115   1          {
 116   2               if(kk)
 117   2               {
C51 COMPILER V9.00   JIAOTONGDENG                                                          01/04/2013 16:40:46 PAGE 3   

 118   3                P1=0xB5;
 119   3               }
 120   2               else P1=0xF5; 
 121   2              }
 122   1      }
 123          
 124          void qiangzhi_sw()//强制通行
 125          {         
 126   1          if(key_ew==0)
 127   1                {
 128   2                  TR0=0;
 129   2                      P0=0x3f;
 130   2                      P2=0x3f;
 131   2                      P1=0x5e;
 132   2                      while(!key_ew);          
 133   2                      TR0=1;
 134   2                }
 135   1               if(key_sn==0)
 136   1                {
 137   2                  TR0=0;
 138   2                      P0=0x3f;
 139   2                      P2=0x3f;
 140   2                      P1=0xb3;
 141   2                      while(!key_sn);          
 142   2                      TR0=1;
 143   2                }
 144   1      }
 145          void key1()//调时
 146          {
 147   1         uchar m=0,num=0,n=0;
 148   1         uchar sw11,sw22=1,sw33=1;
 149   1              if(sw1==0)
 150   1               {  
 151   2                 Delay(10);
 152   2                 if(sw1==0)
 153   2                  {             
 154   3                        while(!sw1);
 155   3                           num++;
 156   3                           TR0=0;
 157   3                        while(!m)
 158   3                         {  
 159   4                            if(n==1)
 160   4                                  { 
 161   5                                         if(sw11==1&&sw1==0)
 162   5                                              {
 163   6                                                 Delay(10);  
 164   6                                               if(sw11==1&&sw1==0)
 165   6                                                {
 166   7                                                      num++;
 167   7                                                }
 168   6                                              }
 169   5                                         if(num==3)
 170   5                                          {
 171   6                                             while(!sw1);
 172   6                                          } 
 173   5                                         sw11=sw1;               
 174   5                                  }   
 175   4                                      n=1;     
 176   4                                      Delay(3); 
 177   4                                 switch (num)
 178   4                                  {
 179   5                                        
C51 COMPILER V9.00   JIAOTONGDENG                                                          01/04/2013 16:40:46 PAGE 4   

 180   5                                        case 1:
 181   5                                               {                                                                                                                                              
 182   6                                                                       if(sw22==1&&sw2==0)
 183   6                                                                         {
 184   7                                                                           SN++;
 185   7                                                                               EW++;
 186   7                                                                               if(EW==100)
 187   7                                                                               {
 188   8                                                                                EW=5;
 189   8                                                                                SN=0;
 190   8                                                                               }
 191   7                                                                               if(SN==100)
 192   7                                                                               {
 193   8                                                                                SN=5;
 194   8                                                                                EW=0;
 195   8                                                                               }
 196   7                                                                               fenli0();
 197   7                                                                               fenli1();
 198   7                                                                         }    
 199   6                                                                        sw22=sw2;
 200   6                                                                        if(sw33==1&&sw3==0)
 201   6                                                                        {
 202   7                                                                          SN--;
 203   7                                                                              EW--;
 204   7                                                                          if(EW==255)
 205   7                                                                              {
 206   8                                                                            EW=94;
 207   8                                                                                SN=99;
 208   8                                                                              }
 209   7                                                                          if(SN==255)
 210   7                                                                              {
 211   8                                                                           SN=94;
 212   8                                                                               EW=99;
 213   8                                                                              }
 214   7                                                                          fenli0();
 215   7                                                                          fenli1();
 216   7                                                                        }
 217   6                                                                        sw33=sw3;
 218   6                                                                        Display();    
 219   6                                                               
 220   6                                                        } break;
 221   5                                      case 2:
 222   5                                               {
 223   6                                                          TR0=1;
 224   6                                                          m=1;
 225   6                                                              while(!sw1);
 226   6                                                              Delay(5);
 227   6                                                              while(!sw1);                                                                                       
 228   6                                                       } break;
 229   5                                                                      
 230   5                              }                                
 231   4                        }                                        
 232   3                 }                     
 233   2              }       
 234   1      }
 235          
 236          void main()
 237          {
 238   1       init();
 239   1       fenli0();
 240   1       fenli1();
 241   1       while(1)
C51 COMPILER V9.00   JIAOTONGDENG                                                          01/04/2013 16:40:46 PAGE 5   

 242   1       {
 243   2        qiangzhi_sw(); 
 244   2        key1();
 245   2       }
 246   1      
 247   1      }
 248          void timer0() interrupt 1
 249           {
 250   1        TH0=TH;
 251   1        TL0=TL;
 252   1        tt++;
 253   1        jj++;
 254   1       if(tt==250)
 255   1        {
 256   2          tt=0;
 257   2      
 258   2               fuzhi();
 259   2               EW--;
 260   2           SN--;
 261   2               if(SN==30)
 262   2                 {   
 263   3                      NN=61;   
 264   3                 }
 265   2               if(EW==30)
 266   2                 {   
 267   3                      NN=30;   
 268   3                 }
 269   2         if(EW<30||SN<30)
 270   2         {
 271   3               
 272   3           NN--;
 273   3               if(NN==0)
 274   3                 NN=60;
 275   3         }
 276   2         fenli0();
 277   2         fenli1();    
 278   2        }      
 279   1        Display();
 280   1        LED();
 281   1        if(jj==50)
 282   1        {
 283   2          jj=0;
 284   2          kk=~kk; 
 285   2        }
 286   1       }         


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    698    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     17       4
   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 + -