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

📄 main.lst

📁 从零开始学51单片机源代码
💻 LST
字号:
C51 COMPILER V8.08   MAIN                                                                  07/04/2012 21:26:08 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>      //包含头文件    
   2          #include "fun.h"   
   3          
   4          void Timer0_interrupt() interrupt 1
   5          {
   6   1              TH0 = T0_50ms >> 8;        //重装初值 
   7   1              TL0 = T0_50ms;
   8   1      
   9   1              if ((++ count_in_T0) == 20)//count_in_T0自加到20,计时1s
  10   1              {
  11   2                      count_in_T0 = 0;
  12   2                      if ( (++ display_num) ==60)
  13   2                      {//display_num自加1后判断是否等于60
  14   3                              display_num = 0;
  15   3                              //上发过0消息
  16   3                              send(0xf0);
  17   3                              send(0x01);
  18   3                              send(0xf1);
  19   3                      }
  20   2              }
  21   1      }
  22          
  23          void  USART2_interrupt() interrupt 8
  24          {
  25   1              char checkXOR;
  26   1              //if (RI)
  27   1              if (S2CON & 0x01)        //串口2接收中断 
  28   1              {
  29   2                      //RI = 0;
  30   2                      S2CON &= 0xfe;  //清串口2接收中断标志S2RI
  31   2                      reciev[rec_num] = S2BUF;
  32   2                      rec_num ++;
  33   2                      if ((rec_num == 3) && (reciev[0] == 0x0f) )//接收到3字节,并且包头正确 
  34   2                      {
  35   3                              checkXOR = reciev[0] ^ reciev[1];
  36   3                              if (checkXOR == reciev[2] )//如果异或校验正确,判断命令 
  37   3                              {
  38   4                                      switch (reciev[1])
  39   4                                      {
  40   5                                              case 0x01:
  41   5                                                      TR0 = 1;        //启动 
  42   5                                                      rec_num = 0;//指令正确,清空缓冲区 
  43   5                                                      break;
  44   5                                              case 0x02:
  45   5                                                      TR0 = 0;        //暂停 
  46   5                                                      rec_num = 0;//指令正确,清空缓冲区
  47   5                                                      break;
  48   5                                              default: //如果指令不正确,缓冲区左移 
  49   5                                                      reciev[0] = reciev[1];
  50   5                                                      reciev[1] = reciev[2];
  51   5                                                      rec_num --;
  52   5                                                      break;
  53   5                                      }
  54   4                              }
  55   3                      }
C51 COMPILER V8.08   MAIN                                                                  07/04/2012 21:26:08 PAGE 2   

  56   2              }
  57   1              //if (TI)
  58   1              if (S2CON & 0x02)        //串口2发送中断 
  59   1              {
  60   2                      //TI = 0;
  61   2                      S2CON &= 0xfd;  //清串口2发送中断标志S2TI
  62   2              }
  63   1      }
  64          
  65          main()
  66          {
  67   1              unsigned char shi, ge;  //定义十位、个位要输出的数据 
  68   1      
  69   1              ms_delay(100);
  70   1              init_port();
  71   1              //init_usart();
  72   1              init_usart2();//初始化串口2     
  73   1              init_timer();
  74   1              
  75   1              rec_num = 0;
  76   1              display_num = 0;
  77   1              count_in_T0 = 0;
  78   1              //把两个数码管都关闭 
  79   1              en2 = 1;
  80   1              en1 = 1;
  81   1              EA = 1;//开总中断 
  82   1      
  83   1              while(1)
  84   1              {
  85   2                      shi =  display_num / 10;
  86   2                      ge = display_num % 10;
  87   2                      display(shi,ge);        
  88   2              }
  89   1      }


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