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

📄 pl_dn_c.c

📁 基于PL3000芯片的单相复费率多功能电表的应用程序。
💻 C
字号:
#include "PL3200.h"
#include<absacc.h>
#include<math.h>
#include<FD130.h>
#define xl_j DBYTE[xl_j0]
#define xl_j_s DBYTE[xl_j_s1]
#define wr_buf0 DBYTE[wr_buf01]
#define wr_buf1 DBYTE[wr_buf11]
#define wr_buf2 DBYTE[wr_buf21]
#define wr_buf3 DBYTE[wr_buf31]
#define wr_buf4 DBYTE[wr_buf41]
#define wr_buf5 DBYTE[wr_buf51]
#define wr_buf6 DBYTE[wr_buf61]
#define xl_pls0_y DBYTE[xl_pls0_y0]
#define xl_pls1_y DBYTE[xl_pls0_y1]
#define xl_pls2_y DBYTE[xl_pls0_y2]
#define fl_num DBYTE[xl_pls0_y3]

#define v_sam0  DBYTE[0X6E]   // 电流计量器采样值
#define v_sam1  DBYTE[0X6F]
#define v_sam2  DBYTE[0X70]
#define v_sam3  DBYTE[0X71]
#define i_sam0  DBYTE[0X72]   // 电压计量器采样值
#define i_sam1  DBYTE[0X73]
#define i_sam2  DBYTE[0X74]
#define i_sam3  DBYTE[0X75]

#define z_cir0  DBYTE[0X76]   // 采样周波
#define z_cir1  DBYTE[0X77]

#define ku_0    DBYTE[0X78]
#define ku_1    DBYTE[0X79]
#define ku_2    DBYTE[0X7A]

#define ki_0    DBYTE[0X7C]
#define ki_1    DBYTE[0X7D]
#define ki_2    DBYTE[0X7E]
uchar xdata t,r,x;
uint  xdata iev_y,xl_y,xl_z;//,pp;
ulong xdata pp;
ulong xdata v,ku,point;
//extern void gl_rd(void);
extern void v_i_gl_rd(void);
void did(void){v/=c_e0;}
void bdd(void)
{r=xl_e;did();t=xl_e;did();t<<=xl_c4;} //数据传送子函数
void cdd(void){ku=ku*256;}
void gjs(void)
{v=(ulong)xl_y*b_r6*b_txx/iev_y;}      //数据运算子函数
void sqrt_x(void) {v=sqrt(v);}
void gcd(void)
{t=xl_e;did();if(t>=xl_c5)v+=xl_c1;}   //数据判断子函数
void viv(void)
{v=(v*ku)/10000; }    // 计算当前电压有效值 
void v_i_gl_rd(void)  
{  
      ku=v_sam3; cdd();  
      ku+=v_sam2;cdd();    // 读实时电压高2字节
      ku+=v_sam1;cdd();    // 读实时电压高1字节
      v=ku+v_sam0;         // 读实时电压低字节      
      ku= z_cir1;cdd();
      point = ku+z_cir0;
      sqrt_x();            // 电压值开方      
      ku=ku_2;cdd();ku+=ku_1;cdd();ku+=ku_0; // 电压修正系数
      viv();  x=v%100;
      if(x>50) x=1;
        else   x=0;
      v=v/100;   v+=x;
      if(v>300) v=0;
      bdd(); v_sam0=r+t; bdd(); v_sam1=r+t;
      ku=i_sam3; cdd();    // 读实时电流高3字节
      ku+=i_sam2;cdd();    // 读实时电流高2字节
      ku+=i_sam1;cdd();    // 读实时电流高1字节
      v=ku+i_sam0;         // 读实时电流低字节
      sqrt_x();            // 电流值开方
      ku=ki_2;cdd();ku+=ki_1;cdd();ku+=ki_0; // 电流修正系数
      viv();v=v-3;if(v>10000) v=0; bdd(); i_sam0=r+t;bdd();i_sam1=r+t;
}
//void gl_rd(void)
//{ uchar xdata *m;
//      fl_num=xl_0_1;//数据传送
//      if(fl_num!=xl_pls2_y){xl_pls0_y=xl_pls1_y=xl_c0;xl_pls2_y=xl_c0+xl_x;}//判断数据累加结果是否正确
//      iev_y=sev_mr1;xl_z=xl_y=(uint)xl_pls1_y*r_zs+xl_pls0_y;
//      xl_y*=100;gjs();gcd();xl_y=xl_z;//数据转移与运算      
//      bdd();wr_buf4=xl_rt;bdd();wr_buf5=xl_rt;bdd();wr_buf6=xl_rt;//数据转移
//      if(xl_j_s!=r_max)xl_j_s=xl_j+xl_c1;m=c_ex;//判断数据转移与运算是否正确
//      m+=xl_j*xl_c2;*m=xl_pls0_y;m++;*m=xl_pls1_y;m=c_ex;pp=xl_c0;//继续数据的转移
//      for(x=xl_c0;x<xl_j_s;x++)//循环进行数据的转移功能,转移的数据存入预定的位置
//        {t=*m++;r=*m++;xl_y=(uint)r*r_zs+t;pp+=xl_y;}
//      pp*=100;pp/=xl_j_s;xl_y=pp;if(xl_j_s!=r_max)xl_j_s=xl_c0;xl_j++;//数据的计算与判断
//      if(xl_j>=r_max){xl_j=xl_c0;xl_j_s=r_max;}gjs();//运行数据的判断与/过程运算
//      gcd();bdd();wr_buf0=xl_rt;bdd();wr_buf1=xl_rt;bdd();wr_buf2=xl_rt;//数据转移
//      xl_pls0_y=xl_c0; xl_pls1_y=xl_c0; xl_pls2_y=xl_c0+xl_x;//计算数据设置
//}

⌨️ 快捷键说明

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