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

📄 urm37_wr.lst

📁 URM3751距离测量模板驱动程序,最近到0.5CM,精度0.1CM
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   URM37_WR                                                              10/07/2005 20:45:27 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE URM37_WR
OBJECT MODULE PLACED IN URM37_WR.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE URM37_WR.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include"URM37_51demo.H"
   2          
   3          extern void LCD_ClearLin2(void);
   4          extern void LCD_WRITE_COMM(uchar);
   5          extern void LCD_WRITE_DATA(uchar);
   6          /******************************************************************** 
   7          * 名称: Delay_us
   8          * 说明: 
   9          * 功能: 延时量 = DelayTime(us)  MAX = 65536MS
  10          * 调用: 无
  11          * 输入: DelayTime
  12          * 返回值: 无
  13          ***********************************************************************/
  14          /*
  15          void Delay_us(uint DelayTime)
  16          {       
  17                  uchar *p;
  18                  p = &DelayTime;
  19                  DelayTime = 65535-DelayTime;
  20                  TR0 = 0;
  21                  TF0 = 0;
  22                  TH0 = *p++;
  23                  TL0 = *p;
  24                  TR0 = 1;
  25                  while(TF0 == 0);
  26          }
  27          */
  28          /******************************************************************** 
  29          * 名称: HEX_TO_DEC
  30          * 说明: 
  31          * 功能: 将一个16BIT的16进制数转换为10进制数
  32          * 调用: 无
  33          * 输入: uint source,uchar * object
  34          * 返回值: 无
  35          ***********************************************************************/
  36          void HEX_TO_DEC(uint source,uchar * object)
  37          {
  38   1              uchar i;
  39   1              source*=5;//source个半厘米,放大10倍
  40   1              for(i=0;i<5;i++)
  41   1              {
  42   2                      *(object+i) = source % 10;
  43   2                      source/=10;
  44   2              }
  45   1              return;
  46   1      }
  47          /******************************************************************** 
  48          * 名称: IIC_START
  49          * 说明: 
  50          * 功能: IIC启动信号
  51          * 调用: Delay_us
  52          * 输入: 无
  53          * 返回值: 无
  54          ***********************************************************************/
  55          void  IIC_START(void)//启动信号
