?? soc080225.asm
字號:
MOV R3,#01H
MOV SUM3,#00H
MOV SUM1,@R0
INC R0
MOV SUM2,@R0
INC R0
PXCPP08:
MOV PJB,R0
MOV A,@R0
JNZ PXCPP081
INC R0
MOV A,@R0
JNZ PXCPP081
MOV R4,SUM1
MOV R5,SUM2
MOV R6,SUM3
LCALL DIV31
MOV DQXS1,R4
MOV DQXS2,R5
RET
PXCPP081:
MOV R0,PJB
MOV A,SUM1
ADD A,@R0
INC R0
MOV SUM1,A
MOV A,SUM2
ADDC A,@R0
INC R0
MOV SUM2,A
MOV A,SUM3
ADDC A,#00H
MOV SUM3,A
INC R3
SJMP PXCPP08
PXCPP8:
LCALL PXCPT
MOV A,ADAT1
CLR C
SUBB A,SCAD1L
MOV A,ADAT2
SUBB A,SCAD1H
JNC PXCPP81 ;;;>=1d時判斷擺動還是抖動.
MOV R3,#10H
MOV A,LED1
SETB ACC.0 ;;;<1d時直接顯示,穩定狀態燈亮.
MOV LED1,A
SETB WDBB
PXCPP801:
JMP PXCPP86
PXCPP81:
MOV A,ADAT1
CLR C
SUBB A,SCAD2L
MOV A,ADAT2
SUBB A,SCAD2H
JC PXCPP802 ;;;<4d時,穩定狀態燈滅,直接顯示.
LCALL PXCPR ;;;>=4d時判斷穩定還是抖動狀態
MOV A,LED1
CLR ACC.0 ;;;穩定狀態燈滅.
MOV LED1,A
JNB BDB,PXCPP82 ;;;抖動時處理
RET
PXCPP802:
MOV A,LED1
CLR ACC.0 ;;;穩定狀態燈滅.
MOV LED1,A
MOV R3,#10H
JMP PXCPP86
PXCPP82:
MOV R4,SUM1
MOV R5,SUM2
MOV R6,SUM3
MOV R3,#10H
LCALL DIV31
MOV R0,#QUE1
MOV R2,#08H
MOV R3,#10H
PXCPP83:
MOV PJB,R0
MOV A,@R0
CLR C
SUBB A,R4
INC R0
MOV A,@R0
SUBB A,R5
INC R0
JNC PXCPP84
INC R0
INC R0
DJNZ R2,PXCPP83
SJMP PXCPP86
PXCPP84:
MOV A,@R0
CLR C
SUBB A,R4
INC R0
MOV A,@R0
SUBB A,R5
INC R0
JNC PXCPP85
DJNZ R2,PXCPP83
SJMP PXCPP86
PXCPP85:
MOV A,SUM1
MOV R1,PJB
CLR C
SUBB A,@R1
MOV SUM1,A
MOV A,SUM2
INC R1
SUBB A,@R1
MOV SUM2,A
INC R1
MOV A,SUM3
SUBB A,#00H
MOV SUM3,A
MOV A,SUM1
CLR C
SUBB A,@R1
MOV SUM1,A
MOV A,SUM2
INC R1
SUBB A,@R1
MOV SUM2,A
INC R1
MOV A,SUM3
SUBB A,#00H
MOV SUM3,A
DEC R3
DEC R3
DJNZ R2,PXCPP83
PXCPP86:
MOV R4,SUM1
MOV R5,SUM2
MOV R6,SUM3
LCALL DIV31
MOV 06H,R5
MOV 05H,R4
PXCPP09: ;;;;;;;;;;;;;;;;;;;;
MOV DQXS1,R5 ;;;2,直接送顯示
MOV DQXS2,R6
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PXCPT: ;;;求最值,同時求出序列中所有數據的和.
MOV R1,#QUE1
MOV R0,#QUE2
MOV ADMIN,R1
MOV ADMAX,R1
MOV MIN1,@R1
MOV MAX1,MIN1
INC R1
MOV MIN2,@R1
MOV MAX2,MIN2
MOV R2,#0FH
MOV SUM1,MIN1
MOV SUM2,MIN2
MOV SUM3,#00H
PXCPT1:
MOV A,@R0
CLR C
SUBB A,MAX1
INC R0
MOV A,@R0
SUBB A,MAX2
JC PXCPT2
DEC R0
MOV ADMAX,R0
MOV MAX1,@R0
INC R0
MOV MAX2,@R0
MOV A,MAX1
ADD A,SUM1
MOV SUM1,A
MOV A,MAX2
ADDC A,SUM2
MOV SUM2,A
MOV A,SUM3
ADDC A,#00H
MOV SUM3,A
SJMP PXCPT3
PXCPT2:
DEC R0
MOV A,@R0
CLR C
SUBB A,MIN1
INC R0
MOV A,@R0
SUBB A,MIN2
JNC PXCPT03
DEC R0
MOV ADMIN,R0
MOV MIN1,@R0
INC R0
MOV MIN2,@R0
MOV A,MIN1
ADD A,SUM1
MOV SUM1,A
MOV A,MIN2
ADDC A,SUM2
MOV SUM2,A
MOV A,SUM3
ADDC A,#00H
MOV SUM3,A
SJMP PXCPT3
PXCPT03:
DEC R0
MOV A,@R0
ADD A,SUM1
MOV SUM1,A
INC R0
MOV A,@R0
ADDC A,SUM2
MOV SUM2,A
MOV A,SUM3
ADDC A,#00H
MOV SUM3,A
PXCPT3:
INC R0
DJNZ R2,PXCPT1
MOV A,MAX1
CLR C
SUBB A,MIN1
MOV ADAT1,A
MOV A,MAX2
SUBB A,MIN2
MOV ADAT2,A
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PXCPR: ;;;功能說明:判斷QUE中是否存在遞增或遞減,從而判斷是單擺還是抖動
MOV A,ADMIN
CLR C
SUBB A,#83H
JNC PXCPR1
LCALL PXCPRR
JNB BDB,PXCPR5
RET
PXCPR1:
MOV A,ADMIN
CLR C
SUBB A,#9DH
JC PXCPR4
PXCPR2:
LCALL PXCPRL
JNB BDB,PXCPR5
PXCPR3:
RET
PXCPR4:
LCALL PXCPRR
JB BDB,PXCPR3
SJMP PXCPR2
PXCPR5:
MOV A,ADMAX
CLR C
SUBB A,#83H
JNC PXCPR6
LCALL PXCPXR
RET
PXCPR6:
MOV A,ADMAX
CLR C
SUBB A,#9DH
JC PXCPR7
LCALL PXCPXL
RET
PXCPR7:
LCALL PXCPXL
JB BDB,PXCPR8
LCALL PXCPXR
PXCPR8:
RET
PXCPXL: ;;;識別左邊是否遞增
MOV A,ADMAX
ADD A,#06H
MOV R0,A
INC A
INC A
MOV R1,A
MOV R2,#02H
SJMP PXCPRR1 ;;;;;;;;;;;;;;;;;;;;;;
PXCPXR: ;;;識別右邊是否遞減
MOV A,ADMAX
ADD A,#02H
MOV R1,A
INC A
INC A
MOV R0,A
MOV R2,#02H
SJMP PXCPRR1
PXCPRR: ;;;識別右邊是否遞增
MOV A,ADMIN ;;;識別最小值右邊
INC A
INC A
MOV R0,A
INC A
INC A
MOV R1,A
MOV R2,#02H
PXCPRR1:
MOV A,@R1
CLR C
SUBB A,@R0
MOV PJB,A
INC R0
INC R1
MOV A,@R1
SUBB A,@R0
JC PXCPRR2 ;;;轉入對ADMAX判斷.
JNZ PXCPRR01 ;;;小于時
MOV A,PJB
JNZ PXCPRR01
INC R2 ;;;等于時
PXCPRR01:
INC R0
INC R1
DJNZ R2,PXCPRR1
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -