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

📄 minute_chk.asm

📁 基于PL3000芯片的单相复费率多功能电表的应用程序。
💻 ASM
字号:
;************************************************************
;文档类型: 原代码 
;项目编号: 
;文档编号: 
;修订版本: v1.0
;生成日期: 2004.12.3
;作    者: LI
;审    核: 
;************************************************************
;相关文档: 上月冻结,费率时段判别
;文档编号      说明 
;************************************************************
;修订版本:
;修订版本: 
;************************************************************
$INCLUDE	(RAML128.INC)
$INCLUDE	(RAMH128.INC)
$INCLUDE	(PL3200.INC)
$INCLUDE	(24ADDR.INC)
$INCLUDE	(IO.INC) 
$INCLUDE	(CONST.INC)

CODE_REG	SEGMENT	CODE
RSEG		CODE_REG
PUBLIC          MINUTE_CHK
PUBLIC          SAVE_FLOAT_PRO
PUBLIC          RD_UP_DATA
;*******************************;调用子程序情况:
;EXTRN   CODE(RD_AUTO_DATE) 
EXTRN   CODE(FL_DATE_CHK)
;EXTRN   CODE(FRZ_LAST_MON_DATA)
;EXTRN   CODE(RD_LAST_MON)
EXTRN   CODE(RD_SZ)
;EXTRN   CODE(RD_ZR_DAY)
;EXTRN   CODE(RD_AUTO_DAY)
EXTRN   CODE(RD_JLMX)
EXTRN   CODE(SAVE_FL_FLOAT)
EXTRN   CODE(RD24_DO_CHK)
EXTRN   CODE(RD_MTR_RELY)

;******************************************************
;判定1分钟时间到,为上月冻结,费率时段判别提供时间
;判定时间(分)变化后,再读日,时,分
;******************************************************
MINUTE_CHK:	MOV	EXT_ADR,#82H	;读分,时钟
		MOV	A,EXT_DAT
		MOV     R0,#MINUTE
                MOV     B,@R0
		CJNE	A,B,MINUTE_CHANG
        	RET
RD_MIN_XS:    
                MOV    EXT_ADR,#0FFH
                MOV    EXT_DAT,#0FFH
                MOV    EXT_ADR,#80H
                MOV    EXT_DAT,RD_BUF0
                MOV    EXT_ADR,#0FFH
                MOV    EXT_DAT,#0AAH        	
                JMP    MINUTE_JDQ
                
RD_MIN_JLMX:    
                MOV     PMU_ADR,#0FFH
                MOV     PMU_DAT,#0FFH                        
                MOV     PMU_ADR,#0FCH;电能计量控制
                CLR     PMU_DAT.7    ;关闭电能计量
                NOP
                SETB    PMU_DAT.7    ;打开电能计量
                CLR     PMU_DAT.0
                MOV     PMU_ADR,#0FDH;电能计量增益
                MOV     PMU_DAT,#IAGC_CFG
                MOV     PMU_ADR,#13H;有功门限H
                MOV     PMU_DAT,RD_BUF1
                MOV     PMU_ADR,#12H;有功门限L
                MOV     PMU_DAT,RD_BUF0                
                MOV     PMU_ADR,#0FFH
                MOV     PMU_DAT,#0AAH    	
                JMP     MINUTE_JDQ1               
                
        	
MINUTE_CHANG:	
		MOV	@R0,A	;更新分	
                CALL   RD_SZ
                MOV    EXT_ADR,#80H;一分钟比较时钟系数
                MOV    A,EXT_DAT
                CJNE   A,RD_BUF0,RD_MIN_XS              	  
		NOP
		
MINUTE_JDQ:  		
                CALL    RD_JLMX
                MOV     PMU_ADR,#13H;有功门限H    
                MOV     A,PMU_DAT
                CJNE    A,RD_BUF1,RD_MIN_JLMX 
                MOV     PMU_ADR,#12H;有功门限L
                MOV     A,PMU_DAT
                CJNE    A,RD_BUF0,RD_MIN_JLMX





;	MOV     R0,#MINUTE; 一小时继电器冗余处理  05-12-07  LIHENG
            ;    MOV     A,@R0
	    ;    JNZ     PD_ZR_DAY                 
	;	CALL	RD_MTR_RELY
	;	MOV	A,RD_BUF0		 		  
	;	CJNE    A,#5FH,MINUTE_JDQ1     ;增加继电器遥信信号 
	;	JB      JDQ_JS,MINUTE_JDQ2
	;	JMP     PD_ZR_DAY
		
MINUTE_JDQ1:  ;  JB      JDQ_JS,PD_ZR_DAY	
MINUTE_JDQ2:;	SETB    DO_RELY      
	;	MOV     R0,#TMR_RLY   ;2004.6.16 100ms后操作继电器
	;	MOV     @R0,#20
	;	MOV     SSC_ADR,#00H
	;	JB	R_T,PD_ZR_DAY	
						
PD_ZR_DAY:  ;    call    RD_ZR_DAY          ;昨日冻结处理
           ;     MOV     EXT_ADR,#85H
          ;      mov     a,ext_dat
          ;      cjne    a,rd_buf0,DJ_ZR_DAY
          ;      jmp     PD_LAST_MON
                               
