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

📄 bdz.lst

📁 该系统是一个温度测控系统,传感器采用tlc549,内付有proteus的仿真图形,可以模拟外围电路,程序采用c,开发环境是keil c.
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   BDZ                                                                   08/25/2006 20:43:45 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE BDZ
OBJECT MODULE PLACED IN bdz.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE bdz.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "reg52.h"
   2          #include "math.h"
   3          #include "intrins.h"
   4          #define byte unsigned char
   5          #define uint unsigned int
   6          #define WRITE 0xA0   //写地址
   7          #define READ 0xA1    //读地址
   8          #define OV_TIM 250
   9          #define HI 0xf8
  10          #define LO 0x2f  //12m 1ms  6m 2ms   //扫描速度降低一倍
  11          #define TRUE 1
  12          #define FALSE 0
  13          sbit DAS=P2^0;
  14          sbit CLS=P2^1;
  15          #define tem_xiax_addr 10   //iic中的地址
  16          #define tem_shax_addr 20
  17          #define time_addr 30
  18          
  19          sbit time_led=P2^2;
  20          sbit mod_led=P2^3;
  21          sbit daiji_led=P2^4;
  22          sbit com0=P2^5;
  23          sbit com1=P2^6;
  24          sbit com2=P2^7;
  25          sbit JDQ=P0^7;
  26          sbit SET=P3^4;
  27          sbit ADD=P3^5;
  28          sbit SUB=P3^6;
  29          sbit MOD=P3^7;   
  30          
  31          sbit FMQ=P1^7;
  32          
  33          sbit CLK=P0^0; //ad
  34          sbit DA=P0^1;
  35          sbit CS=P0^2;
  36          
  37          #define duan P1
  38          #define tem_lc_xiax 50
  39          #define tem_lc_shax 230
  40           byte caij,count,caij;
  41                   uint k=60000,j=10000,xiax_linshi;
  42              uint tem_shax,tem_xiax;      
  43          byte iic[2],t2=0,t1=0,t0=0,cai_flag=0,tem_now,n,cai_N;  
  44          bit flag=0; 
  45          code byte smg[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8E};
  46          
  47          /*================================24C02部分===============================================================
             -*/
  48          /*----------------------------------------------------------------------
  49          IIC启动信号
  50          ----------------------------------------------------------------------*/ 
  51             void  I_start(void)
  52           {
  53   1                      DAS=1;
  54   1                      CLS=1;
C51 COMPILER V7.20   BDZ                                                                   08/25/2006 20:43:45 PAGE 2   

  55   1                      DAS=0;
  56   1                      CLS=0;
  57   1      }
  58          /*---------------------------------------------------------------------------
  59          IIC停止信号
  60          ----------------------------------------------------------------------------*/
  61          void I_stop(void)
  62          {
  63   1              CLS=0;
  64   1              DAS=0;
  65   1              CLS=1;
  66   1              DAS=1;
  67   1              CLS=0;  
  68   1      }
  69          void  I_init(void)
  70          {
  71   1              CLS=0;
  72   1              I_stop();
  73   1      }
  74          /*-------------------------------------------------------------------------
  75          IIC时钟信号   
  76          函数返回一个IIC数据线上的值
  77          --------------------------------------------------------------------------*/
  78          bit I_clock(void)  //发送的数据咱存在sample中
  79          {
  80   1              bit sample;
  81   1              CLS=1;
  82   1              sample=DAS;
  83   1              CLS=0;
  84   1              return(sample);
  85   1      }
  86          /*---------------------------------------------------------------------------
  87          向IIC器件发送一个字节数据  参数:I_data
  88          返回应答位信号,为1表示发送成功,为0表示发送失败
  89          -----------------------------------------------------------------------------*/
  90          bit  I_send(byte I_data)
  91          {
  92   1              register byte i;
  93   1              for(i=0;i<8;i++)
  94   1              {
  95   2                      if(I_data&0x80)
  96   2                               DAS=1;
  97   2                              else DAS=0;
  98   2                              I_data=I_data<<1;
  99   2                              I_clock();
 100   2               }
 101   1               DAS=1;
 102   1               return(~I_clock());   //返回应答信号,为1表示发送成功,为0表示发送失败
 103   1      }
 104          /*-----------------------------------------------------------------------------
 105          接受一个IIC器件发送过来的字节数据,参数无
 106          返回  字节数据
 107          --------------------------------------------------------------------------------*/
 108          byte  I_receive(void)
 109          {
 110   1              byte I_data=0;
 111   1              register byte i;
 112   1              for(i=0;i< 8;i++)
 113   1                     {
 114   2                      I_data=I_data*2;
 115   2                      _nop_();
 116   2                      if(I_clock())
C51 COMPILER V7.20   BDZ                                                                   08/25/2006 20:43:45 PAGE 3   

 117   2                         I_data=I_data+1;
 118   2                         _nop_();
 119   2                         _nop_();
 120   2                         _nop_();
 121   2                     }
 122   1                    return(I_data);
 123   1      }
 124          /*-----------------------------------------------------------------------------
 125          接受IIC器件数据后的应答信号   参数无,返回无
 126          --------------------------------------------------------------------------------*/
 127          void  I_Ack(void)
 128                  {
 129   1                      DAS=0;
 130   1                      I_clock();
 131   1                      DAS=1;
 132   1              } 
 133          /*----------------------------------------------------------------------------
 134          调用函数:  I_start  无参数,无返回值  I_send :函数原形 
 135          bit function I_send(byte I_data) 返回0,1   
 136          参数:Address   要写入的IIC器件单元地址   返回:1,0
 137          功能:写入器件地址和器件单元地址,等待想IIC器件发送数据
 138          ----------------------------------------------------------------------------*/
 139          bit  E_address(byte Address)
 140          {
 141   1              I_start();
 142   1              if(I_send(WRITE))    //发送写地址
 143   1                 return (I_send(Address));  //写入器件控制单元地址
 144   1                 else 
 145   1                   return(FALSE);
 146   1      }
 147          
 148          /*---------------------------------------------------------------------------
 149          从IIC器件读数据块  存入EAROMImage[]中
 150          参数:t   为数据块的首地址
 151          返回:  位数据   为1表示成功,0表示失败
 152          --------------------------------------------------------------------------*/ 
 153          bit E_read_block(byte t,byte block_size,byte *EAROMImage)   //t起始地址
 154          {   
 155   1                      register byte i;  
 156   1                      byte j;
 157   1                      j=0;
 158   1                      i=t+block_size;
 159   1                      
 160   1                      if(E_address(t))   //发送器件地址
 161   1                      {
 162   2                              I_start();
 163   2                              if(I_send(READ))   //
 164   2                              {
 165   3                                  for(;t<=i; t++)
 166   3                                      {
 167   4                                      EAROMImage[j++]= (I_receive());
 168   4                                              if(t!=i)
 169   4                                              I_Ack();
 170   4                                              else
 171   4                                              {   I_clock();
 172   5                                                  I_stop();
 173   5                                          }
 174   4                              }
 175   3                      return(TRUE);
 176   3                  }
 177   2                  else
 178   2                  {
C51 COMPILER V7.20   BDZ                                                                   08/25/2006 20:43:45 PAGE 4   

 179   3                     I_stop();
 180   3                         return(FALSE);
 181   3                  }
 182   2              }
 183   1              else
 184   1              {
 185   2                 I_stop();
 186   2                 return(FALSE);
 187   2              }
 188   1      }
 189          
 190          /*---------------------------------------------------------------------
 191            延时程序
 192          ----------------------------------------------------------------------*/
 193          void  wait_5ms(void)
 194            {
 195   1              register uint i;
 196   1              for(i=0;i<1000;i++)
 197   1               _nop_();
 198   1         }
 199          /*----------------------------------------------------------------------------
 200          功能将EAROMImage[]数组写入IIC器件
 201          参数:   i    器件首地址
 202          返回:   0,1
 203          -----------------------------------------------------------------------------*/
 204          bit E_write_block(byte i,byte block_size,byte *EAROMImage)   //i起始地址
 205          {       register byte t;
 206   1              byte j;
 207   1              j=0;
 208   1              t=i+block_size;
 209   1              
 210   1                  for(;i<=t; i++)
 211   1                  {
 212   2                         if(E_address(i)&&I_send(EAROMImage[j++]))
 213   2                         {
 214   3                                 I_stop();
 215   3                                 wait_5ms();
 216   3                         }
 217   2                     else
 218   2                     return(FALSE);
 219   2              }
 220   1              return(TRUE);
 221   1      }
 222          
 223           
 224          /*---------------------------------------------------------------------------
 225          延时  
 226          参数:  t    返回:无
 227          -------------------------------------------------------------------------*/
 228          void delay(uint t)
 229          {
 230   1          uint i,j;
 231   1          for(i=0; i<t;i++)
 232   1          for(j=0;j<10;j++);
 233   1      }
 234          
 235          /*---------------------------------------------------------------------------
 236          功能:  将参数save里的值写入  以t为首地址的IIC器件
 237          参数:  t  首地址   save 要保存的变量
 238          返回:  无
 239          ---------------------------------------------------------------------------*/
 240          write(unsigned char t,unsigned int save,byte *Imagew)
C51 COMPILER V7.20   BDZ                                                                   08/25/2006 20:43:45 PAGE 5   

 241          {   
 242   1              //      XBF=0;
 243   1              Imagew[0] = save/256;   //高位
 244   1           
 245   1              Imagew[1] = save-(save/256)*256;   //低位
 246   1              if( E_write_block(t,1,Imagew))
 247   1              _nop_();
 248   1            //  XBF=1;     //写保护
 249   1      }
 250          
 251          /*---------------------------------------------------------------------------
 252          功能: 将24C02中的存放的数据转化成十进制,存入save中,
 253          参数:  g   表示IIC器件中的首地址
 254          返回:  uint 数据
 255          -----------------------------------------------------------------------------*/
 256          unsigned  int read(unsigned char g,byte *Imager)
 257          {
 258   1              unsigned int save=0;
 259   1         // XBF=0;
 260   1          if(E_read_block(g,1,Imager))
 261   1          {  
 262   2                      uint i = Imager[0],t=Imager[1];
 263   2              save = ((i * 256) +t); 
 264   2             // XBF=1;    //写保护
 265   2          }   
 266   1              return(save);
 267   1      }
 268          /*========================================================================================================
             -*/
 269          void js(int sav)   //计算
 270          {       
 271   1            t2=sav/100;       
 272   1                t1=(sav%100)/10;
 273   1                t0=sav%10;
 274   1      }
 275          /*---------------------------------------------
 276          功能:  修改数据  10进制
 277          参数: min  下限   max  上限    save  初始值
 278          返回: save  最终值
 279          注意: 按键没有q0,q1,q2区别,while 循环中wg=0;
 280          -----------------------------------------------*/

⌨️ 快捷键说明

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