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

📄 traffic.lst

📁 基于51的简单交通灯模拟,对那些刚刚入门的朋友可能有所帮助
💻 LST
字号:
C51 COMPILER V7.06   TRAFFIC                                                               08/15/2008 01:20:34 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE TRAFFIC
OBJECT MODULE PLACED IN traffic.OBJ
COMPILER INVOKED BY: f:\Keil\C51\BIN\C51.EXE traffic.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*程序功能:89S52单片机交通灯模拟程序*************/
   2          /*设计者:吴海林**********************/
   3          /*硬件说明:P0口作为数码管段控,P1口作为数码管位近代
   4                     P2口作为交通灯信号模拟P2.0为绿,P2.1为黄
   5                             P2.3为红,P2.4为绿,P2.5为黄,P2.6为红*****************/
   6          #include "reg52.h"
   7          #include "absacc.h"
   8          typedef unsigned char uchar;
   9          sbit green1=P2^0;
  10          sbit red1=P2^1;
  11          sbit yellow1=P2^2;
  12          sbit green2=P2^3;
  13          sbit red2=P2^4;
  14          sbit yellow2=P2^5;
  15          void Init_Timer0(void);
  16          void contr(void);
  17          void time(void);
  18          void State0(void);
  19          void State1(void);
  20          void State2(void);
  21          void State3(void);
  22          void display(uchar data *p); //显示子程序
  23          void deltime(uchar s);
  24          uchar code tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //在ROM中定义数字转换码;
  25          uchar data b[4];
  26          uchar data flag,state,second,n=0;
  27          void main(void)
  28          { Init_Timer0();
  29   1        TR0=1;
  30   1        EA=1;
  31   1        ET0=1;
  32   1        contr();
  33   1      
  34   1       }
  35          /*定时器0初始化*/
  36          void Init_Timer0(void)
  37          {
  38   1        TMOD=0x01;          
  39   1        TH0=0x3c;
  40   1        TL0=0xb0;
  41   1      }
  42           /*交通灯控制程序*/
  43          void contr(void)
  44           {loop:state=0;
  45   1        second=40;
  46   1        while(1)
  47   1        {switch(state)
  48   2          {case 0: if(second==0){state=1;second=5;display(b);}
  49   3                         else State0();break;
  50   3               case 1: if(second==0){state=2;second=20;display(b);}
  51   3                         else State1();break;
  52   3               case 2: if(second==0){state=3;second=5;display(b);}
  53   3                         else State2();break;
  54   3               case 3: if(second==0){state=0;second=40;display(b);}
  55   3                             else State3();break;
C51 COMPILER V7.06   TRAFFIC                                                               08/15/2008 01:20:34 PAGE 2   

  56   3               default: goto loop;
  57   3               }
  58   2         }
  59   1       }
  60           /*不同状态时,调用相应的处理程序*/
  61           void State0(void)
  62           { green1=1;red1=0;yellow1=0;
  63   1         green2=0;red2=1;yellow2=0;
  64   1         b[0]=second%10;b[1]=second/10;
  65   1         b[2]=(second+5)%10;b[3]=(second+5)/10;
  66   1         display(b);
  67   1        }
  68           void State1(void)
  69           { green1=0;red1=0;yellow1=1;
  70   1         green2=0;red2=1;yellow2=0;
  71   1       b[0]=second%10;b[1]=second/10;
  72   1        b[2]=second%10;b[3]=second/10;
  73   1        display(b);
  74   1        }
  75           void State2(void)
  76           { green1=0;red1=1;yellow1=0;
  77   1         green2=1;red2=0;yellow2=0;
  78   1       b[0]=(second+5)%10;b[1]=(second+5)/10;
  79   1       b[2]=second%10;b[3]=second/10;
  80   1        display(b);
  81   1        }
  82           void State3(void)
  83           { green1=0;red1=1;yellow1=0;
  84   1         green2=0;red2=0;yellow2=1;
  85   1        b[0]=second%10;b[1]=second/10;
  86   1         b[2]=second%10;b[3]=second/10;
  87   1         display(b);
  88   1        }
  89           /*显示程序*/
  90          void display( uchar data *p)
  91          { uchar data i,sel;
  92   1        sel=0x01;
  93   1        for(i=0;i<=3;i++)
  94   1        {P0=tab[*p];
  95   2         P1=~sel;
  96   2         deltime(1);
  97   2         P1=0xff;
  98   2         p++;
  99   2         sel=sel<<1;
 100   2         }
 101   1       }
 102            /*延时程序,使数码管每次点亮的时间足够长*/    
 103            void deltime(uchar s)
 104            {  uchar data j;
 105   1              while(s--)
 106   1              {for(j=0;j<=125;j++);}
 107   1        }
 108          /*中断程序*/
 109           void time(void) interrupt 1 using 1
 110           {TR0=0;
 111   1        TH0=0x3c;
 112   1        TL0=0xb0;
 113   1        n++;
 114   1        if(n==20) 
 115   1        {n=0;second--;}
 116   1        TR0=1;
 117   1        }
C51 COMPILER V7.06   TRAFFIC                                                               08/15/2008 01:20:34 PAGE 3   



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