DJ_ZR_DAY:             
	;	CALL	RD_AUTO_DAY
	;	MOV     EXT_ADR,#83H
        ;        MOV     A,EXT_DAT ;HOUR
	;	CJNE	A,RD_BUF0,DAY_hour_comp;DAY 不等不判冻结条件		             
	;	JMP	DAY_HOUR_HIGH
		
DAY_HOUR_COMP:;	NOP                        ;时不等,时大,启动昨日冻结检测		
	;	NOP
	;	JC	PD_LAST_MON		
DAY_HOUR_HIGH: ; MOV	DJ_ZR,#'R'
	;	CALL	ZR_DATA;昨日冻结处理程序
        ;        MOV	DJ_LAST,#0
PD_LAST_MON:                               
;                call    rd_last_mon
;                MOV     EXT_ADR,#86H
;                mov     a,ext_dat
;                cjne    a,rd_buf0,dj_last_mon
;                jmp     chang_ret
                               
dj_last_mon:             
;		CALL	RD_AUTO_DATE
;		MOV     EXT_ADR,#85H
;                MOV     A,EXT_DAT ;DAY
;		CJNE	A,RD_BUF1,hour_comp;CHANG_RET	;DAY 不等不判冻结条件
		
;                MOV     EXT_ADR,#83H
;                MOV     A,EXT_DAT ;HOUR
;		CJNE	A,RD_BUF0,HOUR_COMP
;		JMP	HOUR_HIGH          ;时相等,启动冻结
		
HOUR_COMP:;	NOP                        ;时不等,时大,启动上月冻结检测		
	;	NOP
	;	JNC	HOUR_HIGH
	;	JMP	CHANG_RET
		
HOUR_HIGH:
FRZ_START: ;     NOP
	;	NOP
;		MOV	DJ_LAST,#'L'
;		CALL	FRZ_LAST_MON_DATA;上月冻结处理程序
;		MOV	DJ_LAST,#0
CHANG_RET:	NOP
		NOP
		MOV     A,FL_NUM_JS
		MOV     FL_F_BAK,A
		CPL     A
		MOV     FL_F_BAK1,A
		CALL	FL_DATE_CHK	;费率时段检测
                MOV     A,FL_F_BAK
		CJNE    A,FL_NUM_JS,SAVE_FLOAT_P1      
		NOP
	
		RET
		
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;		
;		
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;		
SAVE_FLOAT_P1:  NOP                
                CALL    SAVE_FLOAT_PRO
RD_UP_DATA:     NOP
                MOV     FL_NUM,FL_NUM_JS
                CALL    RD_NEW_24
                MOV     R0,#NOW_FLOAT_ZYG
                MOV     A,RD_BUF0
                MOV     @R0,A
                ADD     A,#'X'
                INC     R0
                MOV     @R0,A
                
             ;   MOV     A,FL_NUM_JS
             ;   ADD     A,#4
             ;   MOV     FL_NUM,A 
             ;   CALL    RD_NEW_24
             ;   MOV     R0,#NOW_FLOAT_FYG
             ;   MOV     A,RD_BUF0
             ;   MOV     @R0,A
             ;   ADD     A,#'X'
             ;   INC     R0
             ;   MOV     @R0,A
               
                RET	

RD_NEW_24:      MOV     A,FL_NUM
                DEC     A
                DEC     A    ;-2
                MOV     B,#4
                MUL     AB
                ADD     A,#PFL2_FLOAT_24
                MOV     ADDR_24,A
                MOV	WR_ID,#WR_2410
		MOV	RD_N,#2
		CALL    RD24_DO_CHK
		RET   
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;保存有功小数正向和反向
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;   
SAVE_FLOAT_PRO: NOP
                MOV     R0,#NOW_FLOAT_ZYG
                MOV     A,@R0
                MOV     WR_BUF0,A
                ADD     A,#'X'
                MOV     B,A
                INC     R0
                MOV     A,@R0
                CJNE    A,B,ZYG_FLOAT_ER                  
                MOV     A,FL_F_BAK
                XRL     A,FL_F_BAK1
                CJNE    A,#0FFH,FYG_FLOAT_ER
                MOV     FL_NUM,FL_F_BAK
              	CLR     WP
		MOV	WP_CTR,#'W'
		CALL	SAVE_FL_FLOAT
ZYG_FLOAT_ER:   NOP		
	      ;  MOV     R0,#NOW_FLOAT_FYG
              ;  MOV     A,@R0
             ;   MOV     WR_BUF0,A
            ;    ADD     A,#'X'
            ;    MOV     B,A
            ;    INC     R0
            ;    MOV     A,@R0
            ;    CJNE    A,B,FYG_FLOAT_ER
            ;    MOV     A,FL_F_BAK
            ;    XRL     A,FL_F_BAK1
            ;    CJNE    A,#0FFH,FYG_FLOAT_ER
            ;    MOV     A,FL_F_BAK
             ;   ADD     A,#4
            ;    MOV     FL_NUM,A
            ;  	CLR     WP
	;	MOV	WP_CTR,#'W'
	;	CALL	SAVE_FL_FLOAT	
FYG_FLOAT_ER:   NOP	     
                RET	
		END
		

⌨️ 快捷键说明

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