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

📄 hailai.lst

📁 多功能数字交通灯设计
💻 LST
字号:
C51 COMPILER V8.02   HAILAI                                                                08/12/2008 11:21:20 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE HAILAI
OBJECT MODULE PLACED IN hailai.OBJ
COMPILER INVOKED BY: E:\design tools\keilc\C51\BIN\C51.EXE hailai.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include <stdio.h>
   3          #define uchar     unsigned char
   4          #define uint      unsigned int
   5          sbit key1=P3^2;
   6          sbit key2=P3^3;
   7          sbit key3=P3^4;
   8          sbit wei=P3^7;
   9          sbit duan=P3^6;
  10          uchar h,count,num,dat,flag,dat1,num1,key1num,temp,keyc,keyz;
  11          uint r=0;
  12          uint s;
  13          uchar code  dis[]={
  14                                                                  
  15                  0Xc0,/*0*/
  16                  0Xf9,/*1*/
  17                  0Xa4,/*2*/
  18                  0Xb0,/*3*/
  19                  0X99,/*4*/
  20                  0X92,/*5*/
  21                  0X82,/*6*/
  22                  0Xf8,/*7*/
  23                  0X80,/*8*/
  24                  0X90,/*9*/
  25                  0Xff,/*NULL*/
  26          };
  27          
  28          
  29          void delay(uint c)
  30          {
  31   1         uint i,j;
  32   1          for(i=0;i<c;i++)
  33   1                for(j=0;j<100;j++);
  34   1              
  35   1      }
  36          
  37          void init()
  38          {
  39   1              TMOD=0x11;//设置定时器0为工作方式1
  40   1              TH0=(65536-10000)/256;
  41   1              TL0=(65536-10000)%256;
  42   1              TH1=(65536-20000)/256;
  43   1              TL1=(65536-20000)%256;
  44   1              EA=1;//开总中断
  45   1              ET0=1;//开定时器0中断
  46   1              ET1=1;
  47   1              TR0=1;//启动定时器0
  48   1              TR1=1;
  49   1              num=56;
  50   1              num1=56;
  51   1      //      P0=0xeb;
  52   1      }
  53          void display(uchar dat_z,uchar dat_c)   //送显示
  54          {       
  55   1                      if(dat_z>=23&&dat_z<=56)
C51 COMPILER V8.02   HAILAI                                                                08/12/2008 11:21:20 PAGE 2   

  56   1                      {
  57   2                              if(dat_z>26&&dat_z<=56)
  58   2                              {
  59   3                                  P0=0xeb;
  60   3              /*                      wei=1;
  61   3                                      P2=0x04;
  62   3                                      wei=0;
  63   3                                      delay(5);
  64   3      
  65   3                                      wei=1;
  66   3                                      P2=0x00;
  67   3                                      wei=0;
  68   3      
  69   3                                      duan=1;
  70   3      
  71   3                              P2=dis[(dat_z-23)/10];
  72   3                                      duan=0;
  73   3                               delay(1);
  74   3                                       wei=1;
  75   3                                      P2=0x00;
  76   3                                      wei=0;                   */
  77   3      
  78   3                      /*                       wei=1;
  79   3                              P2=0x08;
  80   3                                      wei=0;
  81   3      
  82   3                                      duan=1;
  83   3                              P2=dis[(dat_z-23)%10];
  84   3                                      duan=0;
  85   3                                       delay(1);
  86   3                                       wei=1;
  87   3                                       P2=0x00;
  88   3                                       wei=0;    */
  89   3                                       wei=1;
  90   3                                       P2=0x4;
  91   3                                       wei=0;
  92   3                                               
  93   3                                      P3=0x00;
  94   3                              P2=0xff;
  95   3                                      P3=0x10;
  96   3                                      P2=dis[(dat_c-26)/10];
  97   3                                      delay(1);
  98   3      
  99   3                /*
 100   3                                      P3=0x00;
 101   3                              P2=0xff;
 102   3                                      P3=0x20;
 103   3                                      P2=dis[(dat_c-26)%10];
 104   3                                      delay(1);                  */
 105   3                                }
 106   2      /*                      if(dat_z>=23&&dat_z<=26)
 107   2                              {
 108   2      
 109   2                                      P0=0xe2;
 110   2      
 111   2                                       P3=0x00;
 112   2                              P1=0xff;
 113   2                              P3=0x80;
 114   2                              P1=dis[(dat_z-23)%10];
 115   2                                       delay(1);
 116   2      
 117   2                                      P3=0x00;
C51 COMPILER V8.02   HAILAI                                                                08/12/2008 11:21:20 PAGE 3   

 118   2                              P2=0xff;
 119   2                                      P3=0x20;
 120   2                                      P2=dis[(dat_c-23)%10];
 121   2                                      delay(1);
 122   2                              }                        
 123   2                      }
 124   2                      if(dat_z<23)
 125   2                      {
 126   2                              if(dat_z>3&&dat_z<23)
 127   2                              {
 128   2                                      P0=0xdd;//红灯
 129   2                                      P3=0x00;
 130   2                              P1=0xff;
 131   2                              P3=0x40;
 132   2                              P1=dis[(dat_z)/10];
 133   2                               delay(1);
 134   2                                      P3=0x00;
 135   2                              P1=0xff;
 136   2                              P3=0x80;
 137   2                              P1=dis[(dat_z)%10];
 138   2                                       delay(1);               
 139   2                                      P3=0x00;
 140   2                              P2=0xff;
 141   2                                      P3=0x10;
 142   2                                      P2=dis[(dat_c-3)/10];
 143   2                                      delay(1);
 144   2      
 145   2      
 146   2                                      P3=0x00;
 147   2                              P2=0xff;
 148   2                                      P3=0x20;
 149   2                                      P2=dis[(dat_c-3)%10];
 150   2                                      delay(1);
 151   2                              }       
 152   2                                               if(dat_z<=3)
 153   2                                              {
 154   2      
 155   2                                                      P0=0xd4;
 156   2                                                       P3=0x00;
 157   2                                              P1=0xff;
 158   2                                              P3=0x80;
 159   2                                              P1=dis[(dat_z)%10];
 160   2                                                       delay(1);
 161   2                      
 162   2                                                      P3=0x00;
 163   2                                              P2=0xff;
 164   2                                                      P3=0x20;
 165   2                                                      P2=dis[(dat_c)%10];
 166   2                                                      delay(1);
 167   2                                                      
 168   2                                              }        */
 169   2                      }                               
 170   1                              
 171   1                               
 172   1      }
 173          void keyscan() //键盘检测
 174          {
 175   1              if(key1==0)
 176   1              {
 177   2                      delay(5);
 178   2                      if(key1==0)
 179   2                      {
C51 COMPILER V8.02   HAILAI                                                                08/12/2008 11:21:20 PAGE 4   

 180   3                              key1num++;
 181   3                              while(!key1)
 182   3                              {
 183   4                                      display(num,num1);
 184   4                              }
 185   3                              if(key1num==1)
 186   3                              {
 187   4                                      TR0=0;
 188   4                                      TR1=0;
 189   4                              }
 190   3                              if(key1num==2)
 191   3                              {
 192   4                                      TR0=1;
 193   4                                      TR1=1;
 194   4                                      P1=temp;
 195   4                                      key1num=0;
 196   4      
 197   4                              }
 198   3                      }
 199   2              
 200   2              }
 201   1                      if(key1num!=0)
 202   1                      {       
 203   2                              if(key2==0)
 204   2                              {
 205   3                                      delay(5);
 206   3                                      if(key2==0)
 207   3                                      {
 208   4                                              while(!key2)
 209   4                                              {
 210   5                                                      display(num,num1);
 211   5                                              }
 212   4                                              if(key1num==1)
 213   4                                              {
 214   5                                                      num++;
 215   5                                                      display(num,num1);
 216   5                                                      
 217   5                                              }
 218   4                                              if(key1num==2)
 219   4                                              {
 220   5                                                      num++;
 221   5                                                      display(num,num1);
 222   5                                              }
 223   4                                      }
 224   3                              }
 225   2                          if(key3==0)
 226   2                              {
 227   3                                      delay(5);
 228   3                                      if(key3==0)
 229   3                                      {
 230   4                                              while(!key3)
 231   4                                              {
 232   5                                                      display(num,num1);
 233   5                                              }
 234   4                                              
 235   4                                                      if(key1num==1)
 236   4                                                      {
 237   5                                                              if(num==0)
 238   5                                                              num=32;
 239   5                                                              num--;
 240   5                                                      }
 241   4                                              
C51 COMPILER V8.02   HAILAI                                                                08/12/2008 11:21:20 PAGE 5   

 242   4      
 243   4                                      }
 244   3                              }
 245   2                      }
 246   1      }        
 247          void main()  //主函数
 248          {
 249   1              init();
 250   1              while(1)
 251   1              {       
 252   2              keyscan();
 253   2                      if(count==8)
 254   2                      {
 255   3                              count=0;
 256   3                              num--;
 257   3                              num1--;
 258   3                              
 259   3                              if(num==-1)
 260   3                              {
 261   4                                      num=56;
 262   4                              }
 263   3                              if(num1==-1)
 264   3                              {
 265   4                                      num1=56;
 266   4                              }
 267   3                      }
 268   2                      display(num,num1);
 269   2              }
 270   1      }
 271          void t0(void ) interrupt 1  //定时器T0
 272          {
 273   1              TH0=(65535-50000)/256;
 274   1              TL0=(65535-50000)%256;
 275   1              count++;
 276   1      //      num1++; 
 277   1      
 278   1              
 279   1      }
 280          void time1() interrupt 3        //定时器T1
 281          {
 282   1              TH1=(65536-20000)/256;
 283   1              TL1=(65536-20000)%256;
 284   1      
 285   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    304    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     15    ----
   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 + -