C51 COMPILER V7.06   URM37_WR                                                              10/07/2005 20:45:27 PAGE 2   

  56          {
  57   1              uchar i;
  58   1              IIC_SCL = 0;
  59   1              for(i=0;i<7;i++);
  60   1              IIC_SDA = 1;
  61   1              for(i=0;i<7;i++);       
  62   1              IIC_SCL = 1;
  63   1              for(i=0;i<7;i++);
  64   1              IIC_SDA = 0;    
  65   1              for(i=0;i<7;i++);
  66   1              IIC_SCL = 0;    
  67   1      }
  68          /******************************************************************** 
  69          * 名称: IIC_ACK
  70          * 说明: 
  71          * 功能: 读取返回应答信号
  72          * 调用: Delay_us
  73          * 输入: 无
  74          * 返回值: 操作标志
  75          ***********************************************************************/
  76          uchar   IIC_ACK(void)   //读取返回应答信号
  77          {
  78   1              uchar i;
  79   1              TR0 = 0;
  80   1              TF0 = 0;        
  81   1              TL0 = 0;
  82   1              TH0 = 0;
  83   1              TR0 = 1;
  84   1              
  85   1              
  86   1              while(IIC_SDA)
  87   1              {
  88   2                      if(TF0 == 1) return ERROR;      
  89   2              }
  90   1              TR0 = 0;
  91   1              TF0 = 0;        
  92   1              TL0 = 0;
  93   1              TH0 = 0;
  94   1              TR0 = 1;
  95   1              while(IIC_SDA==0)
  96   1              {
  97   2                      if(TF0 == 1) return ERROR;      
  98   2              }
  99   1              for(i=0;i<7;i++);
 100   1              return OK;
 101   1              
 102   1      }
 103          /******************************************************************** 
 104          * 名称: SendByte
 105          * 说明: 
 106          * 功能: 发送1 Byte 数据
 107          * 调用: Delay_us
 108          * 输入: uchar Byte
 109          * 返回值: 无
 110          ***********************************************************************/
 111          void    SendByte(uchar Byte)    //发送1 Byte 数据
 112          {
 113   1              uchar   i;
 114   1              uchar   j;
 115   1              for(j=0;j<8;j++)
 116   1              {
 117   2                      IIC_SCL = 0;
C51 COMPILER V7.06   URM37_WR                                                              10/07/2005 20:45:27 PAGE 3   

 118   2                      for(i=0;i<7;i++);
 119   2                      IIC_SDA = (bit)(Byte & 0x80);
 120   2                      Byte <<= 1;     
 121   2                      for(i=0;i<7;i++);
 122   2                      IIC_SCL = 1;
 123   2                      for(i=0;i<7;i++);
 124   2              }
 125   1              IIC_SCL = 0;
 126   1                              
 127   1      }
 128          /******************************************************************** 
 129          * 名称: Send_BIT9RW
 130          * 说明: 
 131          * 功能: 发送第9位的R/W_N
 132          * 调用: Delay_us
 133          * 输入: uchar RW
 134          * 返回值: 无
 135          ***********************************************************************/
 136          void    Send_BIT9RW(uchar RW)   //发送第9位的R/W_N 
 137          {
 138   1              uchar i;
 139   1              IIC_SCL = 0;
 140   1              for(i=0;i<7;i++);
 141   1              if(RW == W)
 142   1                      IIC_SDA = W;
 143   1              else
 144   1                      IIC_SDA = R;    
 145   1                      
 146   1              for(i=0;i<7;i++);
 147   1              IIC_SCL = 1;
 148   1              for(i=0;i<7;i++);
 149   1              IIC_SCL = 0;
 150   1              IIC_SDA = 1;
 151   1              for(i=0;i<7;i++);
 152   1              
 153   1      }
 154          
 155          /******************************************************************** 
 156          * 名称: ReceiveTowByte
 157          * 说明: 
 158          * 功能: 接收 2 Byte数据
 159          * 调用: Delay_us
 160          * 输入: uint *p
 161          * 返回值: 无
 162          ***********************************************************************/
 163          void    ReceiveTowByte(uint *p)         //接收 2 Byte数据
 164          {
 165   1              uchar i;
 166   1              uchar j;
 167   1              uint    TempInt;
 168   1              *p = 0;
 169   1              TempInt = 0x8000;
 170   1              for(j=0;j<16;j++)
 171   1              {
 172   2                      IIC_SCL = 1;
 173   2                      for(i=0;i<7;i++);
 174   2                      if(IIC_SDA == 1)
 175   2                              *p = *p + TempInt;
 176   2                      CY = 0; 
 177   2                      TempInt = TempInt>>1;
 178   2                      for(i=0;i<7;i++);
 179   2                      IIC_SCL = 0;
C51 COMPILER V7.06   URM37_WR                                                              10/07/2005 20:45:27 PAGE 4   

 180   2                      for(i=0;i<7;i++);       
 181   2              }
 182   1              
 183   1      }
 184          /******************************************************************** 
 185          * 名称: Read_Temper
 186          * 说明: 
 187          * 功能: 读取温度的低层驱动模块
 188          * 调用: IIC_START,SendByte,Send_BIT9RW,IIC_ACK,ReceiveTowByte
 189          * 输入: uint *p
 190          * 返回值: 操作标志
 191          ***********************************************************************/ 
 192          uchar   Read_Temper(uint *p)
 193          {
 194   1              uchar   Temp;
 195   1              
 196   1              IIC_START();    //启动信号
 197   1              SendByte(140);
 198   1              Send_BIT9RW(R); //读            
 199   1              Temp = IIC_ACK();
 200   1              if(Temp == OK)
 201   1              {
 202   2                      ReceiveTowByte(p);
 203   2                      return OK;
 204   2              }
 205   1              else
 206   1                      return ERROR;           
 207   1      }
 208          
 209          /******************************************************************** 
 210          * 名称: Read_EEPROM
 211          * 说明: 
 212          * 功能: 读模块内部的EEPROM 
 213          * 调用: IIC_START,SendByte,Send_BIT9RW,IIC_ACK,ReceiveTowByte
 214          * 输入: uchar Addr,uchar *p
 215          * 返回值: 操作标志
 216          ***********************************************************************/
 217          uchar   Read_EEPROM(uchar Addr,uchar *p)//读EEPROM
 218          {
 219   1              uchar   Temp;
 220   1              uint    DataInt;
 221   1              
 222   1              IIC_START();    //启动信号
 223   1              SendByte(Addr);
 224   1              Send_BIT9RW(R); //读
 225   1                      
 226   1              Temp = IIC_ACK();
 227   1              if(Temp == OK)  
 228   1              {
 229   2                      ReceiveTowByte(&DataInt);
 230   2                      *p = (uchar)(DataInt&0x00ff);
 231   2                      return OK;
 232   2              }       

⌨️ 快捷键说明

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