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

📄 pulse_prc.lst

📁 电磁流量计的源程序。将流体流量用电磁转换方式变换成弱电信号
💻 LST
字号:
C51 COMPILER V6.02  PULSE_PRC                                                              09/10/2005 17:11:39 PAGE 1   


C51 COMPILER V6.02, COMPILATION OF MODULE PULSE_PRC
OBJECT MODULE PLACED IN D:\2005_09\Pulse_prc.OBJ
COMPILER INVOKED BY: D:\C51\BIN\C51.EXE D:\2005_09\Pulse_prc.c SMALL DB OE CO OT(SIZE) 

stmt level    source

   1          
   2          /******************************/
   3          /***    pulse danlan precess **/
   4          /******************************/
   5          
   6          #include "MATH.H"
   7          #include "reg52.h"
   8          #include "typedef.h"
   9          #include "function.h"
  10          #include "define.h"
  11          #include "varible.h"
  12          
  13          sbit DA_CS = P2^0  ;
  14          sbit DA_CLK = P2^1  ;
  15          sbit DA_DATA = P2^2  ;
  16          sbit PULSE_OUT = P2^3 ;       
  17          
  18          void Pulse_prc(void);
  19          void Pulse_init(void);
  20          
  21          /***********************************/
  22          /***********************************/
  23          
  24          void Pulse_init(void)
  25          {
  26   1      	PULSE_OUT = 1 ;              // no output
  27   1      	send_pulse_number = 0 ;
  28   1         pulse_send_F = 0;
  29   1         pulse_out_en_F = 0;
  30   1      	return;
  31   1      }
  32          
  33          
  34          /****************************/
  35          /****************************/ 
  36          
  37          void Pulse_prc(void)
  38          {  
  39   1          
  40   1          if(net_cha <= 0.0)
  41   1          {
  42   2          	pulse_out_en_F = 0;
  43   2              return ;
  44   2          }
  45   1          	
  46   1         	else
  47   1          	{
  48   2         		    pulse_out_en_F = 0;
  49   2                  send_pulse_number = (unsigned int)(net_cha*1000.0/pulse_danlan);
  50   2                  
  51   2                  if((send_pulse_number >= 1)&&(send_pulse_number < MAX_SEND_NUMBER))   
  52   2                 {
  53   3             //    	  net_cha *= 100000 ;
  54   3               
  55   3                    net_cha = net_cha - (send_pulse_number * pulse_danlan/1000.0 );   //get remain net liuliang
C51 COMPILER V6.02  PULSE_PRC                                                              09/10/2005 17:11:39 PAGE 2   

  56   3                    pulse_out_en_F = 1 ;
  57   3               //    TF1 = 0 ;
  58   3                //   TH1 = 0xfd ;
  59   3      	      //   TL1 = 0xe1; 
  60   3               //    TR1 = 1 ;            //start counter
  61   3               //    ET1 = 1 ;            //enable interrupt
  62   3                 } 
  63   2            /*     else
  64   2                 {
  65   2                 	//net_cha = 0.0 ;
  66   2                 	net_cha = net_cha - (float)send_pulse_number * pulse_danlan/1000.0 ;
  67   2             //    	send_pulse_number = 0;
  68   2                }  */
  69   2              }
  70   1          
  71   1        
  72   1      }  
  73          
  74          
  75          
  76          /*********************************/
  77          /*********************************/
  78          
  79          bit next_F ;
  80          /**********************************/
  81          /**** timer1 interrupt         ****/
  82          /***  1ms ***********************/
  83          
  84          void Pulse_out(void) interrupt 3
  85          {
  86   1      	EA = 0;
  87   1      	TF1 = 0 ;                              //clear interrupt flag 
  88   1      	TH1 = 0xf8;
  89   1      	TL1 = 0xcc;   
  90   1       //  TH1 = 0xf0 ;                           //test
  91   1       //  TL1 = 0xf0 ;                           //test
  92   1      	/********************************/
  93   1      	/****** da convert data send ****/
  94   1      	if(da_send_F == 1)                     //need send da convert data
  95   1      	{
  96   2      		if(send_bit_count < 16)
  97   2      		{
  98   3      			if(DA_CLK == 0)
  99   3      			{
 100   4      				if(next_F == 0)
 101   4      				{
 102   5      					DA_DATA = (bit)(da_send_data&0x8000) ;
 103   5      				    da_send_data <<= 1 ;
 104   5      				    
 105   5      				    next_F = 1 ;
 106   5      			    }
 107   4      			   else
 108   4      			      {
 109   5      				     send_bit_count++;
 110   5      			       	 DA_CLK = 1 ;
 111   5      			       	 
 112   5      			       	 next_F = 0  ;
 113   5      			       }
 114   4      			}
 115   3      		    else
 116   3      		     {
 117   4      		     	DA_CLK = 0 ;
C51 COMPILER V6.02  PULSE_PRC                                                              09/10/2005 17:11:39 PAGE 3   

 118   4      		     	
 119   4      		     }
 120   3      		}
 121   2      	    else if(send_bit_count == 16)
 122   2      	    {
 123   3      		     da_send_F = 0 ;
 124   3      		     send_bit_count = 0 ;
 125   3      		     next_F = 0 ;
 126   3      		     DA_CLK = 0 ;
 127   3      		     DA_CS = 1 ;
 128   3      	    }
 129   2          }
 130   1      
 131   1      /**   PULSE PRECESS **/
 132   1       if(pulse_out_en_F == 1)
 133   1       {
 134   2       	  if(send_pulse_number >= 1)             //continue pulse out
 135   2            {
 136   3          	 if(PULSE_OUT == 0)                 //if out level is high
 137   3          	    PULSE_OUT = 1;                  //out low level
 138   3          	 else if(PULSE_OUT == 1)            //out level is low
 139   3          	 {
 140   4          	   	PULSE_OUT = 0 ;                //out level changed high
 141   4          	   	send_pulse_number--;
 142   4          	  }
 143   3            }
 144   2            else if(send_pulse_number == 0)                               //pulse out is over
 145   2            {
 146   3         
 147   3          	PULSE_OUT = 1 ;                    //out low level
 148   3              pulse_out_en_F = 0 ;
 149   3          
 150   3          //	TR1 = 0 ;    
 151   3          //	ET1 = 0 ;                       
 152   3            }
 153   2        }
 154   1          EA = 1 ;
 155   1      }
 156              	


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    324    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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