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

📄 main_2051.lst

📁 一个温度采集系统的单片机程序与WINDOWS 串口通信程序
💻 LST
字号:
C51 COMPILER V7.00  MAIN_2051                                                              03/16/2005 20:37:53 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE MAIN_2051
OBJECT MODULE PLACED IN main_2051.OBJ
COMPILER INVOKED BY: C:\PROGRA~1\Keil\C51\BIN\c51.exe main_2051.c DB OE SMALL ROM(LARGE)

stmt level    source

   1          #include<reg51.h>
   2          #include <intrins.h>
   3          #include<SubPro_ds_h.h>
   4          
   5          #define collect 67              //C ASCII 码为67
   6          #define transmit        84
   7          #define init    73
   8          
   9          sbit    led     =0x92;
  10          
  11          unsigned char data receive_data[15];      //串行通信变量,设为全局变量确保快速响应
  12          unsigned char data command;
  13          unsigned char byt_count =0;               //串行中断接收字节计数
  14          
  15          bit     data receive_en =1;
  16          //////////////////////////////*
  17          /*
  18          名称:延迟程序
  19          功能:根据参数延迟
  20          /////////////////////////////*/
  21          void delay_time(unsigned int us)          //29us/40us/52us/64us
  22          {  
  23   1      unsigned int data i;    
  24   1              for(i=0;i<=us;i++) 
  25   1              _nop_();
  26   1      }
  27          
  28          void delay_time_1s  (void)                //实际模拟仿真测试 /0.9s
  29          {
  30   1      unsigned char data i;
  31   1            while(i<4)
  32   1            {
  33   2                delay_time(8000);
  34   2              _nop_();
  35   2              delay_time(8000);
  36   2              i++;
  37   2            }
  38   1      } 
  39          
  40          
  41          /////////////////////////////*
  42          /*
  43          名称:串口 ISR
  44          功能:接收PC主机命令
  45          ////////////////////////////*/
  46          void    serial_isr(void) interrupt 4 
  47          {
  48   1      if(TI==1)
  49   1      TI      =0;
  50   1      else if(RI==1&&(receive_en==1))
  51   1              {
  52   2              RI      =0;
  53   2              receive_data[byt_count++]=SBUF;
  54   2                      if(byt_count>15)
  55   2                      {
C51 COMPILER V7.00  MAIN_2051                                                              03/16/2005 20:37:53 PAGE 2   

  56   3                      byt_count       =0;
  57   3                      receive_en      =0;
  58   3                      }
  59   2              }
  60   1      else
  61   1      RI      =0;
  62   1      }
  63          
  64          ////////////////////////////////////////////////
  65          //名称:命令解析
  66          //功能:对接收到的PC命令进行处理,执行相应操作:温度采集,数据传送,初始参数设置作
  67          ///////////////////////////////////////////////
  68          void do_pc_cmd(void) 
  69          {
  70   1      
  71   1      command=receive_cmd(&receive_data[0]);     //接收PC主机命令字节
  72   1      //命令处理
  73   1      if(command==collect)       //温度采集命令
  74   1        {
  75   2              send_ds_cmd();       //发温度采集命令给所有DS18B20
  76   2        }
  77   1      else if(command==transmit) //数据传送命令
  78   1        {
  79   2            send_data_pc();     //EEPROM 数据包发送给PC
  80   2        }
  81   1      
  82   1      else                       //非法命令
  83   1            error_set();         //非法命令转出错处理
  84   1      
  85   1      
  86   1      }
  87          
  88          
  89          /////////////////////////////*
  90          /*
  91          名称:温度采集子系统主程序
  92          ////////////////////////////*/
  93          main()
  94          {
  95   1      
  96   1      SCON    =0x50;           //设置串行通信方式为1 
  97   1      TMOD    =0x20;
  98   1      TH1     =0xE8;           //串行通信波特率为1200bps
  99   1      TL1     =0xE8;
 100   1      TR1     =1;
 101   1      
 102   1      //使能定时器中断,串行口中断,外部中断0
 103   1      ET1     =0;                //定时器1用于串行通信波特率发生器,禁止中断  
 104   1      ES      =1;
 105   1      EA      =1;
 106   1      //无限循环,等待
 107   1      loop:while(receive_en==1);     //查询是否接收到pc命令?
 108   1              do_pc_cmd();             //处理命令
 109   1              receive_en      =1;            //允许接收下一个命令
 110   1              EA      =1;                //命令处理完毕后EA被自动清零,
 111   1              goto loop;                   //此处必须插入EA=1语句
 112   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    166    ----
   CONSTANT SIZE    =   ----    ----
C51 COMPILER V7.00  MAIN_2051                                                              03/16/2005 20:37:53 PAGE 3   

   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     17       1
   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 + -