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

📄 wxcs_31.asm

📁 校准多功能电能表的基本误差和规约规定的其他多功能试验项目。
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        MOV     ZZpw,A
        inc     r0
        MOV     A,@r0
        XRL     A,#'.'
        JZ      TESTC0
        MOV     A,@R0
        ANL     A,#0FH
        MOV     ZZPW+1,A
        MOV     ZZPW+2,#0FH
        ljmp    TESTC1
TESTC0: inc     r0
        mov     a,@r0
        ANL     A,#0FH
        SETB    ACC.7
        mov     ZZpw+1,a
        INC     R0
        MOV     A,@R0
        CJNE    A,#'1',$+3
        JC      TESTC2
        CJNE    A,#'@',$+3
        JNC     TESTC2
        ANL     A,#0FH
        MOV     ZZPW+2,A
        ljmp    TESTC1
TESTC2: MOV     ZZPW+2,#0FH
TESTC1: SETB    BSGB
        MOV     MODE,#5
        ljmp    JOB6
;-------------------------------
;有功脉冲,无功脉冲切换
Wrmod:  mov     r0,#rcvbuf+5
        mov     a,@r0
        anl     a,#0fh
        jnz     wrmod1
;        SETB    btygwg   ;p0.0
        clr     btk0
        clr     btk1
        sjmp    wrmode         ;选择正向有功
wrmod1: cjne    a,#01h,wrmod2
        clr     btk1
        setb    btk0
;        CLR     btygwg
        sjmp    wrmode         ;选择正向无功
wrmod2: cjne    a,#02h,wrmod3
        setb    btk1
        clr     btk0
;        SETB    btygwg
        sjmp    wrmode         ;选择反向有功
wrmod3: setb    btk1
        setb    btk0           ;选择反向无功
;        CLR     btygwg
wrmode: ljmp    job6
;--------------------------
BPEN:	MOV	r0,#rcvbuf+5		;L 喇叭开关
        mov     a,@r0
	rrc	a
	mov	bbpen,c
	ljmp	job6
;-------------------------------
;选择脉冲输入方式 电子脉冲还是光电头脉冲
Pusch:  mov     r0,#rcvbuf+5
        mov     a,@r0
        anl     a,#0fh
        jz      pusc0
        CJNE    A,#01,PUCS11
        SETB    btk2        ;P0.1              ;GP:001   电子脉冲
        CLR     btk3        ;P0.3
        SJMP    PUCS12
PUCS11: CJNE    A,#02,PUSC1
        SETB    btk3        ;P0.3               ;GP:002  标准表高/低频脉冲
        CLR     btk2        ;P0.1
PUCS12:
        JB      BTPUSCH,PUSC1
        SETB    BTPUSCH
PUSC3:  mov     a,mode
        xrl     a,#08h
        jnz     pusc2
PUSC1:
        ljmp    job6
pusc0:  setb    btk2
        setb    btk3
        JNB     BTPUSCH,PUSC1
        CLR     BTPUSCH
        ljmp    PUSC3
PUSC2:  mov     th2,DIVR+1
        MOV     TL2,DIVR
        JNB     GBBZ,PUSC1         ;不挂表
        SETB    BSGB
        ljmp    job6
;--------------------------
;进入电能试验
Cntpw:  JNB     GBBZ,Cntpw1
        MOV     R0,#RCVBUF+5
        MOV     A,@R0
        ANL     A,#0FH
        JNZ     STPCNT
CNTPW2: clr     AS108                  ;停止计电能
        CLR     BT108
        CLR     BTJDQ                  ;断开108和继电器
        MOV     TMC,#00H
        MOV     TMD,#03H
        MOV     TME,#10H
