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

📄 250451.lst

📁 湿度采集模块
💻 LST
字号:
C51 COMPILER V7.20   250451                                                                11/03/2004 13:56:10 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE 250451
OBJECT MODULE PLACED IN 250451.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE 250451.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          //#include <stdio.h>
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          //-------------------------
   6          extern  uchar data xs1[8];
   7          //下面是我正在用的没有问题。
   8          sbit SO=P2^3;   //2
   9          sbit SI=P2^5;   //5
  10          sbit SCK=P2^4;  //6
  11          sbit CS=P2^2;   //1
  12          //25045可编程看门狗监控EEPROM指令集
  13          #define WREN 0x06; 00000110 //设置写使能锁存器(允许写操作)
  14          #define WRDI 0x04; 00000100 //复位写使能锁存器(禁止写操作)
  15          #define RDSR 0x05; 00000101 //读状态寄存器
  16          #define WRSR 0x01; 00000001 //写状态寄存器(块锁定)
  17          #define READ 0x03; 00000011 //从开始于所选地址的存储器列阵中读出数据
  18          #define WRTE 0x02; 00000010 //把数据写入开始于所选地址的存储器阵列中(1至4字节)
  19          
  20          void in_byte(unsigned char BYT);
  21          unsigned char out_byte(void);
  22          unsigned char rdsr_dog(void);
  23          void wrsr_dog(unsigned char status_reg);
  24          unsigned char wip_poll(void);
  25          void wrdi_dog(void);
  26          void rest_dog(void);
  27          unsigned char byte_read(unsigned char H,unsigned char L);
  28          void byte_write(unsigned char H,unsigned char L,unsigned char D);
  29          unsigned char rda[8];
  30          unsigned char cs_rda[8]; 
  31          //看门狗写使能子程序
  32          void wren_dog(void)
  33          {
  34   1      SCK=0;
  35   1      CS=0;
  36   1      in_byte(0x06);
  37   1      SCK=0;
  38   1      CS=1;
  39   1      }
  40          //看门狗写禁止子程序
  41          void wrdi_dog(void)
  42          {
  43   1      SCK=0;
  44   1      CS=0;
  45   1      in_byte(0x04);
  46   1      SCK=0;
  47   1      CS=1;
  48   1      }
  49          //写状态寄存器
  50          void wrsr_dog(unsigned char status_reg)
  51          {
  52   1      // unsigned char com=0x01;//WRSR;
  53   1      SCK=0;
  54   1      CS=0;
  55   1      in_byte(0x01);
C51 COMPILER V7.20   250451                                                                11/03/2004 13:56:10 PAGE 2   

  56   1      in_byte(status_reg);
  57   1      SCK=0;
  58   1      CS=1;
  59   1      wip_poll();
  60   1      }
  61          //读状态寄存器
  62          unsigned char rdsr_dog(void)
  63          {
  64   1      // unsigned char com=0x05;//RDSR;
  65   1      SCK=0;
  66   1      CS=0;
  67   1      in_byte(0x05);
  68   1      return(out_byte());
  69   1      SCK=0;
  70   1      CS=1;
  71   1      }
  72          //字节读
  73          unsigned char byte_read(unsigned char H,unsigned char L)
  74          {
  75   1      unsigned char data_dog,add;
  76   1      wren_dog();//看门狗写使能子程序
  77   1      SCK=0;
  78   1      CS=0;
  79   1      add=H<<3;
  80   1      add|=0x03;//READ;
  81   1      in_byte(add);
  82   1      add=L;
  83   1      in_byte(add);
  84   1      data_dog=out_byte();
  85   1      SCK=0;
  86   1      CS=1;
  87   1      return(data_dog);
  88   1      }
  89          //字节写
  90          //H,地址高字节;L地址低字节;D写入的数据
  91          void byte_write(unsigned char H,unsigned char L,unsigned char D)
  92          {
  93   1      unsigned char data_dog,add;
  94   1      wren_dog();//看门狗写使能子程序
  95   1      SCK=0;
  96   1      CS=0;
  97   1      add=H<<3;
  98   1      add|=0x02;//WRTE;
  99   1      in_byte(add);
 100   1      add=L;
 101   1      in_byte(add);
 102   1      data_dog=D;
 103   1      in_byte(data_dog);
 104   1      SCK=0;
 105   1      CS=1;
 106   1      wip_poll();
 107   1      }
 108          //复位看门狗子程序
 109          void rest_dog(void)
 110          {
 111   1      CS=0;
 112   1      CS=1;
 113   1      }
 114          //检验写操作是否结束。
 115          unsigned char wip_poll(void)
 116          {
 117   1      unsigned char i;
C51 COMPILER V7.20   250451                                                                11/03/2004 13:56:10 PAGE 3   

 118   1      unsigned char wip;
 119   1      for(i=0xff;i>=1;i--) 
 120   1      {
 121   2      wip=rdsr_dog();
 122   2      wip&=0x01;
 123   2      if(wip==0) break;
 124   2      }
 125   1      return(wip);
 126   1      }
 127          //单字节指令或数据写入X25045
 128          //在SI线上输入的数据在SCK的上升沿被锁存。
 129          void in_byte(unsigned char byt)
 130          {
 131   1      unsigned char i;
 132   1      for(i=8;i>=1;i--)
 133   1      {
 134   2      SCK=0; 
 135   2      SI=byt&0x80; 
 136   2      SCK=1; 
 137   2      byt=byt<<1; 
 138   2      }
 139   1      }
 140          //单字节数据从X25045读到单片机
 141          //数据由SCK的下降沿输出到SO线上。
 142          unsigned char out_byte(void)
 143          {
 144   1      unsigned char i;
 145   1      unsigned char byt;
 146   1      for(i=8;i>=1;i--)
 147   1      {
 148   2      byt=byt<<1;
 149   2      SCK=1;
 150   2      SCK=0; 
 151   2      byt|=SO; 
 152   2      }
 153   1      return (byt);
 154   1      }
 155          void d25045(uchar x)
 156          {uchar i,a=10;
 157   1        switch(x)
 158   1             {
 159   2                case 1:      
 160   2                        wrdi_dog();//看门狗写禁止子程序
 161   2                wren_dog();//看门狗写使能子程序
 162   2                wrsr_dog(32);//写状态寄存器200ms
 163   2                    break;
 164   2                case 2:     
 165   2                    for(i=0;i<8;i++){byte_read(0,0);byte_write(0,i,xs1[i]);}//写地址数据
 166   2                    break;
 167   2                case 3:        
 168   2                    for(i=0;i<8;i++){xs1[i]=byte_read(0,i);} //字节读
 169   2                    break; 
 170   2                    case 4:   
 171   2                rest_dog();//复位看门狗子程序
 172   2                    break;
 173   2             }
 174   1      }
 175          /*
 176          void main(void)
 177          {uchar a,b,c,d,e,f,g,h,j;
 178          //wrdi_dog();//看门狗写禁止子程序
 179          //rest_dog();//复位看门狗子程序
C51 COMPILER V7.20   250451                                                                11/03/2004 13:56:10 PAGE 4   

 180          //wren_dog();//看门狗写使能子程序
 181          //wrsr_dog(16);//写状态寄存器
 182          d25045(1);
 183          while(1)
 184          {
 185          TAB[0]=a;
 186          TAB[1]=b;
 187          TAB[2]=c;
 188          TAB[3]=e;
 189          TAB[4]=f;
 190          TAB[5]=g;
 191          TAB[6]=h;
 192          TAB[7]=j;
 193          
 194          d25045(2);
 195          d25045(3);
 196          
 197          a=TAB[0];
 198          b=TAB[1];
 199          c=TAB[2];
 200          e=TAB[3];
 201          f=TAB[4];
 202          g=TAB[5];
 203          h=TAB[6];
 204          j=TAB[7];
 205          }
 206          }
 207          */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    307    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     16      10
   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 + -