wxcs_31.asm

来自「校准多功能电能表的基本误差和规约规定的其他多功能试验项目。」· 汇编 代码 · 共 2,295 行 · 第 1/5 页

ASM
2,295
字号
        MOV     TME,#10H             ;先断继电器后断AS108
        MOV	ADXS3,#10
	MOV	ADXS4,#10
	MOV	ADXS5,#0FH
	mov	adxs2,#0FH
	lcall	DIS
        mov     r0,#sndbuf+3    ;#sndbuf+1
	MOV	@r0,#'S'
        inc     r0
	MOV	@r0,#'1'
        inc     r0
	MOV	@r0,#0dh
	SETB	SSHB
	SETB	BREF
;---------2007.9.7 add start
        mov     r0,#sndbuf+3
        mov     a,@r0
        mov     SendData_tmp,a
;--------2007.9.7 add  end         
SGB4:	Ljmp	JOB
;----------------------------
MOD3:	JNB	BSGB,GDZT1	;设置监视光电头状态
	CLR	BSGB
	Lcall	CLS
        LCALL   JDQXH
        mov     adxs,adbhh
        mov     adxs1,adbhl
	MOV	ADXS5,#0
	lcall	DIS
        mov     r0,#sndbuf+3    ;#sndbuf+1
	MOV	@r0,#'C'       ;CCX(0DH)    X:圈数
        inc     r0
	MOV	@r0,#'0'
        inc     r0
	MOV	@r0,#0dh
	CLR	BGDT
	SETB	BREF
;---------2007.9.7 add start
        mov     r0,#sndbuf+3
        mov     a,@r0
        mov     SendData_tmp,a
;--------2007.9.7 add  end         
GDZT1:	JNB	BGDT,GDZT2
	CLR	BGDT
	INC	ADXS5
        mov     r0,#sndbuf+3    ;#sndbuf+1
	MOV	@r0,#'C'       ;CCX(0DH)    X:圈数
        mov     r0,#sndbuf+4    ;#sndbuf+2
	INC	@r0
	MOV	A,ADXS5
	CJNE	A,#10,GDZT3
	MOV	ADXS5,#0
	MOV	@r0,#'0'
GDZT3:	lcall	DIS
	SETB	BREF
;---------2007.9.7 add start
        mov     r0,#sndbuf+3
        mov     a,@r0
        mov     SendData_tmp,a
;--------2007.9.7 add  end         
GDZT2:	Ljmp	JOB
;----------------------------
MOD4:   JB      BSGB,MOD41      ;设置走字状态
        Ljmp    JOB
mod41:  CLR     BSGB
        clr     btZzend
        LCALL   JDQXH
        Lcall   CLS
MOD42:  Lcall   XSZZ
        mov     r0,#sndbuf+3    ;#sndbuf+1
	MOV	@r0,#'Z'        ;CZ0(0DH)走字开始
        inc     r0
	MOV	@r0,#'0'
        inc     r0
	MOV	@r0,#13
        setb    bref
;---------2007.9.7 add start
        mov     r0,#sndbuf+3
        mov     a,@r0
        mov     SendData_tmp,a
;--------2007.9.7 add  end         
        Ljmp    JOB
;------------------------------
MOD5:   JNB     BSGB,MOD51
        clr     btZZend
        CLR     BSGB
        MOV     ZZcsTp,ZZcs
        MOV     ZZcsTp+1,ZZcs+1
MOD52:  Ljmp    JOB
MOD51:  JBC     BGDT,MOD55
        Ljmp    MOD54
MOD55:  Lcall   XSZZ
        MOV     A,ZZcsTp
        ORL     A,ZZcsTp+1
        orl     a,ZZcsTp+2
        JNZ     MOD54
        jb      btzzend,mod54
        setb    btzzend
        mov     adxs,adbhh     ;走字结束送CZ1(0DH)
        mov     adxs1,adbhl
        mov     adxs2,#0FH
        mov     a,ZZpw
        MOV     ADXS5,a
        MOV     a,ZZpw+1
        mov     adxs4,a
        MOV     A,ZZPW+2
        MOV     ADXS3,A
