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

📄 wsd1.lst

📁 湿度采集模块
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   WSD1                                                                  11/03/2004 13:56:11 PAGE 1   


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

line level    source

   1          /*-----------------------------------------
   2          编者:吴威  04.09.16
   3          -----------------------------------------*/
   4          #include <REGX52.H>
   5          #define  uchar unsigned char
   6          #define  fchar signed char
   7          #define  uint  unsigned int
   8          #define dat    30
   9          #define dat1   60
  10          #define dat2   30
  11          /*--------------------------------*/
  12          sbit K1=P0^5;               
  13          sbit K2=P0^6;               
  14          sbit K3=P0^7;               
  15          sbit K4=P0^4;     
  16          
  17          sbit WOUTH=P0^0;               
  18          sbit WOUTL=P0^1;               
  19          sbit SOUTH=P0^2;               
  20          sbit SOUTL=P0^3;     
  21          
  22          sbit SER=P1^4;           //14,8位串行输入
  23          sbit SRCLK=P1^6;           //12琐存
  24          sbit CLK=P1^5;           //11时钟   
  25          
  26          sbit ds1820=P3^4;
  27          sbit beep=P2^1;
  28          //-----------------------------
  29          uchar bdata x;
  30          sbit x0     =x^7;
  31          sbit db     =x^6;      //小数点控制位
  32          sbit db1    =x^5;
  33          sbit x3     =x^4;
  34          //-----------------------------
  35          uchar data TAB[18],xs1[8],msn=50;
  36          uint SOUT,plz,wdz;
  37          //-----------------------------
  38          extern  void d25045(uchar x);
  39          /*-----------------------------------*/
  40          uchar code DAT[11]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};  //位驱动数组
  41          
  42          uchar code DAT1[18]={0xeb,0x0a,0x79,0x5b,0x9a,
  43                               0xd3,0xf3,0x4a,0xfb,0xdb,
  44                                                   0x40,0x10,0x01,0x3b,0x00,
  45                                                   0xf0,0xba,0x00};
  46          uint code SDTAB[101]=
  47          /*
  48                 {
  49                   7285,7276,7264,7252,7240,7228,7216,7204,7192,7180,
  50                           7168,7156,7144,7132,7120,7108,7096,7084,7072,7060,
  51                           7048,7036,7024,7012,7000,6988,6976,6964,6952,6940,
  52                           6928,6916,6904,6892,6880,6868,6856,6844,6832,6820,
  53                           6808,6796,6784,6772,6760,6748,6736,6724,6712,6700,
  54                           6688,6675,6664,6652,6640,6628,6616,6604,6592,6580,
  55                           6568,6556,6544,6532,6520,6508,6496,6484,6472,6460,
C51 COMPILER V7.20   WSD1                                                                  11/03/2004 13:56:11 PAGE 2   

  56                           6448,6436,6424,6412,6400,6388,6376,6364,6352,6340,
  57                           6328,6316,6304,6292,6280,6268,6256,6244,6232,6220,
  58                           6088,6076,6064,6052,6040,6028,6016,6004,5992,5980,
  59                          };
  60                          */
  61                          {
  62                    7285,7245,7233,7221,7219,7207,7195,7183,7171,7159,
  63                    7153,7141,7129,7117,7095,7083,7071,7059,7047,7035,
  64                    7021,7009,6997,6985,6973,6961,6949,6937,6925,6913,
  65                    6899,6887,6875,6863,6851,6839,6827,6815,6803,6791,
  66                    6775,6763,6751,6739,6727,6715,6703,6691,6679,6667,
  67                    6648,6636,6624,6612,6600,6588,6576,6564,6552,6540,
  68                    6507,6495,6483,6471,6469,6447,6435,6423,6411,6409,
  69                            6381,6369,6357,6345,6333,6321,6309,6297,6285,6273,
  70                    6238,6226,6214,6202,6190,6178,6166,6154,6142,6130,
  71                    6068,6056,6044,6032,6020,6018,6006,5994,5982,5970,
  72                            };
  73                            /*
  74                          {
  75                   5970,5982,5994,6006,6018,6020,6032,6044,6056,6068,
  76                           6130,6142,6154,6166,6178,6190,6202,6214,6226,6238,
  77                           6273,6285,6297,6309,6321,6333,6345,6357,6369,6381,
  78                           6409,6411,6423,6435,6447,6469,6471,6483,6495,6507,
  79                           6540,6552,6564,6576,6588,6600,6612,6624,6636,6648,
  80                           6667,6679,6691,6703,6715,6727,6739,6751,6763,6775,
  81                           6791,6803,6815,6827,6839,6851,6863,6875,6887,6899,
  82                           6913,6925,6937,6949,6961,6973,6985,6997,7009,7021,
  83                           7035,7047,7059,7071,7083,7095,7117,7129,7141,7153,
  84                           7159,7171,7183,7195,7207,7219,7221,7233,7245,7285,
  85                          };
  86                          */
  87          //-----------------------------
  88          void delay1(uint ms)
  89          {
  90   1      uint i;
  91   1      for(i=0;i<ms;i++);            //Feed the dog
  92   1      }
  93          //*******************************************
  94          void d595(uchar x)
  95          {
  96   1      uchar temp,j;
  97   1           temp=x; 
  98   1               if(db==1)
  99   1               {
 100   2               if(db1==1){temp=temp|4;}
 101   2               }
 102   1      for (j=0;j<8;j++){
 103   2           temp=temp>>1; SER=CY; CLK=1; CLK=0;
 104   2            }
 105   1      }
 106          /*-------------------------------*/
 107          uint cjtemp(void)
 108          {uint z; 
 109   1      
 110   1      #pragma asm
 111   1      GET_TEMP:
 112   1              //CLR EA                ;使用ds1820一定要禁止任何中断产生
 113   1              ACALL INT            ;调用初使化子程序
 114   1              MOV A,#0CCH
 115   1              ACALL WRITE     ;送入跳过ROM命令
 116   1              MOV A, #44H
 117   1              ACALL WRITE     ;送入温度转换命令
C51 COMPILER V7.20   WSD1                                                                  11/03/2004 13:56:11 PAGE 3   

 118   1              ACALL INT           ;温度转换完全,再次初使化ds1820
 119   1              MOV A,#0CCH
 120   1              ACALL WRITE     ;送入跳过ROM命令
 121   1              MOV A,#0BEH
 122   1              ACALL WRITE     ;送入读温度暂存器命令
 123   1              ACALL READ
 124   1              mov r7,a             ;读出温度值低字节存入R7
 125   1              ACALL READ
 126   1              ;lr ACC.7
 127   1              mov r6,a             ;读出谩度值高字节存入R6
 128   1              SETB EA
 129   1           RET
 130   1        INT:   
 131   1              CLR EA                  ;初始化ds1820子程序
 132   1           L0:CLR ds1820           ;ds1820总线为低复位电平87460452
 133   1              MOV R2,#200
 134   1           L1:CLR ds1820
 135   1              DJNZ R2,L1           ;总线复位电平保持400us
 136   1              SETB ds1820             ;释放ds1820总线
 137   1              MOV R2,#30
 138   1           L4:DJNZ R2,L4         ;释放ds1820总线保持60us
 139   1              CLR C                    ;清存在信号(存在C=0,不存在C=1)
 140   1              ORL C,ds1820
 141   1              ;JC L0
 142   1              MOV R6,#80
 143   1           L5:ORL C,ds1820
 144   1              JC L3
 145   1              DJNZ R6,L5
 146   1              ;AJMP L0
 147   1           L3:MOV R2,#240
 148   1           L2:DJNZ R2,L2    
 149   1              SETB EA
 150   1           RET
 151   1      WRITE:                         ;向ds1820写操作命令子程序
 152   1              CLR EA
 153   1              MOV R3,#8           ;写入ds1820的bit数,一个字节8个bit
 154   1          WR1:SETB ds1820
 155   1              MOV R4,#8
 156   1              RRC A                     ;把一个字节data(A)分成8个bit环移给 C
 157   1              CLR ds1820                 ;开始写入ds1820总线要处于复位(低)状态
 158   1          WR2:DJNZ R4,WR2     ;ds1820总线复位保持16us
 159   1              MOV ds1820,C               ;写入一个bit
 160   1              MOV R4,#20
 161   1          WR3:DJNZ R4,WR3     ;等待40us
 162   1              DJNZ R3,WR1          ;写入下一个bit 
 163   1              SETB ds1820                ;重新释放ds1820总线
 164   1                      SETB EA
 165   1           RET
 166   1      READ:
 167   1              CLR EA
 168   1              MOV R6,#8            ;连续读8个bit
 169   1          RE1:CLR ds1820           ;读前总线保持为低
 170   1              MOV R4,#4
 171   1              NOP
 172   1              SETB ds1820             ;开始读,总线释放
 173   1          RE2:DJNZ R4,RE2     ;持续8us
 174   1              MOV C,ds1820           ;从ds1820总线读得一个bit
 175   1              RRC A                    ;把读得的位值环移给 A
 176   1              MOV R5,#30
 177   1          RE3:DJNZ R5,RE3     ;持续60us
 178   1              DJNZ R6,RE1         ;读下一个bit
 179   1              SETB ds1820              ;重新释放ds1820总线
C51 COMPILER V7.20   WSD1                                                                  11/03/2004 13:56:11 PAGE 4   

 180   1                      SETB EA
 181   1           RET          
 182   1      #pragma endasm
 183   1      
 184   1      return z;
 185   1      }
 186          //--------------------------------
 187          uint wdcl(void)
 188          { 
 189   1      wdz=cjtemp();
 190   1      if((wdz>>15)==1)
 191   1        {wdz=~wdz;}
 192   1        wdz=((0x0ff0&wdz)>>4)*10+((0x0f&wdz)*6/10);
 193   1        if(wdz>1260){wdz=0;}
 194   1      return wdz;
 195   1      }
 196          /*-------------------------------*/
 197          uchar RDSDZ(void)
 198          {uchar i=0,z=0;
 199   1      static uchar a,S1,S2,S3;
 200   1      while(z<100)
 201   1       {
 202   2       if(plz<SDTAB[i]){i++;}
 203   2       else{z=101;}
 204   2       }
 205   1      /*
 206   1      if(msn==50)
 207   1      {
 208   1      a++;
 209   1      if(a>4){a=1;}
 210   1      switch(a)
 211   1           {
 212   1            case 1: S1=i;     break;  // 
 213   1            case 2: S2=i;     break;  // 
 214   1                case 3: S3=i;     break;  // 
 215   1                default: 
 216   1            SOUT=((S1+S2+S3)/3);     
 217   1                break;  // 
 218   1           }
 219   1      */
 220   1      return i;
 221   1      }
*** WARNING C280 IN LINE 199 OF WSD1.C: 'a': unreferenced local variable
*** WARNING C280 IN LINE 199 OF WSD1.C: 'S1': unreferenced local variable
*** WARNING C280 IN LINE 199 OF WSD1.C: 'S2': unreferenced local variable
*** WARNING C280 IN LINE 199 OF WSD1.C: 'S3': unreferenced local variable
 222          //-----------------------------
 223          void AJ(void)
 224          {uchar a,b,c;
 225   1       uint Collect;
 226   1       if(K1=1,K1==0)
 227   1         {
 228   2        db1=0;         //关闭小数点
 229   2        while(~K1)
 230   2        {
 231   3         if(K4=1,K4==0){db1=1;d25045(2);x0=0;}
 232   3         else x0=1;
 233   3         }
 234   2              b++;
 235   2              if(b>6){b=1;}
 236   2              switch(b)
 237   2             {
C51 COMPILER V7.20   WSD1                                                                  11/03/2004 13:56:11 PAGE 5   

 238   3                case 1:  a=xs1[0];               break;
 239   3                case 2:  a=xs1[1];               break;
 240   3                    case 3:  a=xs1[2];               break;
 241   3                        case 4:  a=xs1[3];c=xs1[6];      break;
 242   3                case 5:  a=xs1[4];c=xs1[7];      break;
 243   3                        case 6:  a=xs1[5];               break;
 244   3             }
 245   2              delay1(300);
 246   2         }
 247   1       if(x0==1)
 248   1        {
 249   2        if(K2=1,K2==0)
 250   2         {
 251   3         a++;
 252   3         x0=1;
 253   3         delay1(80);
 254   3         }
 255   2        if(K3=1,K3==0)
 256   2         {
 257   3         a--;

⌨️ 快捷键说明

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