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

📄 text10(新算法).asm

📁 智能系统新算法源代码
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;被除数R2、R3、R4、R5,除数R6、R7
;出口:OV=0时,商R4R5,余数R2R3,OV=1,益出,占用PSW、A、B、R1--R7。
DIV_2V2:
MOV B,#10H
DIVL: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,DVME
JC DMDE
DVME:MOV R2,A
MOV A,R1
MOV R3,A
INC R5
DMDE:DJNZ B,DIVL
CLR  F0
RET
RET
;****************************求平均数子程序  和/8
; 和R2R3R4R5,商R4R5,余数R2R3
PINGJUN:
MOV R5,#00
MOV R4,#00
MOV R0,#00
MOV R7,#8
MOV R3,#0
PDV_1:
INC  R0
MOVX A,@R0
ADD  A ,R5
MOV  R5,A
MOV  R4,A
ADDC A,#0
MOV  R4,A
INC  R0
DJNZ R7,PDV_1
MOV R0,#00
MOV R7,#8
PDV_2:
MOVX A ,@R0
ADD  A ,R4
MOV  R4,A
MOV  A,R3
ADDC A,#0
MOV  R3,A
INC  R0
INC  R0
DJNZ R7,PDV_2
MOV  R2,#0
MOV  R6,#0
MOV  R7,#8
LCALL DIV_2V2
RET
RET
;****************************数据校准
CHULI_II:		 ;电流
SETB RS1
MOV C,P2.2
JNC k_1			;	200mA
MOV C,P2.3
JNC K_2			;	320mA
MOV C,P1.5
JNC K_3	        ;   820mA
SJMP SHIBAI
K_3:   		    ;   K3
MOV R7,55H
MOV R6,56H
MOV R5,5EH
MOV R4,5DH
LCALL MULD
CJNE R1,#1,SHIBAI_6
SHIBAI_6:JNC SHIBAI
CJNE R2,#23H,SHIBAI_7
CJNE R3,#3CH,SHIBAI_7
SHIBAI_7:JNC SHIBAI
CJNE R2,#1CH,SHIBAI_8
CJNE R3,#0D4H,SHIBAI_8
SHIBAI_8:JNC SHIBAI
SJMP WIN_0
K_1:				  ;K1
MOV R7,55H
MOV R6,56H
MOV R5,5EH
MOV R4,5DH
LCALL MULD	;转校准子程序
CJNE R1,#1,SHIBAI_0
SHIBAI_0:JNC SHIBAI
CJNE R2,#8,SHIBAI_1
CJNE R3,#098H,SHIBAI_1
SHIBAI_1:JNC SHIBAI
CJNE R2,#7,SHIBAI_2
CJNE R3,#08H,SHIBAI_2
SHIBAI_2:
        JC	SHIBAI
WIN_0:
LCALL WRITE_LOOP	; 参数写保护
CPL P2.1
LCALL  SHAN_1	 ;调用闪烁子程序
CPL P2.1
LCALL SHAN_1
CPL P2.1
LCALL SHAN_1
SETB P2.1
MOV A,5EH
MOV 7EH,A
MOV A,5DH
MOV 7DH,A
;MOV 59H,#02			 ;置请求保存参数标志
MOV 57H,#8			 ;调试计算次数
CLR RS1
RET
RET
SHIBAI:
CLR RS1
RET
RET
K_2:			   ;K2
MOV R7,55H
MOV R6,56H
MOV R5,5EH
MOV R4,5DH
LCALL MULD
CJNE R1,#1,SHIBAI_3
SHIBAI_3:JNC SHIBAI
CJNE R2,#0DH,SHIBAI_4
CJNE R3,#0C0H,SHIBAI_4
SHIBAI_4:JNC SHIBAI
CJNE R2,#0BH,SHIBAI_5
CJNE R3,#40H,SHIBAI_5
SHIBAI_5:JC	SHIBAI
SJMP WIN_0

CHULI_VV:			;电压
SETB RS1
MOV C,P2.2
JNC k_11			;	60V	X100
MOV C,P2.3
JNC K_22			;	110V X100
MOV C,P1.5
JNC K_33	        ;   220V X100
SJMP SHIBAI
K_11:				;   K11	  误差范围为20%
MOV R7,62H
MOV R6,63H
MOV R5,60H
MOV R4,5FH
LCALL MULD	       	;  转校准子程序
CJNE R1,#1,SHIBAI_9
SHIBAI_9:JNC SHIBAI
CJNE R2,#1CH,SHIBAI_10
CJNE R3,#20H,SHIBAI_10
SHIBAI_10:JNC SHIBAI
CJNE R2,#12H,SHIBAI_11
CJNE R3,#0C0H,SHIBAI_11
SHIBAI_11:
JC	SHIBAI		   ;********失败后选择放大倍数暂不写
SJMP WIN_00
SHIBAI_GD:LJMP SHIBAI
K_22:				 ;K22
MOV R7,62H
MOV R6,63H
MOV R5,60H
MOV R4,5FH
LCALL MULD	       	;  转校准子程序
CJNE R1,#1,SHIBAI_12
SHIBAI_12:JNC SHIBAI_GD
CJNE R2,#33H,SHIBAI_13
CJNE R3,#90H,SHIBAI_13
SHIBAI_13:JNC SHIBAI
CJNE R2,#22H,SHIBAI_14
CJNE R3,#60H,SHIBAI_14
SHIBAI_14:
JC	SHIBAI_GD		   ;*******失败后选择放大倍数暂不写
SJMP WIN_00
K_33:				;K33
MOV R7,62H
MOV R6,63H
MOV R5,60H
MOV R4,5FH
LCALL MULD	       	;  转校准子程序
CJNE R1,#1,SHIBAI_15
SHIBAI_15:JNC SHIBAI_GD
CJNE R2,#67H,SHIBAI_16
CJNE R3,#20H,SHIBAI_16
SHIBAI_16:JNC SHIBAI_GD
CJNE R2,#44H,SHIBAI_17
CJNE R3,#0C0H,SHIBAI_17
SHIBAI_17:
JC SHIBAI_GD		   ;********失败后选择放大倍数暂不写
WIN_00:
LCALL WRITE_LOOP	; 参数写保护
CPL P2.1
LCALL  SHAN_1	 ;调用闪烁子程序
CPL P2.1
LCALL SHAN_1
CPL P2.1
LCALL SHAN_1
SETB P2.1
MOV A,60H
MOV 7CH,A
MOV A,5FH
MOV 7BH,A
;MOV 59H,#02			 ;置请求保存参数标志
MOV 57H,#8			 ;调试计算次数
CLR RS1
RET
RET
;************************数据处理子程序,电流优先
CHULI_I:
SETB RS0
MOV R7,55H
MOV R6,56H
MOV R5,7EH
MOV R4,7DH
LCALL MULD
;******************减电流固定值
;SUBB_0:
MOV A,R2		  	;电流值高字节
CJNE A,66H,	SUBB_1	   ; 判断固定值大小
SUBB_1:JC JIANWAN
XRL A,66h
JZ SUBB_2
SJMP SUBB_3
SUBB_2:
MOV A,R3
CJNE A,67H,SUBB_4
SUBB_4:JC JIANWAN
SUBB_3:CLR C
MOV A,R3
SUBB A,67H
MOV 69H,A		  ;	      电流中间值低八位
MOV A,R2
SUBB A,66H
MOV 68H,A		;	  电流中间值高八位
;CLR RS0
SJMP GOON
JIANWAN:
;CLR RS0
MOV 68H,#00
MOV 69H,#00
;*********************电流告警等级判断
GOON:
MOV A,68H			 ;严重告警高八位
CJNE A,6AH,GOON_0
GOON_0:
JC ZHONGYAO
XRL A,6AH
JZ GOON_1
SJMP LMD_3		 ;转开定时器
GOON_1:
MOV A,69H		  ;严重告警低八位
CJNE A,6BH,GOON_2
GOON_2:
JC ZHONGYAO
LMD_3:
MOV R1,#0B4H
MOV @R1,#0AAH	;电流告警标志置位
INC R1
MOV @R1,#00
INC R1
MOV @R1,#00
MOV A,6FH
CJNE A,#1,OVER_0
OVER_0:JC OVER_1
SETB TR0
CLR RS0
RET
RET
OVER_1:
MOV A,70H
CJNE A,#1,OVER_2
OVER_2:
JC	OVER3
MOV R1,#0B4H
MOV @R1,#0AAH		;电流告警标志置位
SETB TR0
CLR RS0
RET
RET
OVER3:
CLR TR0
CLR RS0
CLR P2.0      ;亮电流告警灯
MOV 79H,#03   ;严重告警类型
MOV 77H,68H  ;严重告警电流值高八位
MOV 78H,69H  ;严重告警电流低八位
MOV R1,#0B9H
MOV 71H,@R1
INC R1
MOV 72H,@R1
INC R1
MOV 73H,@R1
INC R1
MOV 74H,@R1
RET
RET
;*******************重要告警
ZHONGYAO:
MOV A,68H
CJNE A,6CH,GOON_3
GOON_3:
JC YIBAN
XRL A,6CH
JZ GOON_4
SJMP  LMD_2
GOON_4:
MOV A,69H
CJNE A,6DH,GOON_5
GOON_5:
JC	YIBAN
LMD_2:
MOV R1,#0B5H
MOV @R1,#0AAH		;电流告警标志置位
DEC R1
MOV @R1,#00
MOV R1,#0B6H
MOV @R1,#00
MOV A,71H
CJNE A,#1,OVER_3
OVER_3:JC OVER_4
SETB TR0
CLR RS0
RET
RET
OVER_4:
MOV A,72H
CJNE A,#1,OVER_5
OVER_5:
JC	OVER2
MOV R1,#0B5H
MOV @R1,#0AAH		;电流告警标志置位
SETB TR0
CLR RS0
RET
RET
OVER2:
CLR TR0
CLR RS0
CLR P2.0;亮电流告警灯
MOV 79H,#02;重要告警类型
MOV 77H,68H  ;重要告警电流值高八位
MOV 78H,69H  ;重要告警电流低八位
MOV R1,#0B7H
MOV 6FH,@R1
INC R1
MOV 70H,@R1
MOV R1,#0BBH
MOV 73H,@R1
INC R1
MOV 74H,@R1
RET
RET
;*************************一般告警
YIBAN:
MOV A,68H
CJNE A,5CH,GOON_6
GOON_6:
JC SHUNPENG
XRL A,5CH
JZ GOON_7
SJMP  LMD_1
GOON_7:
MOV A,69H
CJNE A,6EH,GOON_8
GOON_8:
JC	SHUNPENG
LMD_1:
MOV R1,#0B6H
MOV @R1,#0AAH		;电流告警标志置位
DEC R1
MOV @R1,#00
DEC R1
MOV @R1,#00
MOV A,73H
CJNE A,#1,OVER_6
OVER_6:JC OVER_7
SETB TR0
CLR RS0
RET
RET
OVER_7:
MOV A,74H
CJNE A,#1,OVER_8
OVER_8:
JC	OVER1
MOV R1,#0B6H
MOV @R1,#0AAH		;电流告警标志置位
SETB TR0
CLR RS0
RET
RET
OVER1:
CLR TR0
CLR RS0
CLR P2.0;亮电流告警灯
MOV 79H,#01;一般告警类型
MOV 77H,68H  ;一般告警电流值高八位
MOV 78H,69H  ;一般告警电流低八位
MOV R1,#0B7H
MOV 6FH,@R1
INC R1
MOV 70H,@R1
INC R1
MOV 71H,@R1
INC R1
MOV 72H,@R1
RET
RET
;*******************电流瞬碰判断	子程序,没有达到告警时间恢复正常的定为瞬碰信息
SHUNPENG:
MOV A,6FH
CJNE A,#1,SHUNPENG_0
SHUNPENG_0:
JNC SHUNPENG_6
MOV A,70H
CJNE A,#1,SHUNPENG_1
SHUNPENG_1:
JNC SHUNPENG_6
MOV A,71H
CJNE A,#1,SHUNPENG_2
SHUNPENG_2:
JNC SHUNPENG_6
MOV A,72H
CJNE A,#1,SHUNPENG_3
SHUNPENG_3:
JNC SHUNPENG_6
MOV A,73H
CJNE A,#1,SHUNPENG_4
SHUNPENG_4:
JNC SHUNPENG_6
MOV A,74H
CJNE A,#1,SHUNPENG_5
SHUNPENG_5:
JC  ZHENGCHANG
SHUNPENG_6:
MOV R1,#0BDH
MOV A,68H			;电流值大于等于190mA,瞬碰有效
CJNE A,#1,SHUNPENG_7
SHUNPENG_7:
JNC SHUNGPENG_8
MOV A,69H
CJNE A,#190,SHUNPENG_9
SHUNPENG_9:
JC ZHENGCHANG
SHUNGPENG_8:
MOV @R1,68H
INC R1
MOV @R1,69H
MOV 2FH,#19		;瞬碰
;*********************正常,无电流告警
ZHENGCHANG:
MOV R1,#00B4H
MOV @R1,#00		 ; 电流告警标志清零
INC R1
MOV @R1,#00
INC R1
MOV @R1,#00
CLR TR0
CLR RS0
SETB P2.0
MOV R1,#0B7H
MOV 6FH,@R1
INC R1
MOV 70H,@R1
INC R1
MOV 71H,@R1
INC R1
MOV 72H,@R1
INC R1
MOV 73H,@R1
INC R1
MOV 74H,@R1
MOV 79H,#0
MOV 77H,68H
MOV 78H,69H
RET
RET
;********************电压数据处理
CHULI_V:
SETB RS0
MOV R7,62H
MOV R6,63H
MOV R5,7CH
MOV R4,7BH
LCALL MULD
;********************减电压固定值
;SUBB_0:
MOV A,R2		  	     ;电压值高字节
CJNE A,#01H,	SUBB_5	 ;判断固定值是否超范围
SUBB_5:JC SUBB_6
MOV R3,#0FFH
SUBB_6:
MOV A,R3
CJNE A,2EH,SUBB_7
SUBB_7:JC JIANWAN1
CLR C
MOV A,R3
MOV 2DH,A		  ;	 电压值中间寄存器
SUBB A,2EH
SJMP GAOJING_V
JIANWAN1:
MOV 2DH,#00
;*************************电压告警判断
GAOJING_V:
MOV A,2DH
CJNE A,2BH,GAOJING_V0
GAOJING_V0:JC LIGHT_OFF
MOV A,75H
CJNE A,#1 ,GAOJING_V1
GAOJING_V1:
JC GAOJING_V2
SETB TR1
CLR RS0
RET
RET
GAOJING_V2:
MOV A,76H
CJNE A,#1,GAOJING_V3
GAOJING_V3:
JC	LIGHT_ON
SETB TR1
CLR RS0
RET
RET
LIGHT_ON:
SETB P2.1		 ;亮电压告警黄灯
CLR TR1
CLR RS0
MOV 2CH,2DH
RET
RET
LIGHT_OFF:
CLR P2.1
MOV R1,#0BFH	;电压告警灵敏度中间寄存器
MOV 75H,@R1
INC R1
MOV 76H,@R1
CLR TR1
CLR RS0
RET
RET
;*******************延时子程序
DELAY:			;延时  100.74us
MOV 52H,#0BEH
DELAY1:
NOP
DJNZ 52H, DELAY1
RET
RET
SHAN_1:
MOV  5BH,#6
DELAY4:MOV  5AH,#0FFH
DELAY5:MOV  42H,#0FFH
DELAY3:NOP
DJNZ 52H,DELAY3
NOP
DJNZ 5AH,DELAY5
NOP
DJNZ 5BH,DELAY4
RET
RET
;*************************;电压延时中断子程序
TIME_V:
PUSH PSW
PUSH ACC
SETB RS0
DJNZ 76H, TIME_V1
DJNZ 75H, TIME_V2
SJMP  S2
TIME_V2:
MOV 76H,#0FFH
TIME_V1:
MOV TH1,#00
MOV TL1,#00
CLR RS0
POP ACC
POP PSW
RETI
RETI
S2:
CLR TR1
CLR RS0
POP ACC
POP PSW
RETI
RETI
;**************************;电流延时中断子程序
TIME_0:
PUSH PSW
PUSH ACC
SETB RS0
MOV R1,#0B4H
MOV A,@R1
CJNE A,#0AAH,YANZHONG_0
DJNZ 70H,TIME_1
DJNZ 6FH,TIME_2
SJMP S0
YANZHONG_0:INC R1
MOV A,@R1
CJNE A ,#0AAH,ZHONGYAO_0
DJNZ 72H,TIME_1
DJNZ 71H,TIME_3
SJMP  S0
ZHONGYAO_0:INC R1
MOV A,@R1
CJNE A,#0AAH,S0;YIBAN_0
DJNZ 74H,TIME_1
DJNZ 73H,TIME_4
;SJMP  S0
S0:
CLR TR0
CLR RS0
POP ACC
POP PSW
RETI
RETI
TIME_1:
MOV TH0,#00
MOV TL0,#00
CLR RS0
POP ACC
POP PSW
RETI
RETI
TIME_2:
MOV 70H,#0FFH
SJMP S1
TIME_3:
MOV 72H,#0FFH
SJMP S1
TIME_4:
MOV 74H,#0FFH
S1:
MOV TH0,#00
MOV TL0,#00
CLR RS0
POP ACC
POP PSW
RETI
RETI
;****************************比较求波峰值
MAX:
MOV A,50H	 ;	  比较高八位
CJNE A,53H,MAX1
MOV A,51H	 ;	  比较低八位
CJNE A,54H,MAX1
MAX1:
JC  MAX2
MOV 53H,50H
MOV 54H,51H
     RET
     RET