mod57:  mov     r0,#sndbuf+3    ;#sndbuf+1
	MOV	@r0,#'Z'
        inc     r0
	MOV	@r0,#'1'
        inc     r0
	MOV	@r0,#13
        clr     as108                   ;108吸合
        clr     bt108                   ;断开108延时
        clr     btJDQ                   ;断开继电器延时
        mov     tmc,#00h                ;先断开继电器后断开AS108
        mov     tmd,#03h
        mov     tme,#10h
        lcall   dis
        setb    bref
;---------2007.9.7 add start
        mov     r0,#sndbuf+3
        mov     a,@r0
        mov     SendData_tmp,a
;--------2007.9.7 add  end         
MOD54:  Ljmp    JOB
;----------------------------
;失压状态
mod6:   jb      btstrSY,mod60           ;开始试验标志
        ljmp    job
MOD60:
;----------------------------2003-08-19 add
	JNB	BSGB,mod602	;设置监视光电头状态
	CLR	BSGB
	Lcall	CLS
        mov     adxs,adbhh
        mov     adxs1,adbhl
	MOV	ADXS5,#0
	lcall	DIS
        mov     r0,#sndbuf+3    ;#sndbuf+1
	MOV	@r0,#'Y'       ;CYX(0DH)    X:脉冲个数
        inc     r0
	MOV	@r0,#'0'
        inc     r0
	MOV	@r0,#0dh
	CLR	BGDT
	SETB	BREF
;---------2007.9.7 add start
        mov     r0,#sndbuf+3
        mov     a,@r0
        mov     SendData_tmp,a
;--------2007.9.7 add  end         
mod602:	JNB	BGDT,mod603
	CLR	BGDT
	INC	ADXS5
        mov     r0,#sndbuf+3    ;#sndbuf+1
	MOV	@r0,#'Y'       ;CYX(0DH)    X:脉冲个数
        mov     r0,#sndbuf+4    ;#sndbuf+2
	INC	@r0
	MOV	A,ADXS5
	CJNE	A,#10,mod604
	MOV	ADXS5,#0
	MOV	@r0,#'0'
mod604:	lcall	DIS
	SETB	BREF
;---------2007.9.7 add start
        mov     r0,#sndbuf+3
        mov     a,@r0
        mov     SendData_tmp,a
;--------2007.9.7 add  end         
;----------------2003-08-19 add
mod603:   mov     a,sy
          cjne    a,#01,mod21
;-----------     失压方案一
mod601: jb      btstep1,mod201
        setb    AS108                  ;断开108
        CLR     BT108
        mov     a,im5ms
        clr     c
        subb    a,imsYctm               ;失压计时
        subb    a,#200                  ;1s电压中断
        jnz     mod22
        mov     imSyctm,im5ms
        setb    btstep1
        clr     btstep2
mod201: jb      btstep2,mod202          ;失压方案一
        clr     AS108                   ;108吸合
        SETB    BT108
        mov     a,im5ms
        clr     c
        subb    a,imSYctm               ;加50ms电压
        subb    a,#10
        jnz     mod22
        mov     imSyctm,im5ms
        setb    btstep2
        clr     btstep3
mod202: jb      btstep3,mod203
        setb    AS108                   ;断开108
        CLR     BT108
        mov     a,im5ms
        clr     c
        subb    a,imSyctm
        subb    a,#200
        jnz     mod22
        mov     imSyctm,im5ms
        setb    btstep3
        clr     btstep4
mod203: jb      btstep4,mod204
        clr     AS108                   ;108吸合
        SETB    BT108
        mov     a,im5ms
        clr     c
        subb    a,imSYctm
        subb    a,#10
        jnz     mod22
        mov     imSyctm,im5ms
        setb    btstep4
        clr     btstep5
