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

📄 wsd2.lst

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


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

line level    source

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

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

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

 180   1      #pragma endasm
 181   1      */
 182   1      return z;
 183   1      }
 184          /***************延时部分*************/
 185          void dmsec (unsigned int count)                                  
 186          {                                                                
 187   1              unsigned int i;                                          
 188   1              while (count)                                            
 189   1              {                                                        
 190   2                      i = 115;                                                 
 191   2                      while (i>0) i--;                                         
 192   2                      count--;                                         
 193   2          }                                                            
 194   1      }                                                                
 195          /***************发送复位*************/
 196          void tmreset (void)                                                      
 197          {                                                                        
 198   1              unsigned int i;                                                  
 199   1              TMDAT = 0;                                                       
*** ERROR C202 IN LINE 199 OF WSD2.C: 'TMDAT': undefined identifier
 200   1              i = 103;                                                         
 201   1              while (i>0) i--;                // 延时 900 uS(11.0592Mhz时)     
 202   1              TMDAT = 1;                                               
*** ERROR C202 IN LINE 202 OF WSD2.C: 'TMDAT': undefined identifier
 203   1              i = 4;                                                   

⌨️ 快捷键说明

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