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

📄 traffic.lst

📁 交通指示灯的控制小程序 用的是80c51单片机 可进行十字路口四个方向的控制 采用的是keil_c的编译器
💻 LST
字号:
C51 COMPILER V8.02   TRAFFIC                                                               10/08/2000 11:39:27 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE TRAFFIC
OBJECT MODULE PLACED IN Traffic.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Traffic.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          //P1_0表示南北红灯
   3          sbit P1_0=P1^0;
   4          //P1_1表示南北绿灯
   5          sbit P1_1=P1^1;
   6          //P1_2表示南北黄灯
   7          sbit P1_2=P1^2;
   8          //P1_3表示东西红灯
   9          sbit P1_3=P1^3;
  10          //P1_4表示东西绿灯
  11          sbit P1_4=P1^4;
  12          //P1_5表示东西黄灯
  13          sbit P1_5=P1^5;
  14          sbit P1_6=P1^6;
  15          sbit P1_7=P1^7;
  16          
  17          sbit P3_4=P3^4;
  18          sbit P3_5=P3^5;
  19          /*时序:
  20                  启动时先南北红灯亮 东西绿灯亮
  21                  25秒后东西绿灯转为黄灯每秒闪一次
  22                          则亮0.5秒再灭0.5秒 闪5次之后
  23                          转为南北绿灯亮东西红灯亮
  24                          25秒后南北绿灯转为黄灯每秒闪一次
  25                          则亮0.5秒再灭0.5秒 闪5次
  26                          然后循环 则60秒一个循环*/
  27          unsigned char Count;
  28          unsigned char HalfSecond;
  29          
  30          void Timer0_Init(void)
  31          {
  32   1        TMOD=0x01;//T0为16位定时器计数器
  33   1        TH0=-50000/256;
  34   1        TL0=-50000%256;//用12兆晶振时为50毫秒溢出一次
  35   1      }
  36          
  37          void IO_Init(void)
  38          {
  39   1        P0=0x00;
  40   1        P1=0x00;
  41   1        P1=0x11; //南北红灯亮 东西绿灯亮
  42   1        P3=0xff;
  43   1      }
  44          void System_Init(void)
  45          {
  46   1        IO_Init();
  47   1        Timer0_Init();
  48   1        TR0=1;
  49   1        ET0=1;
  50   1        EA=1;
  51   1      }
  52          //用两位LED的动态显示以显示南北或东西方向的时间
  53          code unsigned char Table[10]={0x3f,};
  54          xdata unsigned char Dis_Buf[2]={0};
  55          
C51 COMPILER V8.02   TRAFFIC                                                               10/08/2000 11:39:27 PAGE 2   

  56          void NmDelay(unsigned char n)
  57          {
  58   1        unsigned char i=0;
  59   1        while(n--)
  60   1        {
  61   2          for(i=0;i<125;)
  62   2               i++;
  63   2        }
  64   1      }
  65          void PreDisplay(void)
  66          {
  67   1        unsigned char Temp=0;
  68   1        Temp=HalfSecond/2;
  69   1        if(Temp>25&&Temp<30)
  70   1        Temp-=25;
  71   1        if(Temp>30&&Temp<55)
  72   1        Temp-=30;
  73   1        if(Temp>55)
  74   1        Temp-=55;
  75   1        Dis_Buf[0]=Temp/10;
  76   1        Dis_Buf[1]=Temp%10;
  77   1      }
  78          
  79          void Display(void)
  80          {
  81   1        PreDisplay();
  82   1        P0=Table[Dis_Buf[1]];
  83   1        P3_5=0;
  84   1        NmDelay(10);
  85   1        P0=Table[Dis_Buf[0]];
  86   1        P3_5=1;
  87   1        P3_4=0;
  88   1        NmDelay(10);
  89   1      }
  90          
  91          main()
  92          {
  93   1        SP=0x60;
  94   1        System_Init();
  95   1        while(1)
  96   1        {
  97   2          Display();
  98   2        }
  99   1      }
 100          
 101          void Timer0(void) interrupt 1 using 1
 102          {
 103   1        //TR0=1;
 104   1        ET0=0;
 105   1        if(Count++==10)
 106   1        {
 107   2          Count=0;
 108   2          HalfSecond++; 
 109   2          if(HalfSecond==50)
 110   2          {
 111   3            P1_4=0;
 112   3                P1_5=1;
 113   3          }
 114   2          if(HalfSecond>50&&HalfSecond<60)
 115   2          {
 116   3            if(((HalfSecond-50)%2)!=0)
 117   3              P1_5=0;
C51 COMPILER V8.02   TRAFFIC                                                               10/08/2000 11:39:27 PAGE 3   

 118   3                else P1_5=1;
 119   3          }
 120   2              if(HalfSecond==60)
 121   2              {
 122   3                P1_5=0;
 123   3                P1_0=0;
 124   3                P1_1=1;
 125   3                P1_3=1;
 126   3              }
 127   2              if(HalfSecond==110)
 128   2              {
 129   3                P1_1=0;
 130   3                P1_2=1;
 131   3              }
 132   2              if(HalfSecond>110&&HalfSecond<120)
 133   2          {
 134   3            if(((HalfSecond-110)%2)!=0)
 135   3              P1_2=0;
 136   3                else P1_2=1;
 137   3          }
 138   2              if(HalfSecond>=120)
 139   2              {
 140   3                 HalfSecond=0;
 141   3                 P1_0=1;
 142   3                 P1_4=1;
 143   3                 P1_3=0;
 144   3           }
 145   2        }     
 146   1        ET0=1; 
 147   1      }


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