mod204: jb      btstep5,mod23
        setb    AS108                  ;断开108
        CLR     BT108
        mov     a,im5ms
        clr     c
        subb    a,imSyctm
        subb    a,#200
        jnz     mod22
        mov     imSyctm,im5ms
mod23:  clr     btstrsy
        LCALL   JDQXH                         ;电压跌落试验结束、继电器吸合
        anl     imstep,#11100000b
        ljmp    job
;------------失压方案二
mod21:  cjne    a,#02,mod22
        setb    AS108                   ;断开108
        CLR     BT108
        mov     a,im5ms
        clr     c
        subb    a,imSYctm               ;断20ms电压
        subb    a,#5                    ;失压方案二
        jz      mod23
mod22:  ljmp    job
;-----------------------------------
;计电能试验
mod7:   jbc     bgdt,mod71              ;bgdt 脉冲
mod70:  ljmp    job
mod71:  mov     imbuf0,pwcnt1
        mov     imbuf1,pwcnt2
        mov     imbuf2,pwcnt3
        mov     imbuf3,pwcnt4
        mov     imbuf8,#10h
        mov     imbuf9,#27h
        mov     r0,#imbuf0
        mov     r1,#imbuf8
        mov     r2,#04h
        mov     r3,#02h
        lcall   mmul
        mov     imbufc,const1
        mov     imbufd,const2
        mov     imbufe,const3
        mov     imbuff,const4
        mov     r1,#imbufc
        mov     r3,#04h
        lcall   mdiv
        mov     r1,#imbuf8
        mov     r7,#07
mod72:  mov     @r1,#00h
        inc     r1
        djnz    r7,mod72
        mov     r6,#07
        mov     r1,#imbuf8
        lcall   mbtd
        MOV     A,R2
        MOV     R3,A
        cjne    r3,#08,$+3
        jnc     mod70
        cjne    r3,#05,$+3
        jnc     mod73
        mov     r3,#05h
mod73:  mov     a,r3
        mov     r7,a
        mov     r0,#sndbuf+3    ;#sndbuf+1             ;CPXXX.XXX(0DH) 送电能
	mov     @r0,#'P'
        inc     r0
        mov     r1,#imbuf8
        mov     a,r7
        add     a,r1
        DEC     A
        mov     r1,a
mod74:  mov     a,@r1
        orl     a,#'0'
        mov     @r0,a
        inc     r0
        dec     r1
        cjne    r7,#05,mod75
        mov     @r0,#'.'
        inc     r0
mod75:  djnz    r7,mod74
        mov     @r0,#0dh
        MOV     ADXS,#0FH
        MOV     ADXS1,#0FH
        MOV     R1,#ADXS5
        MOV     R7,#00H
        MOV     R0,#IMBUF8
        CJNE    R2,#05,$+3
        JNC     MOD7B
        MOV     R2,#05
MOD7B:  CJNE    R2,#07,MOD78
        MOV     R2,#06H
        MOV     R0,#IMBUF9
MOD76:  MOV     A,@R0
        CJNE    R7,#03,MOD77
        SETB    ACC.7
MOD77:  MOV     @R1,A
        INC     R0
        DEC     R1
        INC     R7
        DJNZ    R2,MOD76
        LJMP    MOD7A
MOD78:  MOV     A,@R0
        CJNE    R7,#04,MOD79
        SETB    ACC.7
MOD79:  MOV     @R1,A
        INC     R0
        DEC     R1
        INC     R7
        DJNZ    R2,MOD78
MOD7A:	lcall	DIS
        setb    BREf                ;数据刷新
;---------2007.9.7 add start
        mov     r0,#sndbuf+3
        mov     a,@r0
        mov     SendData_tmp,a
;--------2007.9.7 add  end         
        ljmp    job
;-----------------------------------
;计算盘转误差试验
mod8:   JNB	BSGB,MOD81
	Lcall	CLS
	Lcall	SETNN               ;TO COMPUTER
        MOV     DSCMPCN,CMPCIRN
        Lcall   xsbh
	CLR	BSGB
        LCALL   JDQXH
        MOV     TH2,#00H
        MOV     TL2,#00H
        SETB	BFIRST
        SETB    btk2        ;P0.1              ;GP:001   电子脉冲
        CLR     btk3        ;P0.3
        Ljmp	JOB
MOD81:  JBC	BGDT,MOD82
	ljmp	JOB
MOD82:	JNB	BFIRST,MOD83
        CLR     BFIRST
	MOV	OLDPZS,NEWPZS
	MOV	OLDPZS+1,NEWPZS+1
	Lcall	CLS
MOD84:  LCALL   DISCIRN
	ljmp	JOB
MOD83:	DJNZ	DSCMPCN,MOD84            ;n=0?
	MOV	DSCMPCN,CMPCIRN
        LCALL   DISCIRN
        MOV     ADXS2,#0FH
        MOV     ADXS3,#0FH
        MOV     ADXS4,#0FH
        MOV     ADXS5,#0FH                ;清显示
        mov     imbuf0,PzBz
        mov     imbuf8,CmpCirn
        mov     r0,#imbuf0
        mov     r1,#imbuf8
        mov     r2,#01h
        mov     r3,#01h
        lcall   mmul
        MOV	A,NEWPZS
	XCH	A,OLDPZS
	MOV	IMBUF8,A
	MOV	A,NEWPZS+1
	XCH	A,OLDPZS+1
	MOV	IMBUF9,A
	MOV	A,NEWPZS
	CLR	C
	SUBB	A,IMBUF8
	MOV	imbuf8,A
	MOV	A,NEWPZS+1
	SUBB	A,IMBUF9
	MOV	imbuf9,A
	MOV     A,IMBUF8
        ORL     A,IMBUF9
        JNZ     MOD85
MOD87:  MOV     ADXS4,#10     ;-E
        MOV     ADXS5,#11
        LCALL   DIS
        MOV     R0,#sndbuf+3    ;#SNDBUF+1
        MOV     @R0,#'F'
        INC     R0
        MOV     @R0,#'-'
        INC     R0
        MOV     @R0,#'E'
        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    JOB
MOD85:  CLR     CBFH
        MOV     A,IMBUF8
        CLR     C
        SUBB    A,IMBUF0
        MOV     IMBUF0,A
        MOV     A,IMBUF9
        SUBB    A,IMBUF1
        MOV     IMBUF1,A
        JNC     MOD86
        SETB    CBFH
        MOV     A,IMBUF0
        CPL     A
        SETB    C
        ADDC    A,#00H
        MOV     IMBUF0,A
        MOV     A,IMBUF1
        CPL     A
        ADDC    A,#00H
        MOV     IMBUF1,A
MOD86:  MOV     R0,#IMBUF0
        MOV     R1,#IMBUF8
        MOV     R6,#04H
        LCALL   MBTD
        JC      MOD87
        MOV     A,R2
        MOV     R7,A
        MOV     R0,#ADXS5
MOD88:  MOV     A,@R1
        MOV     @R0,A
        INC     R1
        DEC     R0
        DJNZ    R7,MOD88
        MOV     @R0,#0FH
        JNB     CBFH,MOD89
        MOV     @R0,#10
MOD89:  DEC     R1
        MOV     R0,#sndbuf+3    ;#SNDBUF+1
        MOV     @R0,#'F'
        INC     R0
        MOV     @R0,#'+'
        JNB     CBFH,MOD8A
        MOV     @R0,#'-'
MOD8A:  MOV     A,@R1
        ORL     A,#'0'
        INC     R0
        MOV     @R0,A
        DEC     R1
        DJNZ    R2,MOD8A
        INC     R0
        MOV     @R0,#0DH
        LCALL   DIS
        SETB    B

⌨️ 快捷键说明

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