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

📄 constant.asm

📁 本程序为集中抄表系统中低压电力线载波数据采集器程序源代码
💻 ASM
字号:
;--------------------------------------
;计算并写入表的分辨率
;入口:DPH(通道号1-16)
;;--------------------------------------
COMPUTE_RESOLUTION:

DIV_100:        MOV     R2,#00
                MOV     R3,#00
                MOV     06H,#00
                MOV     07H,#100
DIV_FOR_RESOLUTION:
                LCALL   NDIV
          	MOV	R6,03H              ;余数送R6
          	MOV	A,DPH
		DEC	A
		ADD	A,#RAM_RESOLUTION_0
		MOV	R0,A
		MOV	@R0,05H             ;电表0.01度分辨率写C04
		MOV	B,R5
		MOV	R7,DPH
		MOV	DPH,#C04_ADDR_L
		MOV	A,R7
		DEC	A
		ADD	A,#C04_RESOLUTION_0
		MOV	DPL,A
		LCALL	WR_C04_1BYTE
		MOV	DPH,R7                
COMPUTE_COMPENSATE:
		MOV	A,06H
		MOV     B,#10                       ;余数除以10得到0.1度电的脉冲补偿数
                DIV     AB
   		MOV	B,A
		MOV	A,DPH
		DEC	A
		ADD	A,#RAM_PULSE_COMPENSATE_0
		MOV	R0,A
		MOV	@R0,B
		MOV	R7,DPH
		MOV	DPH,#C04_ADDR_L
		MOV	A,R7
		DEC	A
		ADD	A,#C04_PULSE_COMPENSATE_0
		MOV	DPL,A
		LCALL	WR_C04_1BYTE                
WRITE_METER_TYPE:
                MOV     A,R5                    ;电表分辨率送A寄存器
                MOV     B,#08H                  ;8送B寄存器
                DIV     AB                      ;分辨率除以8,能整除的为电子表,不能整除的为机械表              
                MOV     A,B                     ;余数送A
                CJNE    A,#00H,IS_DS_METER      ;余数不为0是机械表
IS_DDS_METER:
                MOV	B,#01H                  ;为0,是电子表,写电子表类型标记
                AJMP    WRITE_METER_TYPE_TO_C04 
IS_DS_METER:
                MOV	B,#00H                  ;为1,是机械表,写机械表类型标记
WRITE_METER_TYPE_TO_C04:
                MOV	DPH,#C04_ADDR_H
		MOV	A,R7
		DEC	A
		ADD	A,#DDS_MAK1             ;标记首地址 
		MOV	DPL,A
		LCALL	WR_C04_1BYTE                            
		RET
;--------------------------------------
;整数除法(R2R3R4R5)/(R6R7)=(R4R5),余数为(R2R3)
;;--------------------------------------
NDIV:           MOV     A,R3
                CLR     A
                SUBB    A,R7
                MOV     A,R2
                SUBB    A,R6
                JNC     NDVE1
                MOV     B,#16
NDVL1:          CLR     C
                MOV     A,R5
                RLC     A
                MOV     R5,A
                MOV     A,R4
                RLC     A
                MOV     R4,A
                MOV     A,R3
                RLC     A
                MOV     R3,A
                XCH     A,R2
                RLC     A
                XCH     A,R2
                MOV     F0,C
                CLR     C
                SUBB    A,R7
                MOV     R1,A
                MOV     A,R2
                SUBB    A,R6
                JB      F0,NDVM1
                JC      NDVD1
NDVM1:          MOV     R2,A
                MOV     A,R1
                MOV     R3,A
                INC     R5
NDVD1:          DJNZ    B,NDVL1
                CLR     F0
                RET
NDVE1:          SETB    F0
                RET

⌨️ 快捷键说明

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