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

📄 traffic.lst

📁 完全可以用的交通灯单片机控制程序。5秒自动提醒功能
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   TRAFFIC                                                               05/25/2008 20:12:44 PAGE 1   


C51 COMPILER V7.50, 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          #define uchar unsigned char
   3          
   4          sbit led1=P2^0;   //定义各管脚
   5          sbit led2=P2^1;
   6          sbit CO1=P2^2;
   7          sbit CO2=P2^3;
   8          sbit CO3=P2^4;
   9          sbit CO4=P2^5;
  10          sbit K1=P3^1;    //
  11          sbit K2=P3^2;
  12          sbit K3=P3^3;
  13          sbit K4=P3^4;
  14          sbit K5=P3^5;
  15          sbit beep=P3^6;
  16          uchar second,state;
  17          uchar state=1;    //初始化
  18          uchar urgent=1;
  19          uchar standard;
  20          uchar t1=10;
  21          uchar t2=20;
  22          uchar t3=15;
  23          uchar t4=25;
  24          unsigned char code table[]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 
  25                                                                  0x6D, 0x7D, 0x07, 0x7F, 0x6F};//0-9
  26          bit flag =0 ;
  27          uchar stateflag =0;
  28          
  29          /*****************************************************************************
  30          **  函数名称:delay()
  31          **  功能描述:延时子程序,大约延时 n MS
  32          **  输  入:  n
  33          **  输  出:
  34          **  全局变量:
  35          **  调用模块:
  36          **
  37          **----------------------------------------------------------------------------
  38          ******************************************************************************/
  39          delay(int n)
  40          {uchar k;int j;
  41   1       for(j=n;j>0;j--)
  42   1        for(k=125;k>0;k--);
  43   1      }
  44          
  45          /*****************************************************************************
  46          **  函数名称:speaker()
  47          **  功能描述:峰鸣器程序
  48          **  输  入:  
  49          **  输  出:
  50          **  全局变量:
  51          **  调用模块:
  52          **
  53          **----------------------------------------------------------------------------
  54          ******************************************************************************/
  55          speaker()
C51 COMPILER V7.50   TRAFFIC                                                               05/25/2008 20:12:44 PAGE 2   

  56          {
  57   1      beep=0;delay(100);beep=1;
  58   1      }
  59          
  60          
  61          /*****************************************************************************
  62          **  函数名称:speaker1()
  63          **  功能描述:峰鸣器程序,峰鸣警告时间较长
  64          **  输  入:  
  65          **  输  出:
  66          **  全局变量:
  67          **  调用模块:
  68          **
  69          **----------------------------------------------------------------------------
  70          ******************************************************************************/
  71          speaker1()
  72          {
  73   1      beep=0;delay(2000);beep=1;delay(100);
  74   1      }
  75          /*****************************************************************************
  76          **  函数名称:timer0()
  77          **  功能描述:中断子程序
  78          **  输  入:  
  79          **  输  出:
  80          **  全局变量:
  81          **  调用模块:
  82          **
  83          **----------------------------------------------------------------------------
  84          ******************************************************************************/
  85          void timer0() interrupt 1 using 0
  86          {uchar tcount;
  87   1      if(urgent!=2)
  88   1       {
  89   2       TH0=(65536-50000)/256;           //中断设置初始化                   
  90   2       TL0=(65536-50000)%256;       
  91   2       tcount++;                                
  92   2        
  93   2        if(tcount==20)
  94   2       {tcount=0;second++;
  95   3        if(standard-second<=5)
  96   3         speaker();
  97   3        if(second==standard)
  98   3           {second=0;state++;speaker();    //4种交通灯状态的转变
  99   4             if(state==5)
 100   4               {state=1;
 101   5               }
 102   4             if(state==1)
 103   4              {standard=t1;
 104   5              }
 105   4             if(state==2)
 106   4              {
 107   5                      standard=t2;
 108   5              }
 109   4                      if(state==3)
 110   4              {
 111   5                      standard=t3;
 112   5              }  
 113   4                 if(state==4)
 114   4              {
 115   5                      standard=t4;    
 116   5              }
 117   4        }
C51 COMPILER V7.50   TRAFFIC                                                               05/25/2008 20:12:44 PAGE 3   

 118   3       }
 119   2      }
 120   1      }
 121          
 122          /*****************************************************************************
 123          **  函数名称:key()
 124          **  功能描述:键盘事件显测程序
 125          **  输  出:
 126          **  全局变量:
 127          **  调用模块:
 128          **
 129          **----------------------------------------------------------------------------
 130          ******************************************************************************/
 131          void key()
 132          {
 133   1              
 134   1         if(K1==0)        //按下键1
 135   1         {
 136   2                      delay(1000);  //软件去抖
 137   2           if(K1==0){
 138   3             delay(1000);
 139   3            if(K1==0){
 140   4            delay(1000);
 141   4           if(K1==0){
 142   5            if(K1==0) 
 143   5            urgent++;speaker();
 144   5            if(urgent==2)
 145   5            {EA=1;ET0=1;TMOD=0x21;TR0=0;second=standard-1;state=6;}
 146   5            if(urgent==3)
 147   5            {urgent=1;}
 148   5            if(urgent==1)
 149   5            {EA=1;ET0=1;TMOD=0x21;TR0=1;second=0;state=1;}
 150   5          }}}}
 151   1        if(K2==0 && urgent!=2)    //按下键2且不处于紧急状态
 152   1           {delay(30);
 153   2                   if(K2==0) 
 154   2                       while(K2==0);
 155   2               state++;speaker();
 156   2               second=0;
 157   2               if(state==5)
 158   2               {state=1;
 159   3               }
 160   2             if(state==1)
 161   2              {standard=t1;
 162   3              }
 163   2             if(state==2)
 164   2              {
 165   3                      standard=t2;
 166   3              }
 167   2                      if(state==3)
 168   2              {
 169   3                      standard=t3;
 170   3              }  
 171   2                 if(state==4)
 172   2              {
 173   3                      standard=t4;    
 174   3              }
 175   2              }
 176   1      
 177   1              while((K5 ==0 ||flag == 1)&& urgent!=2 )
 178   1              {
 179   2                      
C51 COMPILER V7.50   TRAFFIC                                                               05/25/2008 20:12:44 PAGE 4   

 180   2                      EA = 0 ;        
 181   2                      flag = 1  ;
 182   2                      if(K5 ==0) 
 183   2                      {
 184   3                              delay(30);
 185   3                              if(K5 == 0)
 186   3                              {
 187   4                                      stateflag++;                            
 188   4                                      if(stateflag==5)
 189   4                                       stateflag=1;
 190   4                                      
 191   4                                      while(K5 ==0);
 192   4                               }
 193   3                       }
 194   2                       
 195   2      
 196   2                      if(stateflag ==1)
 197   2                      {
 198   3                              if(K4 == 0)
 199   3                              {
 200   4                                      delay(30);
 201   4                                      if(K4 == 0)
 202   4                                      {
 203   5                                              if(t1<99)
 204   5                                              t1++ ; 
 205   5                                              speaker();
 206   5                                              while(K4==0);
 207   5                                      }
 208   4                               }
 209   3                               if(K3 == 0)
 210   3                              {
 211   4                                      delay(30);
 212   4                                      if(K3 == 0)
 213   4                                      {
 214   5                                              if(t1>1)
 215   5                                              t1-- ; 
 216   5                                              speaker();
 217   5                                              while(K3==0);
 218   5                                      }
 219   4                                      
 220   4                              }
 221   3                              P1=table[t1%10];   //数码管动态显示
 222   3                               led1=0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -