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

📄 wxcs_31.asm

📁 校准多功能电能表的基本误差和规约规定的其他多功能试验项目。
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	mov	adxs,#0fh
	mov	adxs1,#0fh
	mov	adxs2,#0fh
	mov	adxs3,#0fh
	mov	adxs4,#0fh
	mov	adxs5,#00h
	lcall   dis
CLR1:   LJMP    JOB6
;-------------------------------
GDCLS:	Lcall	CLS		;误差清零,光电头复位
	MOV	BNNL,BNSL
        MOV     DSCMPCN,CMPCIRN
        Lcall	SETNN
        Lcall   xsbh
	SETB	BFIRST
	RET
;------------------------------
GETXB:	MOV	r0,#rcvbuf+5
        mov     a,@r0
	RRC	A
	MOV	GBBZ,C
	SETB	BSGB
	MOV	MODE,#1
	ljmp	JOB6
;------------------------------
;对斑
GETHB:	JB	GBBZ,dhb0
        ljmp    JOB6
dhb0:	MOV	r0,#rcvbuf+5
        mov     a,@r0
	clr	bthbh
	cjne	a,#'2',dhb2
	setb	bthbh
dhb2:	cjne	a,#'0',dhb3
	clr	bthbh                  ;结束对斑
DHB1:	MOV	MODE,#0
        clr     btMcYz
        mov     pwcnt1,#00h            ;清除被校表脉冲计数器
        mov     pwcnt2,#00h
        mov     pwcnt3,#00h
        mov     Pwcnt4,#00h
        MOV	TMOD,#00100101B        ;t0 counter
        jnb     btstrsy,dhb11
        clr     BTSTRSY
dhb11:  ;jnb     btcssy,dhb12
        ;clr     btcssy                ;退出常数测试
dhb12:  SETB	BSGB
        LCALL   JDQXH                  ;退出其它实验回到校验状态
        ljmp	JOB6
dhb3:	MOV	MODE,#02	       ;开始对黑斑
        clr     as108
        mov     tmc,#00h
        mov     tmd,#03h
        MOV     tme,#10h
        SETB    BTJDQ                  ;继电器吸合延时
        setb    bt108                  ;108吸合延时
        SETB	BSGB
        MOV     TH2,#0FFH
        MOV     TL2,#0FFH
	ljmp	JOB6
;-----------------------------------
GETJS:	JNB	GBBZ,JOB6
	MOV	r0,#rcvbuf+5
        mov     a,@r0
	JNB	ACC.0,DHB1
	MOV	MODE,#03               ;监视光电头状态
	SETB	BSGB                   ;GJ:001
        LCALL   JDQXH                  ;AS108断开  JDQ吸合
        ljmp	JOB6
;---------------------------------
;------更改发送程序无论什么时候都将小显示的工作模式送回主程序进行握手判断
;-----回送数据格式变更为CUBB(0DH)或CUBBXXXXXXX(0DH)
;------原来回送数据的起始地址变更为sndbuf+3
SENDWC:	SETB	BRSWE		       ;Enable send data
	CLR	BSEND
	MOV	SBUF,#'C'
        mov     r0,#rcvbuf
	MOV	A,@r0
        xrl     a,#'N'
        jnz     SEWCY0
        MOV     A,mode
        MOV     MODE,#0DH
        cjne    a,#0dh,SEWCY2          ;查询耐压结果进入耐压状态
SEWCY0:	JB	BREF,SEWCY1
SEWCY2:	mov     r0,#sndbuf             ;回送没有数据标志
;--------2007.8.30 add   start
        mov     @r0,#'U'
        mov     a,mode
        anl     a,#0f0h
        swap    a
        orl     a,#'0'
        inc     r0              ;sndbuf+1
        mov     @r0,a
        mov     a,mode
        anl     a,#0fh
        orl     a,#'0'
        inc     r0              ;sndbuf+2
        mov     @r0,a
        inc     r0              ;sndbuf+3
;---------2007.8.30 add end
	MOV	@r0,#0dh
        MOV     SNDPNT,#SNDBUF
        LJMP    JOB6
SEWCY1:	CLR	BREF
	MOV	SNdpnt,#SNDBUF     ;#sndbuf+1
;------------------------------
JOB6:
;--------2007.8.30 add   start
        mov     r0,#sndbuf              ;回送没有数据标志
        mov     @r0,#'U'
        mov     a,mode
        anl     a,#0f0h
        swap    a
        orl     a,#'0'
        inc     r0              ;sndbuf+1
        mov     @r0,a
        mov     a,mode
        anl     a,#0fh
        orl     a,#'0'
        inc     r0              ;sndbuf+2
        mov     @r0,a
;---------2007.8.30 add end
	MOV	A,MODE
	MOV	B,#3
	MUL	AB
	MOV	DPTR,#JOBM
	JMP	@A+DPTR
JOBM:	
  ljmp	MOD0    ;校表
	ljmp	MOD1    ;选择挂表
	ljmp	MOD2    ;对黑斑
	ljmp	MOD3    ;黑斑出现
	ljmp    MOD4    ;准备开始走字
	ljmp    MOD5    ;走字
        ljmp    mod6    ;电压跌落试验
        ljmp    mod7    ;计电能
        ljmp    mod8    ;比较脉冲与盘转数
        ljmp    mod9    ;常数测试实验
        LJMP    MODa    ;功耗测试状态
        LJMP    MODb    ;被校表脉冲测试
        ljmp    modc	;累积脉冲试验
        ljmp    modd    ;耐压试验
;----------------
MOD0:	
        JNB	BSGB,MOD01                 ;1表示要求设置;0表示已经设置
        MOV     TH2,DIVR+1             ;电子脉冲
        MOV     TL2,DIVR               ;置初值
        MOV     BNNL,BNSL
        CLR	BSGB
	Lcall	CLS
	Lcall	SETNN           ;TO COMPUTER
        Lcall   xsbh
        LCALL   JDQXH
	      CLR     IK1
        SETB    BTIK1
        MOV     TMBH,#10H
	SETB	BFIRST
	ljmp	JOB
MOD01:  JBC	BGDT,MOD02
	ljmp	JOB
MOD02:	JNB	BFIRST,MOD03
        CLR     BFIRST
        MOV     OLDD3,NEWD3
	MOV	OLDD2,NEWD2
	MOV	OLDD1,NEWD1
	MOV	OLDD0,NEWD0
	Lcall	CLS
MOD04:  LCALL   DISCIRN
	ljmp	JOB
MOD03:	DJNZ	BNNL,MOD04            ;n=0?
	MOV	BNNL,BNSL
        LCALL   DISCIRN
	SETB	BREF                       ;数据刷新标识
	MOV	A,NEWD0
	XCH	A,OLDD0
	MOV	R0,A
	MOV	A,NEWD1
	XCH	A,OLDD1
	MOV	R1,A
	MOV	A,NEWD2
	XCH	A,OLDD2
        MOV	R2,A
        MOV     A,NEWD3
        XCH     A,OLDD3
        MOV     R3,A
        MOV	A,NEWD0
	CLR	C
	SUBB	A,R0
	MOV	imbufC,A              ;CE+-E(0DH)
	MOV	A,NEWD1
	SUBB	A,R1
	MOV	imbufD,A
	MOV	A,NEWD2
	SUBB	A,R2
	MOV	imbufE,A
        MOV	A,NEWD3
	SUBB	A,R3
	MOV	imbuff,A
mod0a:  MOV	R0,#imbuf0
	MOV	R1,#BCS
	MOV	R2,LBCS
WC8:	MOV	A,@R1
	MOV	@R0,A
	INC	R0
	INC	R1
	DJNZ	R2,WC8
	MOV	R0,#imbuf0
	MOV	R2,LBCS
	MOV	R1,#imbufC
	MOV	R3,#04H
	CLR	cBFH
	MOV	A,imbufC
	ORL	A,imbufD
	ORL	A,imbufE
        ORL     A,IMBUFF
	JNZ	WCE1
	MOV	R2,#7
	LCALL	WCE2             ;+ -
	ljmp	JOB
WCE1:	lcall	MDIV
        lcall   calc
	ljmp	JOB
;-------校验圈数显示字程序------------
DISCIRN:
        MOV	B,BNNL
        MOV     A,MODE
        XRL     A,#08H
        JNZ     DISCIRN0
        MOV     B,DSCMPCN
DISCIRN0:
  MOV    A,B
	MOV	B,#10
	DIV	AB
	MOV	ADXS,B
DISCIRN1:
  JB	BREF,DISCIRN2
  JB      BRSWE,DISCIRN2           ; ON SENDDING
	Lcall	SETNN                    ;SEND CIRCNT
DISCIRN2:lcall	DIS
        RET
;-----------------------------------
;计算误差
calc:   
        CJNE    R2,#2,WCE3               ;减1000000
        INC     R2
        MOV     imbuf2,#00h
WCE3:   
        CJNE    R2,#3,WCE4
        MOV     A,imbuf0
        CLR     C
        SUBB    A,#40H
        MOV     imbuf0,A
        MOV     A,imbuf1
        SUBB    A,#42H
        MOV     imbuf1,A
        mov     a,imbuf2
        subb    a,#0fh
        mov     imbuf2,a
        JNC     WCE5
        SETB    cBFH
        mov     r7,#03h
        setb    c
wce31: 
        mov     a,@r0
        cpl     a
        addc    a,#00h
        mov     @r0,a
        inc     r0
        djnz    r7,wce31
WCE5:   
        mov     r1,#imbuff+1
        mov     r7,#08h
wce50:  
        dec     r1
        mov     @r1,#00h
        djnz    r7,wce50
	      MOV	    R6,#08
        mov     r0,#imbuf0
        lcall	  MBTD              ;四位小数
wce51:	
        jb	    brswe,wce51       ;正在发送,等待发送结束
	      jnc	    WCE2              ;计算错误
WCE4:	
        MOV	    R2,#7
WCE2:	
        MOV	    ADXS1,#0FH       ;************
        mov     r0,#sndbuf+3     ;#sndbuf+1
        mov     @r0,#'E'
Wce21:  
        inc     r0
        mov     @r0,#'+'
        JNB	    cBFH,WC4
	      MOV	    ADXS1,#10	;"-';************
	      MOV	    @r0,#'-'
WC4:	
        MOV	    A,R2
	      CLR	    C
	      SUBB	  A,#7
	      JNC	    WC2            ;*******
        mov     r0,#sndbuf+5   ;#sndbuf+3
        mov     r7,#06h       ;#05h  2003-12-29 modify
        mov     r1,#imbuf8
	      CJNE	  r2,#06H,WC40     ;误差为xx.x(x)
        mov     r7,#07h       ;#06h  2003-12-29  modify
wc40:   
        mov     a,r7
        dec     a
        dec     a           ;add  2003-12-29 modify
        add     a,r1
        mov     r1,a
wc41:   
        cjne    r7,#05h,wc42       ;#04h 2003-12-29 modify
        mov     a,#'.'
        ljmp    wc43
wc42:   
        mov     a,@r1
        dec     r1
        orl     a,#'0'
wc43:   
        mov     @r0,a
        inc     r0
        djnz    r7,wc41
        mov     @r0,#0dh
        cjne    r2,#06,wc44
        mov     a,imbufd
        mov     adxs2,a
        mov     a,imbufc
        setb    acc.7
        mov     adxs3,a
        mov     a,imbufb
        mov     adxs4,a
        mov     a,imbufa
        mov     adxs5,a
        ljmp    wc45
wc44:   
        mov     a,imbufc
        setb    acc.7
        mov     adxs2,a
        mov     a,imbufb
        mov     adxs3,a
        mov     a,imbufa
        mov     adxs4,a
        mov     a,imbuf9
        mov     adxs5,a
wc45:	
        lcall	  DIS
	      SETB	  BREF
	      ret
WC2:	
        mov     r0,#sndbuf+5              ;#sndbuf+3
        MOV	    @r0,#'E'
        inc     r0
	      MOV	    @r0,#13
	      MOV	    ADXS4,adxs1
	      MOV	    ADXS3,#0FH
	      mov	    adxs2,#0FH
	      MOV	    ADXS5,#11
	      lcall	  DIS
	      SETB	  BREF
        ret
;-------------
;----------------------------------
MOD1:	JNB	BSGB,SGB5
	CLR	BSGB		;选择挂表(不选择)
	JNB	GBBZ,SGB2
	
	MOV	MODE,#0		          ;选择挂表
  mov     r0,#sndbuf+3    ;#sndbuf+1
	MOV	@r0,#'G'        ;CG1(0DH)挂表
        inc     r0
	MOV	@r0,#'1'
        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         
	LCALL   JDQXH
        SETB	BSGB
SGB5:	ljmp	JOB
SGB2:                         ;不挂表
        SETB    IK1           ;best 吸合
        SETB    BTIK1         ;ik1吸合延时
        mov     tmbh,#10h
        LCALL   AllDK         ;108断开,继电器断开
	mov     r0,#adxs
        mov     r1,#06
mod11:  mov     a,#10
        mov     @r0,a
        inc     r0
        djnz    r1,mod11
        lcall	DIS
        mov     r0,#sndbuf+3    ;#sndbuf+1
	MOV	@r0,#'G'        ;CG0(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
;------------------------------
MOD2:	
        JNB	BSGB,FHB1	;判断对黑斑状态是否已经设置?
        ;没有设置对黑斑状态
	      CLR	BSGB
        CLR     FINDHB          ;黑斑出现标志清零
	CLR	SSHB                      ;对斑时出现黑斑标志清零
        clr     AS108           ;
        SETB    BT108           ;对斑时继电器AS108同时有效
        SETB    BTJDQ
        MOV     TMC,#00H
        MOV     TMD,#03H
        MOV     TME,#10H
        mov     adxs,adbhh
        mov     adxs1,adbhl
	mov	adxs2,#10
	mov	adxs3,#0FH
	mov	adxs4,#0FH
	MOV	ADXS5,#10
	lcall	DIS
        mov     r0,#sndbuf+3    ;#sndbuf+1
	MOV	@r0,#'S'
        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
FHB1:                             ;已经设置对黑斑状态
        JNB	FINDHB,SGB4          ;黑斑是否出现?
        JNB     BTPUSCH,FHB11    ;黑斑出现后,判断是光电头脉冲还是电子脉冲
        JNB     BTHBH,FHB10          ;电子脉冲
        ljmp    FHB2                 ;后沿对斑
FHB10:  JB      DGDT2,FHB2           ;前沿对斑
        LJMP    SGB4

FHB11:  
        JNB     BTHBH,FHB3           ;光电头脉冲
        sjmp    fhb2                 ;前沿对斑
fhb3:   
        JNB     DGDT,SGB4            ;后沿对斑
fhb2:	
        JB	    SSHB,SGB4
        clr     bt108                ;108 断开延时标志
        clr     btjdq                ;继电器断开延时标志
        MOV     TMC,#00H
        MOV     TMD,#03H

⌨️ 快捷键说明

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