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

📄 pmpdatat.lst

📁 51单片机C语言应用程序设计实例精讲.rar
💻 LST
字号:
C51 COMPILER V7.02b   PMPDATAT                                                             12/10/2005 20:50:53 PAGE 1   


C51 COMPILER V7.02b, COMPILATION OF MODULE PMPDATAT
OBJECT MODULE PLACED IN PMPDataT.OBJ
COMPILER INVOKED BY: E:\EDATOOLS\KEILC7.0\C51\BIN\C51.EXE PMPDataT.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*****************************************/
   2          /* Copyright (c) 2005, 通信工程学院      */
   3          /* All rights reserved.                  */
   4          /* 作    者:戴 佳                                               */
   5          /*****************************************/
   6          
   7          #include "PMPDataT.h"
   8          
   9          /* 延时t毫秒 */
  10          void delay(uint t)
  11          {
  12   1              uint i;
  13   1              while(t--)
  14   1              {
  15   2                      /* 对于11.0592M时钟,约延时1ms */
  16   2                      for (i=0;i<125;i++)
  17   2                      {}
  18   2              }
  19   1      } 
  20          
  21          /* 发送数据函数 */
  22          void senddata(uchar *buf)
  23          {
  24   1              uchar i;
  25   1              uchar len;                                      // 保存数据长度
  26   1              uchar ecc;                                      // 保存校验字节
  27   1      
  28   1              len = strlen(buf);                      // 计算要发送数据的长度
  29   1              ecc = len;                                      // 开始进行校验字节计算
  30   1      
  31   1              /* 发送数据长度 */
  32   1              TI = 0;
  33   1              TB8 = 0;                                        // 发送数据帧
  34   1              SBUF = len;                                     // 发送长度
  35   1              while(!TI);
  36   1              TI = 0;
  37   1      
  38   1              /* 发送数据 */
  39   1              for (i=0;i<len;i++)
  40   1              {
  41   2                      ecc = ecc^(*buf);
  42   2                      TB8 = 0;                                // 发送数据帧
  43   2                      SBUF = *buf;    
  44   2                      buf++;
  45   2                      while(!TI);
  46   2                      TI = 0;
  47   2              }
  48   1              
  49   1              /* 发送校验字节 */
  50   1              TB8 = 0;                                        // 发送数据帧
  51   1              SBUF = ecc;
  52   1              while(!TI);
  53   1              TI = 0;
  54   1      }
  55          
C51 COMPILER V7.02b   PMPDATAT                                                             12/10/2005 20:50:53 PAGE 2   

  56          /* 串口初始化函数 */
  57          void init_serial()
  58          {
  59   1              TMOD = 0x20;                            // 定时器T1使用工作方式2
  60   1              TH1 = 250;
  61   1              TL1 = 250;
  62   1              TR1 = 1;                                        // 开始计时
  63   1              PCON = 0x80;                            // SMOD = 1
  64   1              SCON = 0xd0;                            // 工作方式,9位数据位,波特率9600kbit/s,允许接收 
  65   1      }
  66          
  67          /* 主程序 */
  68          void main()
  69          { 
  70   1              uchar i = 0;
  71   1              uchar tmp; 
  72   1      
  73   1              /* 为缓冲区赋初值 */
  74   1              P0 = 0xff;
  75   1              while(P1!=0)                            // 每隔100ms从P0口读取,读取到0表示数据采集结束
  76   1              {
  77   2                      *(buf+i) = P0;
  78   2                      delay(100);                             // 延时100ms
  79   2                      P0 = 0xff;
  80   2                      i++;
  81   2              }
  82   1              *(buf+i) = 0;                           // 缓冲区最后一个字节为0表示数据结束
  83   1      
  84   1              /* 通过P0口读要访问的从机地址 */
  85   1              P0 = 0xff;
  86   1              addr = P0;
  87   1      
  88   1              init_serial();                          // 串口初始化 
  89   1      
  90   1              EA = 0;                                         // 关闭所有中断
  91   1              
  92   1              /* 发送地址帧并接收应答信息,如果接收的信号与发送的地址信息不同,则重新发送地址帧 */
  93   1              tmp = addr-1;
  94   1              while(tmp!=addr)                        
  95   1              {
  96   2                      /* 发送从机地址 */
  97   2                      TI = 0;
  98   2                      TB8 = 1;                                // 发送地址帧   
  99   2                      SBUF = addr;
 100   2                      while(!TI);
 101   2                      TI = 0;
 102   2      
 103   2                      /* 接收从机应答 */
 104   2                      RI = 0;
 105   2                      while(!RI);
 106   2                      tmp = SBUF;
 107   2                      RI = 0; 
 108   2              }
 109   1      
 110   1              /* 发送数据并接收校验信息,如果接收到SUCC,表示从机接收成功,否则将重新发送该组数据 */  
 111   1              tmp = ERR;
 112   1              while(tmp!=SUCC)
 113   1          {
 114   2                      senddata(buf);                  // 发送数据
 115   2                      RI = 0;
 116   2                      while(!RI);
 117   2                      tmp     = SBUF;
C51 COMPILER V7.02b   PMPDATAT                                                             12/10/2005 20:50:53 PAGE 3   

 118   2                      RI = 0;
 119   2              }
 120   1      }


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