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

📄 general.lst

📁 江苏单相复费率电能表方案
💻 LST
📖 第 1 页 / 共 2 页
字号:
 197   2                      if(AckBus()==0) return(0);
 198   2              
 199   2              if( I2STAT!=0x50 )
 200   2              { 
 201   3                      I2CON = GENERATE_STOP;
 202   3                      return(0);
 203   3              }
 204   2          
 205   2              *DataPrt = I2DAT;              //读取数据
 206   2              DataPrt++;
 207   2              } 
 208   1        
 209   1              I2CON = RELEASE_BUS_NOACK;         //接收最后一字节数据并发送非应答位
 210   1      //      while( SI==0 );
 211   1              if(AckBus()==0) return(0);  
 212   1                  
 213   1              *DataPrt = I2DAT;
 214   1              I2CON    = GENERATE_STOP;         //结束总线
 215   1                      
 216   1              return(1);
 217   1      }
 218          
 219          
 220          
 221          
 222          
 223          
 224          //**********************************************************
 225          //名称:
 226          //功能:
 227          //说明:
 228          //**********************************************************
 229          void Watchdog_feed(void)
 230          {  
 231   1              EA     = 0;
 232   1              WFEED1 = 0xA5;
 233   1              WFEED2 = 0x5A;
 234   1              EA     = 1;
 235   1      }
 236          
 237          
 238          
 239          
 240          //**********************************************************
 241          //名称:DelayNmS
C51 COMPILER V7.50   GENERAL                                                               04/13/2007 13:24:51 PAGE 5   

 242          //功能:
 243          //说明:延时NmS
 244          //**********************************************************
 245          void DelayNms(uchar value)
 246          {
 247   1              uchar i;
 248   1              uchar j;
 249   1      
 250   1              while(value--)
 251   1              {       
 252   2                      //1ms=10*100us
 253   2                      for(i=0;i<10;i++)
 254   2                      {               
 255   3                              //100us
 256   3                              j=184;
 257   3                              while(--j);             
 258   3                      } 
 259   2              }
 260   1      }
 261          
 262          
 263          
 264          
 265          //**********************************************************
 266          //名称:
 267          //功能:
 268          //说明:
 269          //**********************************************************
 270          void  ArrayInit(uchar idata *ptr,uchar len)
 271          {
 272   1              uchar i;
 273   1      
 274   1              i= 0x00;
 275   1              do
 276   1              {
 277   2                      *ptr = 0x00;
 278   2                      ptr++;
 279   2                      i++;            
 280   2              }while(i<len);
 281   1      }
 282          
 283          
 284          
 285          
 286          //**********************************************************
 287          //名称:BCD检查
 288          //功能:
 289          //说明:
 290          //**********************************************************
 291          bit BCDCHK(uchar idata *ptr,uchar len)
 292          {       
 293   1              uchar i;
 294   1              uchar Temp;             
 295   1      
 296   1              i=0x00;
 297   1              do
 298   1              {               
 299   2                      Temp = *ptr;            
 300   2                      if( (Temp&0x0F)>0x09 || (Temp&0xF0)>0x90 ) return(0);           
 301   2                      ptr++;
 302   2                      i++;            
 303   2              }while(i<len);
C51 COMPILER V7.50   GENERAL                                                               04/13/2007 13:24:51 PAGE 6   

 304   1      
 305   1              return(1);
 306   1      }
 307          
 308          
 309          
 310          
 311          //**********************************************************
 312          //名称:BCD转HEX
 313          //功能:
 314          //说明:返回HEX值
 315          //**********************************************************
 316          uchar BCD2HEX(uchar BCDdata)
 317          {
 318   1              uchar Temp;
 319   1              
 320   1              Temp  = (BCDdata>>4)*10;
 321   1              Temp +=  BCDdata&0x0F;
 322   1              
 323   1              return Temp;
 324   1      }
 325          
 326          
 327          
 328          
 329          //**********************************************************
 330          //名称:SumCHK()
 331          //功能:返回数据校验和
 332          //说明:
 333          //**********************************************************
 334          uchar SumCHK(uchar idata *ptr, uchar len)
 335          {
 336   1              uchar i;
 337   1              uchar TmpData; 
 338   1              uchar SumData;
 339   1      
 340   1              TmpData = 0x00;
 341   1              SumData = 0x00;         
 342   1              i       = 0x00;
 343   1              do
 344   1              {
 345   2                      TmpData  = *ptr;
 346   2                      SumData += TmpData;                             
 347   2                      ptr++;
 348   2                      i++;
 349   2              } while(i<len);
 350   1      
 351   1              return SumData;
 352   1      }
 353          
 354          
 355          
 356          
 357          
 358          //**********************************************************
 359          //名称:BCD加法
 360          //功能:
 361          //说明:返回进位
 362          //**********************************************************
 363          uchar BCDINC(uchar idata *ptr,uchar len,uchar step)
 364          {
 365   1              uchar i;
C51 COMPILER V7.50   GENERAL                                                               04/13/2007 13:24:51 PAGE 7   

 366   1              uchar TCF;
 367   1              uchar Temp;
 368   1      
 369   1              i    = 0x00;
 370   1              TCF  = 0x00;
 371   1              Temp = 0x00;
 372   1              TCF  = step;
 373   1              do
 374   1              {
 375   2                      Temp = BCD2HEX(*ptr)+TCF;
 376   2                      TCF  = Temp/100;                
 377   2                      Temp = Temp%100;
 378   2                  *ptr = (Temp/10)<<4;        
 379   2                      *ptr = *ptr+Temp%10;            
 380   2                      ptr++;
 381   2                      i++;
 382   2              }while(i<len);
 383   1      
 384   1              return TCF;
 385   1      }


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