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

📄 ds18b20.lst

📁 该程序解决了单片机c语言中时序要求严格的问题,已经调试通过
💻 LST
📖 第 1 页 / 共 2 页
字号:
 145          void write_scratchPad(uchar DTNo)               // 系统主机向指定的DS18B20中写入TH、TL及配置寄存器数据
 146          {
 147                  send_matchRom(DTNo);                            // 向总线发出匹配ROM命令,使编号为DTNo的器件处于选中状态
 148                  write_byte(0x4E);                                       // 向总线发出写便笺存储器命令
 149                          
 150                  write_byte(TH);
 151                  write_byte(TL);
 152                  write_byte(confgReg);
 153                  
 154          }
 155          
 156          
 157          void read_ROMID(void)                                           // 总线上只有一个DS18B20时,主机读出它的64位ROM代码
 158          {
 159                  uchar i;
 160                  write_byte(0x33);                                       // 启动读ROM
 161                  for(i=0;i<8;i++)
 162                  {
 163                          ROMID[0][i]=read_byte();
 164                  }
 165          }*/
 166          
 167                  
 168          main()
 169          {   
 170   1      
 171   1              uchar i,k,th,tl;
 172   1              unit t=0;
 173   1              float result;
 174   1              P1=0x7f;
 175   1              DQ=0;
 176   1          initial();
 177   1          TR1=1;      
 178   1              
 179   1              
C51 COMPILER V7.50   DS18B20                                                               01/09/2006 16:57:59 PAGE 4   

 180   1              while(1)
 181   1              {
 182   2                        
 183   2                      i=bus_reset();                                  // 如果总线上没有DS18B20,就等待
 184   2                      if(i==0)LED=0;
 185   2              /*      read_ROMID();                                           // 读出它的序列号
 186   2                      for(i=0;i<8;i++)
 187   2                      {
 188   2                              SBUF=ROMID[0][i];
 189   2                       while(TI==0);
 190   2                      TI=0;
 191   2                      }*/
 192   2              //      delay_1s();
 193   2              //      send_matchRom(0);                                       // 匹配第0个传感器
 194   2              //      write_scratchPad(0);                            // 写入TH、TL、配置寄存器
 195   2                  write_byte(0xCC);
 196   2                      write_byte(0x44);                                       // 启动转换     
 197   2                      while(!read_bit());                                     // DQ 为低电平,等待,DQ为高表示转换结束
 198   2              
 199   2                      bus_reset();
 200   2              //      read_scratchPad(0);                                     // 读取温度值,scratchPad的前两个字节就是温度
 201   2                  write_byte(0xCC);
 202   2                  write_byte(0xBE);
 203   2                  
 204   2                      tl=read_byte();
 205   2                      th=read_byte();
 206   2                      tl&=0xfc;                                                       // 精度是10位,因此最低两位无效,屏蔽掉
 207   2                      t=th;
 208   2                      t<<=8;
 209   2                      t|=tl;
 210   2                      result=t*0.0625;
 211   2                      k=(uchar)result;
 212   2                  
 213   2                  LED=!LED; // 发光二极管亮,提示发出一个数据
 214   2                  
 215   2              SBUF=k;
 216   2              while(TI==0);
 217   2              TI=0;  
 218   2              delay_1s();
 219   2              
 220   2                          
 221   2              }
 222   1      }
 223          
 224          
 225          
 226          
 227          
 228          
C51 COMPILER V7.50   DS18B20                                                               01/09/2006 16:57:59 PAGE 5   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
scratchPad . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0000H  9
IE . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
DQ . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0097H  1
delay_1s . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  j. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0004H  2
IP . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B8H  1
TH . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0009H  1
TI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0099H  1
TL . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   000AH  1
_write_byte. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  val. . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0001H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0002H  1
  temp . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0003H  1
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  k. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  th . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  tl . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0001H  1
  t. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0000H  2
  result . . . . . . . . . . . . . . .  * REG *  DATA   FLOAT    0004H  4
_write_bit . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  bitval . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
confgReg . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   000BH  1
SBUF . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0099H  1
PCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0087H  1
SCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0098H  1
read_byte. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0002H  1
  value. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0003H  1
TMOD . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0089H  1
TCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0088H  1
read_bit . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
TH1. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008DH  1
TL1. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008BH  1
bus_reset. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  presence . . . . . . . . . . . . . .  AUTO     DATA   BIT      0000H  1
LED. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0096H  1
TR1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008EH  1
T2CON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C8H  1
initial. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
_delay . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  time . . . . . . . . . . . . . . . .  * REG *  DATA   INT      0006H  2
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   INT      0004H  2
PSW. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D0H  1
ROMID. . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    000CH  80


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    308    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     92       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
C51 COMPILER V7.50   DS18B20                                                               01/09/2006 16:57:59 PAGE 6   

END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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