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

📄 tools.lst

📁 个人学习参考!禁止使用到产品上! 任何人不得公开发布!
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.10   TOOLS                                                                 02/03/2005 10:45:41 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE TOOLS
OBJECT MODULE PLACED IN tools.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE tools.c OPTIMIZE(7,SIZE) BROWSE INCDIR(E:\WorkHome\932-DDSF\DDSF-932-002\;F
                    -:\WorkHome\932-DDSF\DDSF-932-003\) DEBUG OBJECTEXTEND

line level    source

   1          /*========================================*/
   2          /*系统名称:DDSF-CECG-JiangSu             */
   3          /*函数名称:辅助程序                          */
   4          /*程序编写:步爱军                                    */
   5          /*开始日期:2005-01-01                            */
   6          /*完成日期:                                          */
   7          /*修改记录:                                          */
   8          /*软件版本:DDSF-CECG-002                 */
   9          /*版本说明:用户数据保存在外部            */
  10          /*外部器件:LM75、AT24C02、HT1621、LPC932 */
  11          /*          R8025、ADE7755                */
  12          /*========================================*/
  13          
  14          #include <REG932.h>
  15          #include <Define.h>
  16          #include <Stdio.h>
  17          #include <Intrins.h>
  18          
  19          ///-----***-短延时-***-----//
  20          void Delay(unsigned int count) reentrant
  21          {
  22   1         unsigned int data i,j;
  23   1         for(i=0; i<count; i++)
  24   1         {
  25   2            for(j=0; j<5; j++)
  26   2            {
  27   3              ;
  28   3            }
  29   2         } 
  30   1      }
  31          
  32          ///-----***-IIC-***-----///
  33          unsigned char FgTimeout;
  34          unsigned char IicByteRead(unsigned char device,unsigned char address)      //读取指定器件指定地址中的数据
  35          {
  36   1              unsigned char data bytedata;                                                                       //定义一个变量bytedata,用来存放数据
  37   1              IicStart();                                                                                                    //开始传送起始信号
  38   1              IicSentByte(device);                                                                               //传送一字节(slave)地址
  39   1              IicSentByte(address);                                                                              //传送一字节(address)地址
  40   1              IicStart();                                                                                                    //开始传送起始信号
  41   1              IicSentByte(device|0x01);                                                                          //传送读取信号
  42   1              bytedata=IicReceiveByte();                                                                         //从slave端读取一个数据并存入变量bytedata
  43   1              SendAcknowledge(1);                                                                                        //Master端送出确认的信号等于1
  44   1              IicStop();                                                                                                         //传送停止信号
  45   1              return bytedata;                                                                                           //返回读出值bytedata给原调用程序
  46   1      }
  47          void IicMuchByteRead(unsigned char Device,unsigned char Address,unsigned char DataLend)               //读
             -取指定器件指定地址中的数据
  48          {
  49   1          unsigned char i;                                                                            //定义一个变量bytedata,用来存放数据    
  50   1      
  51   1              IicStart();                                                                                                 //开始传送起始信号
  52   1              IicSentByte(Device);                                                                            //传送一字节(slave)地址
  53   1              IicSentByte(Address);                                                                           //传送一字节(address)地址
C51 COMPILER V7.10   TOOLS                                                                 02/03/2005 10:45:41 PAGE 2   

  54   1              IicStart();                                                                                                 //开始传送起始信号
  55   1              IicSentByte(Device|0x01);                                                                       //传送读取信号
  56   1          for(i=0;i<DataLend-1;i++)   
  57   1          {
  58   2              IIcBuf[i]=IicReceiveByte();
  59   2                      SendAcknowledge(0);
  60   2          }                                                                                           //从slave端读取一个数据并存入变量bytedata                                                                    
             -              //Master端送出确认的信号等于1
  61   1              IIcBuf[i]=IicReceiveByte();
  62   1              SendAcknowledge(1);
  63   1              IicStop();                                                                                              //传送停止信号
  64   1      
  65   1      }
  66          void IicByteWrite(unsigned char device,unsigned char address,unsigned char bytedata)//写数据到指定地址
  67          {                                                                       //
  68   1              unsigned char i;                                                    //
  69   1              bit ack;                                                            //  
  70   1      
  71   1              FgTimeout=1;
  72   1              IicWP=0;                                                            //
  73   1              for(i=0;i<10;i++)                                                           //
  74   1              {                                                                   //
  75   2                      IicStart();                                                                             //
  76   2                      ack=IicSentByte(device);                                                    //
  77   2                      if(ack==1)                                                                                  //
  78   2                      {                                                               //
  79   3                              IicStop();                                                                          //
  80   3                              continue;                                                                           //
  81   3                      }                                                               //
  82   2                      ack=IicSentByte(address);                                                       //
  83   2                      if(ack==1)                                                                                  //
  84   2                      {                                                               //
  85   3                              IicStop();                                                                              //
  86   3                              continue;                                                                               //
  87   3                      }                                                               //
  88   2                      ack=IicSentByte(bytedata);                                                      //
  89   2                      if(ack==1)                                                                                      //
  90   2                      {                                                               //
  91   3                              IicStop();                                                                          //
  92   3                              continue;                                                                               //
  93   3                      }                                                               //
  94   2                      IicStop();                                                                                  //
  95   2                      FgTimeout=0;                                                                        //
  96   2                      if(ack==0)                                                                                  //
  97   2                      break;                                                          //
  98   2              }                                                                                               //
  99   1              Delay(200);                                                                                     //
 100   1              IicWP=1;
 101   1      
 102   1      }
 103                                                                                  //
 104          unsigned char IicReceiveByte(void)                                                                              //从slave端读取一个数据*/
 105          {
 106   1              unsigned char i;                                                                                                    //*定义变量 i 和变量 bytedata */
 107   1              unsigned char bytedata=0;
 108   1              IicSDA=1;
 109   1              for(i=0;i<8;i++)                                                                                                    //由于读的时一个字节的数据所以要循环8次*/
 110   1              {
 111   2                      IicSCL=1;                                                                                                           //先将SCL设定为1,并等待一定的时间*/
 112   2                      IicWait();
 113   2      
 114   2                      bytedata<<=1;                                                                                               //先将数据变量bytedata左移1位---*/
C51 COMPILER V7.10   TOOLS                                                                 02/03/2005 10:45:41 PAGE 3   

 115   2                      if (IicSDA) bytedata |=0x01;                                                                    //此时如果SDA=“1”则将接受到的数据加(bit0=1)1---*/
 116   2                                                                                                                                              //否则自动清楚为0*/
 117   2                      IicSCL=0;                                                                                                           //SCL恢复为0,并等待一定的时间*/
 118   2                      IicWait();
 119   2              }
 120   1              return bytedata;                                                                                                    //*返回调用程序*/
 121   1      }
 122          
 123          bit IicSentByte(unsigned char bytedata)                                                         //传送一个 Byte 数据到 slave */
 124          {
 125   1              unsigned char i;                                                                                                    //定义一个变量 i */
 126   1              bit ack;                                                                                                                    //定义一个变量 ack */
 127   1              for(i=0;i<8;i++)                                                                                                    //循环8次*/
 128   1              {
 129   2                      if(bytedata & 0x80)
 130   2                      {                                                                                                           //bytedata和0x80作AND逻辑运算等于0x80---*/
 131   3                              IicSDA=1;
 132   3                                                                                                                                          //即表示位7等于1则条件成立---*/
 133   3                      }
 134   2                      else
 135   2                      {
 136   3                              IicSDA=0;
 137   3                                                                                                                                          //所以设定SDA=1,否则清除SDA=0*/
 138   3                      }
 139   2                      bytedata <<=1;                                                                                              //每传送1位,则须将待传送的数据左移1位,以便继续测试下1位*/
 140   2                      IicWait();                                                                                                  //延时等候*/
 141   2      
 142   2                      IicSCL=1;
 143   2                                                                                                                                          //SCL置位*/
 144   2                      IicWait();                                                                                                  //延时等候*/
 145   2                      IicSCL=0;
 146   2                                                                                                                                          //SCL清零*/
 147   2                      IicWait();                                                                                                  //延时等候---SCL作“1”---“0”的变化*/
 148   2              }
 149   1              IicSDA=1;                                                                                                                           //SDA置位*/
 150   1              IicWait();                                                                                                          //延时等候*/
 151   1              IicSCL=1;                                                                                                                                   //SCL置位*/

⌨️ 快捷键说明

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