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

📄 jt 21-4.lst

📁 51单片机开发入门与典型实例
💻 LST
字号:
C51 COMPILER V7.06   JT_21_4                                                               01/07/2007 10:21:22 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE JT_21_4
OBJECT MODULE PLACED IN JT 21-4.OBJ
COMPILER INVOKED BY: C:\Keil7.06\C51\BIN\C51.EXE JT 21-4.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /* 文件名:JT 21-4.c */
   2          /* 程序功能:交通信号灯控制(改进)*/
   3            #include <AT89X51.H>          /* 头文件 */  
   4            char count;                   /* 声明count为字符变量 */
   5            bit flag;                     /* 声明flag为位变量 */
   6            char sum =0;                   /* 声明sum为字符变量并赋初始值0 */
   7            xhd( );                       /* 信号灯函数xhd( ) */
   8           /* ――――――――  主函数(主程序) ―――――――――――*/
   9            main( )                       /* 主函数 */
  10            {  
  11   1          TMOD=0x01;                  /* 设定T0为模式1 */
  12   1          TH0=-(50000/256);           /* 设定时器初始值50000 */
  13   1          TL0=-(50000%256);  
  14   1          EA=1;                       /* 总允许中断 */
  15   1          ET0=1;                      /* 允许定时器T0中断 */
  16   1          TR0=1;                      /* 启动定时器工作 */
  17   1      
  18   1          EX0=1;                      /* 允许外部中断0中断 */
  19   1          PX0=1;                      /* 外部中断0为高优先级 */
  20   1       
  21   1          P1=0xff;                    /* P1初始值,关闭所有信号灯 */
  22   1          xhd( );                     /* 调用信号灯函数 */
  23   1        }
  24           /* ――――――― 中断函数(中断服务程序) ―――――――― */
  25            T0_srv( ) interrupt 1 using 1  /* 中断服务程序 */
  26            {
  27   1          TH0=-(50000/256);            /* 重装定时器初始值 */
  28   1          TL0=-(50000%256); 
  29   1          count++;                     /* count加1 */ 
  30   1          if(count==20)                /* 判断count是否等于20 */
  31   1           { 
  32   2            count=0;                   /* count清0,以便从新计数 */
  33   2            flag=1;                    /* 标志位为1 */
  34   2           } 
  35   1        }
  36           /* ――――――――  信号灯函数(子程序) ―――――――― */
  37             xhd( )                        /* 信号灯函数 */
  38             {                             
  39   1           while(1)                    /* 无限循环 */ 
  40   1           {
  41   2       /* ―――――――――――――*/
  42   2             P1_3=0; P1_2=0;           /*东西红灯亮,南北绿灯亮 */ 
  43   2             while( sum<15)            /* 循环15次,延时15秒 */
  44   2              {
  45   3                while( ! flag );       /* 等待1秒 */
  46   3                flag=0;                /* 标志位清0 */
  47   3                sum++;                 /* sum加1 */
  48   3              }
  49   2            sum=0;                     /* sum清0,以便从新计数 */
  50   2       /* ―――――――――――――*/
  51   2            P1_2=1; P1_1=0;            /* 南北绿灯灭,黄灯亮 */      
  52   2        while( sum<3)                  /* 循环3次,延时3秒 */
  53   2         {
  54   3           while(! flag);
  55   3           flag=0;
C51 COMPILER V7.06   JT_21_4                                                               01/07/2007 10:21:22 PAGE 2   

  56   3           sum++;
  57   3          }
  58   2         sum=0;
  59   2      
  60   2      
  61   2      /*―――――――――――――*/
  62   2         P1_1=1; P1_0=0;               /* 南北黄灯灭,红灯亮 */
  63   2         P1_3=1; P1_5=0;               /* 东西红灯灭,绿灯亮 */
  64   2        while( sum<10)                 /* 延时10秒 */
  65   2         {
  66   3          while(! flag);
  67   3          flag=0;
  68   3          sum++;
  69   3         }
  70   2        sum=0;
  71   2       /* ―――――――――――――*/
  72   2        P1_5=1; P1_4=0;                /*东西绿灯灭,黄灯亮 */
  73   2        while( sum<3)                  /* 延时3秒 */
  74   2          {
  75   3           while(! flag);
  76   3           flag=0;
  77   3           sum++;
  78   3          }
  79   2         sum=0;
  80   2       /* ――――――――――――― */
  81   2         P1_4=1; P1_0=1;               /* 东西黄灯灭,南北红灯灭 */ 
  82   2        }
  83   1       }
  84           /* ―――――― 外部中断函数(外部中断服务程序)――――― */
  85           int0_srv( ) interrupt 0 using 2
  86            {
  87   1          char a;
  88   1          unsigned int i;
  89   1              for (i=0;i<10000;i++);
  90   1          if ( INT0==0)
  91   1           {
  92   2             a=P1;                     /* 保留P1状态*/
  93   2             P1=0xff;
  94   2             P1=0xf6;                  /* 使两边亮起红灯 */
  95   2             while (INT0==0);          /* 等待开关断开*/
  96   2             P1=a;                     /* 恢复P1状态*/
  97   2           }
  98   1        }
  99          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    186    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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