📄 adc0808.asm
字号:
DPH_TEMP EQU 20H
DPL_TEMP EQU 21H
ORG 0000H
LJMP STAT
ORG 0013H
LJMP PINT1
ORG 0100H
STAT: MOV DPH_TEMP,#3EH
MOV DPL_TEMP,#0F8H
MOV R1,#40H
MOV R7,#08H
MOV 4EH,#0AH
SETB IT1
KK: SETB EX1
SETB EA
MOV DPTR,#3EF8H
MOVX @DPTR,A
NOP
NOP
LCALL DY10MS
MOV P1,4AH
NOP
NOP
LJMP KK
PINT1:PUSH Acc
PUSH 0F0H
PUSH PSW
PUSH DPL
PUSH DPH
MOV DPH,DPH_TEMP
MOV DPL,DPL_TEMP
MOVX A,@DPTR
MOV @R1,A
DJNZ 4EH,XXXX
SJMP NNNN
XXXX:INC R1
MOV A,#01H
XRL DPL_TEMP,A
MOV DPL,DPL_TEMP
MOVX @DPTR,A
SJMP GRETI
NNNN:CLR EX1
LCALL AVER1
LCALL AVER2
MOV 4EH,#0AH
MOV R1,#40H ;R1重新回到原来地址
MOV DPL_TEMP,#0F8H
GRETI:POP DPH
POP DPL
POP PSW
POP 0F0H
POP Acc
RETI
AVER1:
PUSH 02H
MOV 4CH,#00H
MOV R2,#05H
MOV 4AH,#00H
MOV R0,#40H
AG1:MOV A,@R0
MOV B,#05H ;置除数
DIV AB ;每一项除以05H
ADD A,4AH ;平均值累加
MOV 4AH,A ;回存
MOV A,B ;读余数
ADD A,4CH ;每一项余数累加
MOV 4CH,A ;回存
CLR C
SUBB A,#05H ;余数试减05H
JC T ;余数累加值<05H否?
INC 4AH ;余数累加值>05H,4AH自加1
MOV 4CH,A ;将余数累加值-05H后,回存
T:INC R0 ;
INC R0 ;步长为2
DJNZ R2,AG1 ;到5次了吗?
MOV A,4CH ;5次到了
CJNE A,#03H,T11 ;与03相比较
T11:JC T12 ;余数<03吗?
INC 4AH ;余数>03,4AH自加1
T12:POP 02H
RET ;余数<03H,返回
;=======================================================
; 求5次测量油压的平均值
;入口:温度测量值41H 43H 45H 47H 49H
;出口:温度平均值4BH 温度平均值余数4DH
;占用资源:R0 R2 A B
;=======================================================
AVER2:
PUSH 02H
MOV 4DH,#00H
MOV R2,#05H
MOV 4BH,#00H
MOV R0,#41H
AG2:MOV A,@R0
MOV B,#05H
DIV AB
ADD A,4BH
MOV 4BH,A
MOV A,B
ADD A,4DH
MOV 4DH,A
CLR C
SUBB A,#05H
JC T2
INC 4BH
MOV 4DH,A
T2:INC R0
INC R0
DJNZ R2,AG2
MOV A,4CH
CJNE A,#03H,T21
T21:JC T22
INC 4BH
T22:
POP 02H
RET
DY10MS:
MOV R2,#6
DLP1:MOV R3,#250
DLP2:DJNZ R3,DLP2
DJNZ R2,DLP1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -