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

📄 7705.lst

📁 电磁流量计的源程序。将流体流量用电磁转换方式变换成弱电信号
💻 LST
📖 第 1 页 / 共 2 页
字号:
 346   2      	  }
 347   1            else if(value >= 0)
 348   1            {
 349   2               value = 32768 - value;
 350   2       //        Dec_consult(value);
 351   2            #ifndef DC_SINGAL 
              		 if(CONTROL == 1)
              		 {
                          Dec_consult(value);
                       }
              		 else
              		  {
              		   	  Add_consult(value);
              		  }
                    #else
 361   2                    Dec_consult(value);
 362   2            #endif
 363   2      	   }
C51 COMPILER V6.02  7705                                                                   09/10/2005 17:11:39 PAGE 7   

 364   1            
 365   1            
 366   1               
 367   1         
 368   1      #else
                if (value < 0)                 
                   {
                       value = 32768+value;
                    #ifndef DC_SINGAL 
              		 if(CONTROL == 1)
              		  {
              		  	  Dec_consult(value);
              	//	      liuxiang_F = REVERSE ;
              		  }
              		 else
              		  {
              		  	   Add_consult(value);
              //		       liuxiang_F = POSITIVE; 
              	      }
                     #else
                           Dec_consult(value);
                     #endif  
              	   }
                else if(value >= 0)
                     {
                       value = 32768 - value;
                       #ifndef DC_SINGAL 
              		    if(CONTROL == 1)
                          {   
                             Add_consult(value);
                 //            liuxiang_F = POSITIVE;
                          }
              		    else
              		    {
              		  	   Dec_consult(value);
              //		       liuxiang_F = REVERSE ;
                          }
                       #else
                          Add_consult(value);
                       #endif
                            
                      }
              #endif
 407   1         
 408   1      return;
 409   1      } 
 410          /************************************/
 411          /************************************/
 412          void Add_consult( int value)
 413          {
 414   1      	
 415   1        if(consult_coun == 1)
 416   1              consult_1 += value;
 417   1        else if(consult_coun == 2)
 418   1              consult_2 += value;
 419   1        else if(consult_coun == 3)
 420   1              consult_3 += value;
 421   1              
 422   1         return;
 423   1       }   
 424          /*********************************/
 425          /*********************************/
C51 COMPILER V6.02  7705                                                                   09/10/2005 17:11:39 PAGE 8   

 426           void Dec_consult( int value)
 427           {
 428   1         if(consult_coun == 1)
 429   1              consult_1 -= value;
 430   1         else if(consult_coun == 2)
 431   1              consult_2 -= value;
 432   1         else if(consult_coun == 3)
 433   1              consult_3 -= value;
 434   1         return;
 435   1       }  
 436           
 437          //************** AD self autojust**************
 438          
 439          void Self_adjust(void)
 440          {
 441   1       
 442   1         Write_reg(SET_REG|WRITE|CHANEL_0);  //0X10
 443   1         Write_reg(ADC_SELF|adc_gain|ADC_BIPOLAR);
 444   1         self_adj_F = 1 ;
 445   1      //   Delay_ms(DELAY200MS);
 446   1         return;
 447   1           
 448   1      }
 449          
 450          //****************start ad turn****************
 451          /*
 452          void Ad_start(void)
 453          { 
 454           // Return_to_init_status();
 455            Write_reg(0x10);  //active chanel 1, next operation is write setup register
 456            Write_reg(ADC_NORMAL|adc_gain|ADC_BIPOLAR);  
 457           // Write_reg(0x20);
 458            return;
 459          
 460          } */
 461          
 462          //*****************read ad result***************
 463          unsigned int Read_con_data(void)
 464          {
 465   1        unsigned int word;
 466   1        while(Check_drdy());
 467   1       // if(Check_drdy())               //wait DRDY changed low
 468   1       //   return(last_ad_value);
 469   1       // Write_reg(0x38); //set the next operation for 16 bit read from the data register 
 470   1         Write_reg(0x38);
 471   1         word = Read_word();
 472   1        while(!Check_drdy()); 
 473   1      //  last_ad_value = word ;             
 474   1        return(word);
 475   1      }
 476          
 477          //*******************read DRDY**************
 478           unsigned char Check_drdy(void)
 479          {
 480   1         unsigned char status;
 481   1        Write_reg(0x08); //next read opration register is com
 482   1         status = Read_reg_byte();
 483   1         return(status&0x80) ; 
 484   1      }
 485          
 486          
 487          //************************************
