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

📄 new.lst

📁 可调节的智能交通灯 程序
💻 LST
字号:
C51 COMPILER V7.06   NEW                                                                   01/17/2008 11:24:59 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE NEW
OBJECT MODULE PLACED IN new.OBJ
COMPILER INVOKED BY: D:\Program\keil c\C51\BIN\C51.EXE new.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg52.h>
   2          
   3          /*********************************************************************************************************
             -***
   4          端口定义:
   5          P1口的3个口控制交通灯,输出
   6          P2口的四个端口P2.0 2.1 2.2 2.3控制数码管,输出
   7          P0口的 0.4口用作启动开关 输入
   8          P0口的四个端口P0.0 0.1 0.2 0.3作为输入开关用,用以调节红绿灯的亮灭时间  输入
   9          初始值 红绿灯亮2秒(2000毫秒)
  10          可调节红绿灯亮灭的时间,每次调节必须等到一个周期 即左边的绿灯亮完红灯重新开始为起始点
  11          **********************************************************************************************************
             -***/
  12          sbit P10=P1^0;//输出交通灯
  13          sbit P11=P1^1;//输出交通灯
  14          sbit P12=P1^2;//输出交通灯
  15          sbit P00=P0^0;//输入开关
  16          sbit P01=P0^1;//输入开关
  17          sbit P02=P0^2;//输入开关
  18          sbit P03=P0^3;//输入开关
  19          sbit P04=P0^4;//启动开关
  20          
  21          
  22          void Initial(void);//系统初始化;
  23          int check(void);//判断是否改变 交通灯亮灭时间 返回参数
  24          void delay_ms(unsigned int i);//延时程序,单位毫秒
  25          /*
  26          初始化状态
  27          先对要输入的口P00~P04写1,表示要输入
  28          P10 11 12口输出0,交通灯全灭
  29          P2口输出0X0F,显示在数码管中
  30          */
  31          
  32          
  33          void Initial(void)//系统初始化
  34          {
  35   1      P00=1;
  36   1      P01=1;
  37   1      P02=1;
  38   1      P03=1;
  39   1      P04=1;//输入端口先写1
  40   1      P10=0;
  41   1      P11=0;
  42   1      P12=0;//交通灯先灭
  43   1      P2=0X0f;//计数灯先为F
  44   1      }
  45          /******************************************************************************************
  46          P03 使能开关,当其打开时,才判断其他时间选择开关的值
  47          三位值 高位到低位 P02 P01 P00
  48          ******************************************************************************************/
  49          int check(void) //判断是否改变 交通灯亮灭时间 返回参数
  50          {
  51   1        int count,P0,P1,P2;
  52   1        P0=~P00;
  53   1        P1=~P01;
C51 COMPILER V7.06   NEW                                                                   01/17/2008 11:24:59 PAGE 2   

  54   1        P2=~P02;
  55   1        count=P2 * 4+P1 * 2+P0;
  56   1         if(P03==1)
  57   1           return -1;
  58   1         else
  59   1           return count;
  60   1           
  61   1      }
  62          /*****************************************************************************************************
  63          未核实 精确延时时间   from 51系列单片机设计实例 (第二版)  楼然苗   北京航空航天大学出版社
  64          ******************************************************************************************************/
  65          void delay_ms(unsigned int i)//延时1毫秒程序
  66          {
  67   1         unsigned int j;
  68   1          while(i--)
  69   1         for(j=0;j<120;j++);   
  70   1      }
  71          
  72          /****************************************************************************************************
  73          修改延时时间
  74           返回值         左边红灯(P1.0)亮时间增减量        左边绿灯(P1.3)时间增减量      数码管显示值
  75                            右边绿灯亮时间增减量               右边红灯时间增减量 
  76            option                   (timel)                        (timer)
  77              0                       1(3)                            0(2)                     1
  78              1                       2(4)                            0(2)                     2
  79              2                       3(5)                            0(2)                     3
  80              3                       4(6)                            0(2)                     4 
  81              4                       0(2)                            1(3)                     5 
  82              5                       0(2)                            2(4)                     6
  83              6                       0(2)                            3(5)                     7
  84              7                       0(2)                            4(6)                     8
  85              -1                      0(2)                            0(2)                     0
  86          ****************************************************************************************************/
  87          
  88          void main(void)
  89          {
  90   1      /*
  91   1      变量说明:
  92   1      option 返回的交通灯亮灭参数check(void) 用来调节数码管输出
  93   1      timel  根据check(void)的值,调节后左边红灯(右边绿灯)的亮的时间
  94   1      timer  根据check(void)的值,调节后右边红灯(左边绿灯)的亮的时间
  95   1      */
  96   1        int option,timel, timer;//
  97   1        Initial();
  98   1       
  99   1        while(P04==1);//等到按下开关 电路开始运作
 100   1       /***********************调试输入输出端口********************************
 101   1       while(1)
 102   1        {if(P00==0)
 103   1          P10=1;
 104   1         else
 105   1          P10=0;
 106   1         if(P01==0)
 107   1          P11=1;
 108   1         else
 109   1          P11=0;
 110   1         if(P04==0)
 111   1          P12=1;
 112   1         else
 113   1          P12=0;
 114   1        }
 115   1        **********************************************************************/
C51 COMPILER V7.06   NEW                                                                   01/17/2008 11:24:59 PAGE 3   

 116   1        /***********************调试check函数********************************
 117   1        while(1)
 118   1        {
 119   1        int b;
 120   1        b=check();
 121   1        switch(b)
 122   1        {
 123   1         case -1:P10=0;P11=0;P12=0;break;
 124   1         case 0:P10=1;P11=0;P12=0;break;
 125   1         case 1:P10=0;P11=1;P12=0;break;
 126   1         case 2:P10=1;P11=1;P12=0;break;
 127   1         case 3:P10=0;P11=0;P12=1;break;
 128   1         case 4:P10=1;P11=0;P12=1;break;
 129   1         case 5:P10=0;P11=1;P12=1;break;
 130   1         case 6:P10=1;P11=1;P12=1;break;
 131   1         default :P10=0;P11=0;P12=0;break;
 132   1        }
 133   1        }
 134   1         **********************************************************************/
 135   1      /**/
 136   1        for(;;)
 137   1        {
 138   2            P10=1;//先亮左边红灯,右边绿灯
 139   2                P11=0;//黄灯灭
 140   2                P12=0;//灭左边绿灯,右边红灯
 141   2            option=check();//读入交通灯亮灭时间参数     
 142   2            P2=(option+1);
 143   2                if(option>=0)//参照上面的表
 144   2                 {
 145   3                   if(option<4)
 146   3                        {
 147   4                          timel=2+option+1;
 148   4                              timer=2;
 149   4                        }
 150   3                       else
 151   3                        {
 152   4                          timer=option-1;
 153   4                              timel=2;
 154   4                        }
 155   3                 }
 156   2             else
 157   2              {
 158   3                 timel=2;
 159   3                 timer=2;
 160   3              }
 161   2               
 162   2              delay_ms(timel*1000);//延时,延时时间根据读入参数定
 163   2                      P10=0;//灭左边红灯和右边绿灯
 164   2                      P11=1;//黄灯亮         //    黄
 165   2              delay_ms(300);        //     灯
 166   2                      P11=~P11;             //     闪
 167   2                      delay_ms(300);        //     烁
 168   2                      P11=~P11;             //     两
 169   2                      delay_ms(300);         //    次
 170   2                      P11=0;//黄灯灭
 171   2              P12=1;//亮左边绿灯,右边红灯
 172   2              delay_ms(timer*1000);
 173   2                      P12=0;//左边绿灯,右边红灯灭
 174   2              P11=1;//黄灯亮        //    黄
 175   2              delay_ms(300);        //    灯
 176   2                      P11=~P11;             //    闪
 177   2                      delay_ms(300);        //    烁
C51 COMPILER V7.06   NEW                                                                   01/17/2008 11:24:59 PAGE 4   

 178   2                      P11=~P11;             //    两
 179   2                      delay_ms(300);        //    次
 180   2                      P11=0;//黄灯灭        
 181   2        }
 182   1      /**/
 183   1      }
 184          
 185          


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