cntpw1: ljmp    job6
STPCNT: CJNE    A,#01H,CNTPW3
        MOV     MODE,#07H              ;进入电能实验
        LCALL   JDQXH                   ;AS108断开  JDQ吸合
        MOV     ADXS,#0FH             ;进入电能试验 显示为 表号  电能
        MOV     ADXS1,#80h
        MOV     ADXS2,#00h
        MOV     ADXS3,#00h
        MOV     ADXS4,#00h
        MOV     ADXS5,#00h
        LCALL   DIS
        MOV     TH2,#0FFH
        MOV     TL2,#0FFH
        mov     pwcnt1,#00h
        mov     pwcnt2,#00h
        mov     pwcnt3,#00h
        mov     Pwcnt4,#00h
;-------回送数据  CP0.0(0dh)
        mov     r0,#sndbuf+3    ;#sndbuf+1             ;CPXXX.XXX(0DH) 送电能
	    mov     @r0,#'P'
        INC     R0
        MOV     @R0,#'0'
        INC     R0
        mov     @r0,#'.'
        inc     r0
        mov     @r0,#'0'
        inc     r0
        MOV     @R0,#0DH
        SETB    BREF
;---------2007.9.7 add start
        mov     r0,#sndbuf+3
        mov     a,@r0
        mov     SendData_tmp,a
;--------2007.9.7 add  end         
        LJMP    JOB6
cntpw3: 
        cjne    a,#02h,cntpw4
        ljmp    cntpw2

cntpw4: 
        lcall   jdqxh
        ljmp    job6

;-------进入脉冲走字试验
;Gl:000 停止  Gl:001开始  Gl:002(或GI:000) 退出
Puls_ZZ_Tst:
        mov     a,mode
        cjne    a,#0ch,Puls_z1
        ljmp    job6                   ;原先在定脉冲走字状态退出

Puls_z1:
        JNB     GBBZ,pluad1
        MOV     R0,#RCVBUF+5
        MOV     A,@R0
        ANL     A,#0FH
        JNZ     pluad2
	    clr     AS108                  ;停止计电能
        CLR     BT108
        CLR     BTJDQ                  ;断开108和继电器
        MOV     TMC,#00H
        MOV     TMD,#03H
        MOV     TME,#10H

pluad1: 
        ljmp    job6
pluad2: 
        CJNE    A,#01H,pluad1
        MOV     MODE,#0cH              ;进入累积脉冲实验
        LCALL   JDQXH                  ;AS108断开  JDQ吸合
        MOV     TH2,#0FFH
        MOV     TL2,#0FFH
        SETB    BREF
        mov	    adxs,#0fh              ;未预置走字脉冲
        mov	    adxs1,#0fh             ;清显示
	    mov	    adxs2,#0fh
	    mov	    adxs3,#0fh
	    mov	    adxs4,#0fh
	    mov	    adxs5,#00h
        jnb     btMcYz,pluad3
        clr     btMcYz
        ljmp    modec1                 ;显示走字脉冲数
pluad3:	
        lcall   dis
        mov     pwcnt1,#00h            ;清除被校表脉冲计数器
        mov     pwcnt2,#00h
        mov     pwcnt3,#00h
        mov     Pwcnt4,#00h
;---------回送数据  CB0(0DH)
        MOV     R0,#sndbuf+3    ;#SNDBUF+1
        MOV     @R0,#'B'
        INC     R0
        MOV     @R0,#'0'
        INC     R0
        MOV     @R0,#0DH
;---------2007.9.7 add start
        mov     r0,#sndbuf+3
        mov     a,@r0
        mov     SendData_tmp,a
;--------2007.9.7 add  end         
        LJMP    JOB6
;--------------------------
;脉冲数与盘转数比较
Puscmp: 
        JNB     GBBZ,Puscmp1
        mov     mode,#08h
        mov     th2,#00h
        mov     tl2,#00h
        SETB    BSGB                    ;第一次进入该试验设置标志
        LCALL   JDQXH

Puscmp1:
        ljmp    job6
;--------------------------
MBTH:   
        MOV	    R0,#rcvbuf+5
	    MOV	    R1,#imbuf0
	    MOV	    R3,#05
	    MOV	    R2,#0