C51 COMPILER V6.02  7705                                                                   09/10/2005 17:11:39 PAGE 9   

 488          //      write a byte to register
 489          //************************************
 490          void Write_reg(unsigned char reg_data)
 491          {
 492   1         unsigned char i;
 493   1         unsigned char tr_data;
 494   1         tr_data = reg_data;
 495   1       
 496   1            
 497   1           
 498   1            for(i=1;i<=8;++i)
 499   1             {
 500   2                                  //7705-CLK low level
 501   2               
 502   2               AD_IN = tr_data & 0x80;
 503   2               tr_data <<= 1;
 504   2      
 505   2               AD_CLK = 0;            
 506   2                      
 507   2               AD_CLK = 1 ;
 508   2        
 509   2               
 510   2             }
 511   1             AD_IN = 1 ;
 512   1      	   AD_CLK = 1;
 513   1      	   return ;
 514   1         
 515   1      }               
 516          
 517          //************************************
 518          //      read a word from data register
 519          //************************************
 520          
 521          unsigned  int Read_word(void)
 522          {
 523   1         bit flag;
 524   1         unsigned int ad_byte=0x0000;
 525   1          unsigned char i ;
 526   1          
 527   1           AD_CLK = 1;
 528   1           AD_OUT = 1;
 529   1           for(i=1;i<=16;++i)
 530   1       
 531   1             { 
 532   2      	     AD_CLK = 1 ;
 533   2      	    
 534   2               AD_CLK=0;  
 535   2               AD_OUT = 1;
 536   2               flag= AD_OUT ;
 537   2                
 538   2               if(!flag)
 539   2                  ad_byte |= 0x01;
 540   2               if(i<16)
 541   2                  ad_byte <<= 1 ;
 542   2             
 543   2              
 544   2        }
 545   1           
 546   1            
 547   1            AD_IN = 1 ;
 548   1            AD_CLK = 1;
 549   1           
C51 COMPILER V6.02  7705                                                                   09/10/2005 17:11:39 PAGE 10  

 550   1           return(ad_byte);            //because tonguo fanxiang
 551   1      }
 552          
 553          //***************************************************
 554          //      read a byte from   register
 555          //***************************************************
 556          
 557           unsigned char Read_reg_byte(void)
 558          {
 559   1           bit flag;
 560   1          unsigned char i;
 561   1          unsigned char com_data ;
 562   1           com_data = 0x00;
 563   1           AD_CLK=1; 
 564   1           AD_OUT = 1 ;
 565   1          
 566   1           for(i=1;i<=8;++i)
 567   1             {
 568   2               AD_CLK=1;                  
 569   2             
 570   2               AD_CLK=0;
 571   2               AD_OUT=1;
 572   2               flag = AD_OUT;
 573   2               if(!flag)
 574   2                    com_data |= 0x01;
 575   2               if(i<8)
 576   2                  com_data <<= 1;
 577   2               
 578   2              }
 579   1          
 580   1            
 581   1            AD_IN = 1;
 582   1            AD_CLK = 1 ;
 583   1           return(com_data);
 584   1      }
 585          
 586          /***********************************/
 587          /***********************************/
 588          
 589          void Precess_con_data(void)
 590          {
 591   1          unsigned int value ;
 592   1         
 593   1        if(self_adj_F != 1)
 594   1          {
 595   2        
 596   2             value = Read_con_data();
 597   2            Poisitive(value); 
 598   2                  
 599   2          }
 600   1        return;
 601   1      }  
 602          
 603          
 604          /**********************************/
 605          /**********************************/
 606          void Delay(unsigned int timer)
 607          {
 608   1        unsigned char i,j;
 609   1         while(timer)
 610   1         {
 611   2          for(i=0;i<14;i++)   ///delay 10ms
C51 COMPILER V6.02  7705                                                                   09/10/2005 17:11:39 PAGE 11  

 612   2             for(j=0;j<217;j++)
 613   2                ;
 614   2          timer--;
 615   2         }
 616   1       return;
 617   1      }
 618           /*************************************/
 619           /*************************************/  
 620          void Return_to_init_status(void)
 621          {
 622   1         unsigned char i;
 623   1       
 624   1         AD_CLK = 1 ;
 625   1          
 626   1            for(i=1;i<=36;++i)
 627   1             {
 628   2               AD_CLK=0;                   //7705-CLK low level
 629   2                 
 630   2               AD_CLK=1;                   //7705-CLK high level
 631   2               
 632   2             }
 633   1      	   
 634   1      	   AD_IN = 1;
 635   1      	   AD_CLK  = 1 ;
 636   1      	   return ;
 637   1         
 638   1      }      
 639          
 640          /*******************************/
 641          /*******************************/
 642          void Delay_1us(void)  
 643          {
 644   1      	unsigned int i ;
 645   1      	for(i=0;i<300;i++)
 646   1      	;
 647   1      	return;
 648   1      }        
 649          
 650          
 651          
 652          /**********************************/
 653          /**********************************/
 654          unsigned char Two_square(void)
 655          {
 656   1      	switch(filter_data)
 657   1      	{
 658   2      		case 0:
 659   2      		      return(1);
 660   2      		      
 661   2      		case 1:
 662   2      		      return(2);
 663   2      		     
 664   2      		case 2:
 665   2      		      return(4);
 666   2      		      
 667   2      		case 3:
 668   2      		      return(8);
 669   2      		      
 670   2      		case 4:
 671   2      		      return(16);
 672   2      		      
 673   2      		case 5:
C51 COMPILER V6.02  7705                                                                   09/10/2005 17:11:39 PAGE 12  

 674   2      		      return(32);
 675   2      		      
 676   2      		case 6:
 677   2      		      return(64);
 678   2      		      
 679   2      		default:
 680   2      		      return(1);
 681   2      	}    
 682   1      }
 683          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1187    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      12
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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