MAX2:
	 RET
	 RET
;*********************************标志子程序
BIAOZHI_0: ;电流
LCALL PJXH_0	;转平均系数子程序
SETB RS0
MOV R0,#00
MOV 57H,#8
CLR RS0
RET
RET
BIAOZHI_1: ;电压
LCALL PJXH_1	;转平均系数子程序
SETB RS0
MOV R0,#00
MOV 57H,#8
CLR RS0
RET
RET
;**************************电流平均系数子程序
PJXH_0:
CLR F0
MOV R0,#0016H
MOVX  A,@R0
CJNE A,#0AAH ,JIXU_0
INC R0
MOVX A,@R0
CJNE A,#0AAH,JIXU_0
INC R0
MOVX A,@R0
CJNE A,#0AAH,JIXU_0
MOV A,#00H
MOVX @R0,A;#00H
DEC R0
MOV A,#00H
MOVX @R0,A;#00H
DEC R0
MOV A,#00H
MOVX @R0,A;#00H
MOV 61H,#0BBH	;置电流调试标志位
ACALL DIV_HEV3
MOV A,R5
MOV 5DH,A		;电流最终系数小数
MOV A,R4
MOV 5EH,A		;电流最终系数整数
RET
RET
JIXU_0:
RET
RET
;*****************************电压平均系数子程序
PJXH_1:
CLR F0
MOV R0,#001DH
MOVX  A,@R0
CJNE A,#0AAH ,JIXU_0
INC R0
MOVX A,@R0
CJNE A,#0AAH,JIXU_0
INC R0
MOVX A,@R0
CJNE A,#0AAH,JIXU_0
MOV A,#00H
MOVX @R0,A;#00H
DEC R0
MOV A,#00H
MOVX @R0,A;#00H
DEC R0
MOV A,#00H
MOVX @R0,A;#00H
MOV 65H,#0BBH	;置电压调试标志位
ACALL DIV_HEV3
MOV A,R5
MOV 5FH,A		;电压最终系数小数
MOV A,R4
MOV 60H,A		;电压最终系数整数
RET
RET
;****************************求平均数子程序  和/3
;和R2R3R4R5,商R4R5,余数R2R3
DIV_HEV3:
MOV R5,#00
MOV R4,#00
MOV R0,#0010H
MOV R7,#3
MOV R3,#0
PDV_13:
INC  R0
MOVX A,@R0
ADD  A ,R5
MOV  R5,A
MOV  R4,A
ADDC A,#0
MOV  R4,A
INC  R0
DJNZ R7,PDV_13
MOV R0,#10H
MOV R7,#3
PDV_23:
MOVX A ,@R0
ADD  A ,R4
MOV  R4,A
MOV  A,R3
ADDC A,#0
MOV  R3,A
INC  R0
INC  R0
DJNZ R7,PDV_23
MOV  R2,#0
MOV  R6,#0
MOV  R7,#3
LCALL DIV_2V2
RET
RET
JIXI_0:
RET
RET
;************************校准子程序,被乘数R7R6,乘数R5R4,积R0R1R2R3
MULD:
MOV A,R6
MOV B,R4
MUL AB
MOV R3,A
MOV R2,B
MOV A,R7
MOV B,R4
MUL AB
ADD A,R2
MOV R2,A
MOV A,B
ADDC A,#0
MOV R1,A
MOV A,R6
MOV B,R5
MUL AB
ADD A,R2
MOV R2,A
MOV R0,#0
MOV A,R1
ADDC A,B
MOV R1,A
JNC LAST
INC R0
LAST:
MOV R7,A
MOV B,R5
MUL AB
ADD A,R1
MOV R1,A
MOV A,B
ADDC A,R0
MOV R0,A
RET
RET
;**********************参数写保护子程序
WRITE_LOOP:
MOV DEECON,#00H;初始化DEECON
MOV DEEDAT,#01H;预写入一个测试值
MOV DEEADR,#00H;地址初始值
WRITE_COMPLETE:
MOV A,DEECON
ANL A,#80H
JZ WRITE_COMPLETE
MOV DEECON,#00H;清0写完成标志位
READ1:
MOV DEEADR,#00H
READ_COMPLETE:
MOV A,DEECON
ANL A,#80H
JZ READ_COMPLETE
MOV A,DEEDAT
XRL A,#01
JNZ WRITE_LOOP
MOV A,61H
CJNE A,#0BBH,CANSHU_V
MOV DEECON ,#00
MOV DEEDAT,7EH
MOV DEEADR,#01H
WRITE_COMPLETE1:
MOV A,DEECON
ANL A,#80H
JZ WRITE_COMPLETE1
MOV DEECON,#00
MOV DEEDAT,7DH
MOV DEEADR,#02H
WRITE_COMPLETE2:
MOV A,DEECON

⌨️ 快捷键说明

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