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

📄 acus.lst

📁 一个针灸治疗仪源代码,包括记时,显示AD采样程序,开发环境keil.使用的芯片PLC89C935
💻 LST
📖 第 1 页 / 共 5 页
字号:
 234   1              uchar i;
 235   1              for (i=0;i<8;i++)
 236   1              {
 237   2                      dq = 0;
 238   2              Delay10us(1);  //delay 13 uS //1
 239   2                      dq=wr&0x01;
 240   2                      wr >>= 1;
 241   2                      Delay10us(5);  //delay 50 uS //5
C51 COMPILER V7.01  ACUS                                                                   11/24/2004 13:33:22 PAGE 5   

 242   2                      dq=1;
 243   2                      
 244   2              }
 245   1      }
 246          /************************************************************
 247          *Function:读18B20的一个字节
 248          *parameter:
 249          *Return:
 250          *Modify:
 251          *************************************************************/
 252          uchar ReadByte (void)     //读取单字节
 253          {
 254   1              uchar i,u=0;
 255   1              for(i=0;i<8;i++)
 256   1              {       u >>= 1;
 257   2                      dq = 0;
 258   2                      _nop_();_nop_();_nop_();  //delay 1 uS //1
 259   2                      dq = 1;
 260   2                      NOP;NOP;                      //delay 5 uS //1
 261   2                      if(dq==0)
 262   2                         u=u&0x7f;
 263   2                          
 264   2                      else
 265   2                          u |= 0x80;
 266   2                      //os_wait(K_TMO,1,0);
 267   2                      Delay10us(4);
 268   2                      dq = 1;
 269   2              }
 270   1              return(u);
 271   1      }
 272          /************************************************************
 273          *Function:读18B20
 274          *parameter:
 275          *Return:
 276          *Modify:
 277          *************************************************************/
 278          void read_bytes (uchar j)
 279          {
 280   1               uchar i;
 281   1               for(i=0;i<j;i++)
 282   1               {
 283   2                        *p = ReadByte();
 284   2                        p++;
 285   2               }
 286   1      }
 287          /************************************************************
 288          *Function:CRC校验
 289          *parameter:
 290          *Return:
 291          *Modify:
 292          *************************************************************/
 293          uchar CRC (uchar j)
 294          {
 295   1              uchar i,crc_data=0;
 296   1              for(i=0;i<j;i++)  //查表校验
 297   1          {   crc_data = CrcTable[crc_data^temp_buff[i]];watchdog();}
 298   1          return (crc_data);
 299   1      }
 300          
 301          /************************************************************
 302          *Function:内部配置
 303          *parameter:
C51 COMPILER V7.01  ACUS                                                                   11/24/2004 13:33:22 PAGE 6   

 304          *Return:
 305          *Modify:
 306          *************************************************************/
 307          void Config18b20 (void)  //重新配置报警限定值和分辨率
 308          {    if(Init18b20()!=0) 
 309   1                  {watchdog();
 310   2               WriteByte(0xcc);  //skip rom
 311   2               WriteByte(0x4e);  //write scratchpad
 312   2               WriteByte(0x19);  //上限
 313   2               WriteByte(0x1a);  //下限
 314   2               WriteByte(0x7f);     //set 11 bit (0.125)
 315   2                   os_wait(K_TMO,2,0);
 316   2                   watchdog();
 317   2              }
 318   1           if(Init18b20()!=0); 
 319   1              {WriteByte(0xcc);  //skip rom
 320   2               WriteByte(0x48);  //保存设定值
 321   2                   os_wait(K_TMO,2,0);
 322   2                   watchdog();
 323   2                       }
 324   1          if(Init18b20()!=0); 
 325   1              {
 326   2                       WriteByte(0xcc);  //skip rom
 327   2               WriteByte(0xb8);  //回调设定值
 328   2                   os_wait(K_TMO,2,0);
 329   2                   watchdog();
 330   2                       }
 331   1      }
 332          /************************************************************
 333          *Function:读18B20ID
 334          *parameter:
 335          *Return:
 336          *Modify:
 337          *************************************************************/
 338          void ReadID (void)//读取器件 id
 339          {
 340   1              Init18b20();
 341   1              WriteByte(0x33);  //read rom
 342   1              read_bytes(8);
 343   1      }
 344          /************************************************************
 345          *Function:读取温度
 346          *parameter:
 347          *Return:
 348          *Modify:
 349          *************************************************************/
 350          void GemTemp (void)
 351          {uint TEMP;
 352   1         read_bytes (9);
 353   1         if (CRC(9)==0) //校验正确
 354   1         {
 355   2                  TEMP = temp_buff[1]*0x100 + temp_buff[0];
 356   2                      if(TEMP==0||TEMP==0xff)
 357   2                      {Config18b20();
 358   3                       TEMP=0;}
 359   2               Temperature=TEMP;
 360   2                       Temperature /= 16;
 361   2                       watchdog();
 362   2              }
 363   1      }
 364          /************************************************************
 365          *Function:18B20ID全处理
C51 COMPILER V7.01  ACUS                                                                   11/24/2004 13:33:22 PAGE 7   

 366          *parameter:
 367          *Return:
 368          *Modify:
 369          *************************************************************/
 370          void TemperatuerResult(void)
 371          {
 372   1              if(Init18b20()!=0) 
 373   1                {
 374   2                 WriteByte(0xcc);   //skip rom
 375   2                 WriteByte(0x44);   //Temperature convert
 376   2                 os_wait(K_TMO,3,0);
 377   2                 watchdog();
 378   2                 os_wait(K_TMO,2,0);
 379   2                 watchdog();
 380   2                 os_wait(K_TMO,2,0);
 381   2                 watchdog();
 382   2                 }
 383   1              if(Init18b20()!=0) 
 384   1                 {WriteByte(0xcc);   //skip rom
 385   2                  WriteByte(0xbe);   //read Temperature
 386   2                  watchdog();
 387   2                  p = temp_buff;
 388   2                  GemTemp(); 
 389   2                  watchdog();
 390   2                      }
 391   1                       watchdog();
 392   1      }
 393           /*********************************************************
 394          *名称:watchdog()
 395          *功能:喂狗函数
 396          *入口参数:no
 397          *出口参数:无
 398          *********************************************************/
 399          void  watchdog(void)            
 400          {  
 401   1         EA=0;
 402   1       
 403   1        WFEED1=0xA5;                       //执行清零第一部份
 404   1        WFEED2=0x5A;               //执行清零第二部分  
 405   1        EA=1; 
 406   1        }
 407           /*********************************************************
 408          *名称:WriteDisp()
 409          *功能:显示函数
 410          *入口参数:disp显示的数据,led显示位置
 411          *出口参数:无
 412          *********************************************************/
 413            void  WriteDisp(uchar led,uchar  disp) 
 414            {     
 415   1          switch  (disp)
 416   1                     {case 0  :
 417   2                           dispbuff[led]=LED0;
 418   2                               break;
 419   2                              case 1  :
 420   2                           dispbuff[led]=LED1;
 421   2                               break;
 422   2                  case 2      :
 423   2                           dispbuff[led]=LED2;
 424   2                               break;
 425   2                  case 3      :
 426   2                           dispbuff[led]=LED3;
 427   2                               break;
C51 COMPILER V7.01  ACUS                                                                   11/24/2004 13:33:22 PAGE 8   

 428   2                  case 4      :
 429   2                           dispbuff[led]=LED4;
 430   2                               break;
 431   2                  case 5      :
 432   2                           dispbuff[led]=LED5;
 433   2                               break;
 434   2                  case 6      :
 435   2                           dispbuff[led]=LED6;
 436   2                               break;
 437   2                  case 7      :
 438   2                           dispbuff[led]=LED7;
 439   2                               break;
 440   2                              case 8  :
 441   2                           dispbuff[led]=LED8;
 442   2                               break;
 443   2                  case 9      :
 444   2                           dispbuff[led]=LED9;
 445   2                              break;
 446   2                         default :  dispbuff[led]=LEDE;  break;
 447   2                          }
 448   1         
 449   1         
 450   1          }  
 451           
 452           /*********************************************************
 453          *名称:Disp()
 454          *功能:显示函数
 455          *入口参数:no
 456          *出口参数:无
 457          *********************************************************/
 458          void  Disp(uchar *i)            
 459          { uchar j=0;
 460   1               while(j<=3)
 461   1            { switch (j)
 462   2                  { case 0:
 463   3                   { 
 464   4                                 P2=*(i);
 465   4                                 P10=1;
 466   4                                 P11=0;
 467   4                                 P04=0;
 468   4                                 P05=0;
 469   4                     os_wait(K_TMO,1,0);
 470   4                                 watchdog();   
 471   4                                 j++;
 472   4                                 break;
 473   4                    }

⌨️ 快捷键说明

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