GZZ3:	
        MOV	    A,@R0
	    CJNE	A,#13,GZZ1
	    ljmp	GZZ4
GZZ1:	
        ANL	    A,#0FH
        MOV	    B,A
        INC	    R0
        MOV	    A,@R0
        CJNE	A,#13,GZZ2
	    MOV	    @R1,B
        INC	    R2
	    ljmp	GZZ4
GZZ2:	
        SWAP	A
	    ANL	    A,#0F0H
	    ORL	    A,B
	    MOV	    @R1,A
	    INC	    R0
	    INC	    R1
	    INC     R2
	    DJNZ	R3,GZZ3
GZZ4:	RET
;-----------------------------
GETBZZ:	lcall   MBTH
;        mov     a,r2
;        mov     r3,a
;        mov     bzcsN,a
;        mov     r0,#imbuf0
;        mov     r1,#imbzc1
;gzz33:  mov     a,@r0
 ;       mov     @r1,a
;        inc     r0
;        inc     r1
;        djnz    r3,gzz33         ;保存标准值  fh*n/c
        MOV	R0,#imbuf0
        MOV     IMBUF8,#40H
        MOV     IMBUF9,#42H
        MOV     IMBUFA,#0FH
        MOV     R1,#IMBUF8         ;*1000000
        MOV     R3,#03H
        LCALL    MMUL
        MOV	A,R2
	CLR	C
	SUBB	A,#8
	JNC	GZZ6
	MOV	LBCS,R2
	MOV	R1,#BCS
GZZ5:	MOV	A,@R0
	MOV	@R1,A
	INC	R0
	INC	R1
	DJNZ	R2,GZZ5
GZZ6:	ljmp	JOB6
;---------------------------
;接收校验圈数
GETN:	MOV	r0,#rcvbuf+6
        mov     a,@r0
	CJNE	A,#13,GN1
        mov     r0,#rcvbuf+5
	MOV	A,@r0
	ANL	A,#0FH
	MOV	BNSL,A
        JNZ     GN0
        MOV     BNSL,#1
GN0:	ljmp	GN3
GN1:    mov     r0,#rcvbuf+6
        MOV	A,@r0
	ANL	A,#0FH
	MOV	B,#10
	MUL	AB
	MOV	B,A
        mov     r0,#rcvbuf+5
	MOV	A,@r0
	ANL	A,#0FH
	ADD	A,B
	MOV	BNSL,A
        JNZ     GN4
        MOV     BNSL,#01H
GN4:	JB	GBBZ,GN3
GN2:	ljmp	JOB6
;-----------------------
GETDG:	JNB	GBBZ,GN2
	SETB	GRES
	MOV	TMG,#0FFH
	MOV	TMGH,#80H
	SETB	BTMG
GETRES:	JNB	GBBZ,GN2
	MOV	A,MODE
	JNZ	GRE1
GN3:	Lcall	GDCLS		;误差清零
	ljmp	JOB6
GRE1:	CJNE	A,#3,getres2
	SETB	BSGB
	MOV	MODE,#3
        LJMP    JOB6
getres2:
        cjne    a,#09,gn2
        mov     imcscnt,#00h        ;常数测试记数值清零
        mov     imcscnt1,#00h
        mov     adxs,#0fh
        mov     adxs1,#0fh
        mov     adxs2,#0fh
        mov     adxs3,#0fh
        mov     adxs4,#0fh
        mov     adxs5,#0
        lcall   dis
        ljmp    job6
;-------------------------------
;接收脉冲和盘转比值
GETBZ:  MOV	r0,#rcvbuf+6
        mov     a,@r0
	CJNE	A,#13,GTBZ1
        mov     r0,#rcvbuf+5
	MOV	A,@r0
	ANL	A,#0FH
	MOV	PZBZ,A
	Ljmp	GTBZ2
