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

📄 +

📁 51单片机配套C程序
💻
字号:
C51 COMPILER V7.50   红绿灯                                                                05/16/2010 11:36:31 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 红绿灯
OBJECT MODULE PLACED IN 红绿灯.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 红绿灯.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*-----------------------------------------------
   2            名称:红绿灯
   3            内容:1、程序目的:使用定时器学习 倒计时 红绿灯原理 主要程序和倒计时一样
   4                  2、硬件要求:数码管、晶振12M
   5          ------------------------------------------------*/
   6          #include<reg52.h>     //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
   7          
   8          bit red,green,yellow,turnred;//定义红绿黄灯标志位
   9          
  10          code unsigned char tab[]=
  11                                  {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 
  12                                                  //共阴数码管 0-9 
  13          
  14          unsigned char Dis_Shiwei;//定义十位
  15          unsigned char Dis_Gewei; //定义个位
  16          /******************************************************************/
  17          /*                    延时函数                                    */
  18          /******************************************************************/
  19          void delay(unsigned int cnt)
  20          {
  21   1       while(--cnt);
  22   1      }
  23          /******************************************************************/
  24          /*                    主函数                                      */
  25          /******************************************************************/
  26          main()
  27          {
  28   1      TMOD |=0x01;//定时器设置 10ms in 12M crystal
  29   1      TH0=0xd8;
  30   1      TL0=0xf0;
  31   1      IE= 0x82;   //打开中断
  32   1      TR0=1;
  33   1      
  34   1      P1=0xfc;    //红灯亮
  35   1      red =1;
  36   1      while(1)
  37   1        {
  38   2        P0=Dis_Shiwei;//显示十位
  39   2        P2=0;
  40   2        delay(300);   //短暂延时
  41   2        P0=Dis_Gewei; //显示个位
  42   2        P2=1;
  43   2        delay(300);
  44   2        }
  45   1      
  46   1      }
  47          /******************************************************************/
  48          /*                    定时器中断函数                              */
  49          /******************************************************************/
  50          void tim(void) interrupt 1 using 1
  51          {
  52   1      static unsigned char second=60,count; //初值99
  53   1      
  54   1      TH0=0xd8;//重新赋值
  55   1      TL0=0xf0;
C51 COMPILER V7.50   红绿灯                                                                05/16/2010 11:36:31 PAGE 2   

  56   1      count++;
  57   1      if (count==100)
  58   1          {
  59   2          count=0;
  60   2          second--;//秒减1
  61   2              if(second==0)
  62   2                 {  //这里添加定时到0的代码 ,可以是灯电路,继电器吸合等,或者执行一个程序
  63   3             if(red)
  64   3                   {
  65   4                        red=0;yellow=1;
  66   4                second=5;
  67   4                        P1=0xF3;//黄灯亮5秒
  68   4                       }
  69   3                 else if(yellow && !turnred)
  70   3                   {
  71   4                        yellow=0;green=1;
  72   4                second=50;
  73   4                        P1=0xCF;//绿灯亮50秒
  74   4                       }
  75   3                 else if(green)
  76   3                   {
  77   4                       yellow=1;green=0;
  78   4               second=5;
  79   4                       P1=0xF3;//黄灯亮5秒
  80   4                       turnred=1;
  81   4                       }
  82   3             else if(yellow && turnred)
  83   3                   {
  84   4                   red=1;yellow=0;
  85   4                       P1=0xFC;//红灯亮60秒
  86   4               second=60;
  87   4                       turnred=0;
  88   4                       }
  89   3      
  90   3                 }
  91   2              Dis_Shiwei=tab[second/10];//十位显示值处理
  92   2          Dis_Gewei=tab[second%10]; //个位显示处理
  93   2          
  94   2          }
  95   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    191    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      4    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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