GTBZ1:  mov     r0,#rcvbuf+6
        MOV	A,@r0
	ANL	A,#0FH
	MOV	B,#10
	MUL	AB
	MOV	B,A
        mov     r0,#rcvbuf+5
	MOV	A,@r0
	ANL	A,#0FH
	ADD	A,B
	MOV	PZBZ,A
GTBZ2:  MOV     A,PZBZ
        JNZ     GTBZ3
        MOV     PZBZ,#01
GTBZ3:  MOV     A,MODE
        XRL     A,#08H
        JNZ     GTBZ4
        JNB     GBBZ,GTBZ4
        SETB    BSGB
GTBZ4:  ljmp	JOB6
;-------------------------
;U 接收脉冲和盘转设定比较圈数
GETBN:  MOV	r0,#rcvbuf+6
        mov     a,@r0
	CJNE	A,#13,GBN1
        mov     r0,#rcvbuf+5
	MOV	A,@r0
	ANL	A,#0FH
	MOV	CMPCIRN,A
        JNZ     GBN2
        MOV     CMPCIRN,#01
GBN2:	ljmp	GN3
GBN1:   mov     r0,#rcvbuf+6
        MOV	A,@r0
	ANL	A,#0FH
	MOV	B,#10
	MUL	AB
	MOV	B,A
        mov     r0,#rcvbuf+5
	MOV	A,@r0
	ANL	A,#0FH
	ADD	A,B
	MOV	CMPCIRN,A
        JNZ     GBN3
        MOV     CMPCIRN,#01
GBN3:	JB	GBBZ,GBN2
	ljmp	JOB6
;-------------------------
;V 接收被校表常数
GETCST: lcall   MBTH
        mov     r0,#imbuf0
	MOV	A,R2
	CLR	C
	SUBB	A,#5
	JNC	Getcs1
        mov     const1,#00h
        mov     const2,#00h
        mov     const3,#00h
        mov     const4,#00h
	MOV	R1,#const1
Getcs0:	MOV	A,@R0
	MOV	@R1,A
	INC	R0
	INC	R1
        DJNZ	R2,getcs0
Getcs1: ljmp	job6
;---------------------------------
;分频系数
GETDIVR:
        MOV     IMBUF0,#00H
        MOV     IMBUF1,#00H
        MOV     IMBUF2,#00H
        LCALL   MBTH
        mov     r0,#imbuf0
        CJNE    R2,#3,$+3          ;two bytes
	      JC	    GETDIV0
        MOV     A,IMBUF2
        JZ      GETDIV0
        MOV     DIVR,#00H          ;大于2 BYTES 置分频最大值
        MOV     DIVR+1,#00H
        LJMP    GETDIV2
GETDIV0:MOV     A,IMBUF0
        ORL     A,IMBUF1
        JNZ     GETDIV1
        MOV     DIVR,#0FFH         ;置分频最小值
        MOV     DIVR+1,#0FFH
        LJMP    GETDIV2
GETDIV1:MOV     A,IMBUF0
        CPL     A
        SETB    C
        ADDC    A,#00H
        MOV     DIVR,A
        MOV     A,IMBUF1
        CPL     A
        ADDC    A,#00H
        MOV     DIVR+1,A
GETDIV2:MOV     A,MODE
        XRL     A,#08H
        JZ      GETDIV3
        MOV     TH2,DIVR+1         ;不为比较盘转误差
        MOV     TL2,DIVR
GETDIV3:ljmp	job6
;---------------------------------
;清除被校表电能
Clear:  JNB     GBBZ,CLR1
        mov     pwcnt1,#00h
        mov     pwcnt2,#00h
        mov     pwcnt3,#00h
        mov     Pwcnt4,#00h
        MOV     A,MODE
        CJNE    A,#07H,CLR2
        mov     adxs,#0FH
        mov     adxs1,#80h
        mov     adxs2,#00h
        mov     adxs3,#00h
        mov     adxs4,#00h
        mov     adxs5,#00h
        lcall   dis
        sjmp    clr1
clr2:   cjne    a,#0ch,clr1

⌨️ 快捷键说明

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