📄 lix1.asm
字号:
CON_0809 EQU 09FF0H
CON_8279 EQU 5FFFH
DAT_8279 EQU 5EFEH
DISPMEM DATA 40H
OVER EQU 7DH
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0INT
ORG 0030H
MAIN:MOV SP,#60H
MOV TMOD,#01H
MOV R5,#10
INIT:MOV DPTR,#CON_8279
MOV A,#00H
MOV A,#34H
MOVX @DPTR,A
MOV A,#0DCH
MOVX @DPTR,A
L8: MOVX A,@DPTR
JB ACC.7,L8
MOV 20H,#0
MOV 21H,#0
MOV 22H,#0
MOV 23H,#0
MOV 24H,#0
MOV 25H,#0
CLR 29H.0
NEXT1:MOV TL0,#0E0H
MOV TH0,#0B1H
MOV R1,#30H
MOV R4,#8
MOV R3,#50
MOV R2,#0
SETB EA
SETB ET0
SETB TR0
SETB IT0
MOV R5,#10
SETB 29H.1
L1: LCALL DISP
JB 29H.0,DO
MOV R5,#10
SETB 29H.1
CLR 29H.0
DO: LCALL DELAY
LJMP L1
T0INT:PUSH DPH
PUSH DPL
MOV R4,#8
DJNZ R3,D1
JB 29H.1,LL1
LJMP LL2
D1: LJMP NEXT3
LL1: CLR 29H.1
MOV DPTR,#0000H
LL2: PUSH DPH
PUSH DPL
MOV DPTR,#CON_0809
MOV A,R2
MOVX @DPTR,A
JB P1.3,$
MOVX A,@DPTR
POP DPL
POP DPH
MOVX @DPTR,A
INC DPTR
INC R2
DJNZ R4,LL2
DJNZ R5,D2
SETB 29H.0
LJMP FILTER
D2: LJMP NEXT2
;*********************数字滤波************
FILTER:PUSH PSW
MOV PSW,10H
PUSH ACC
MOV DPTR,#00
MOV R7,#8
MOV R5,#8
MOV R1,#30H
MOV A,#00H
MOV R4,A
MOV R3,A
L4:MOVX A,@DPTR
MOVX @R1,A
MOV R6,#9
L2:INC DPTR
DJNZ R7,L2
MOVX A,@DPTR
MOV R2,A
ADD A,@R1
MOVX @R1,A
INC R1
MOV A,@R1
ADDC A,#0
MOV @R1,A
MOV A,R2
CLR C
SUBB A,R4
JC FILTER31
MOV A,@R1
MOV R4,A
SJMP FILTER32
FILTER31:
MOV A,R2
CLR C
SUBB A,R3
JNC FILTER32
MOV A,R2
MOV R3,A
FILTER32:
MOV R7,#8
DEC R1
DJNZ R6,L2
CLR C
MOV A,@R1
SUBB A,R4
INC R1
XCH A,@R1
SUBB A,#00H
XCH A,@R1
SUBB A,R3
MOV R4,#03H
L7:CLR C ;(31H30H)/8
RRC A
MOV @R1,A
DEC R1
MOV A,@R1
RRC A
MOV @R1,A
DJNZ R4,L7
INC R1
INC R1
MOV A,@R1
SUBB A,#00H
MOV @R1,A
INC R1
MOV R4,#71H
L3:PUSH ACC
CLR C
MOV A,DPL
SUBB A,#1
MOV DPL,A
MOV A,DPH
SUBB A,#0
MOV DPH,A
POP ACC
DJNZ R4,L3
DJNZ R5,L4
POP ACC
POP PSW
;************线性化*******************
MOV R0,#30H
MOV R7,7
BACK: CLR A
BACK1:PUSH ACC
MOV DPTR,#VOL
MOVC A,@A+DPTR
SUBB A,@R0
JZ EQUEL
JNC GREAT
POP ACC
INC ACC
LCALL BACK1
EQUEL: POP ACC
MOV R1,A
ADD A,R1
MOV DPTR,#TEM
MOVC A,@A+DPTR
MOV 30H,A
INC ACC
MOVC A,@A+DPTR
MOV 31H,A
JMP LOOP
GREAT:POP ACC
MOV R1,A
MOV DPTR,#VOL
MOVC A,@A+DPTR
MOV R2,A
MOV A,R1
DEC ACC
MOVC A,@A+DPTR
MOV R3,A
MOV A,R2
CLR C
SUBB A,R3
MOV B,A
MOV R2,A
MOV A,#10
DIV AB
MOV R4,A
MOV A,B
JB ACC.7,ROUND
CLR C
RLC A
SUBB A,R2
JC L11
ROUND:MOV A,R4
ADD A,#1
L11: MOV A,R4
MOV R4,A
MOV A,30H
SUBB A,R3
MOV B,R4
MUL AB
MOV R4,A
MOV R5,B
MOV A,R1
ADD A,R1
MOV DPTR,#TEM
DEC ACC
DEC ACC
PUSH ACC
MOVC A,@A+DPTR
MOV R1,A
POP ACC
INC ACC
MOVC A,@A+DPTR
ADD A,R4
MOV 30H,A
MOV A,R1
ADDC A,R5
MOV 31H,A
LOOP:INC R0
INC R0
DJNZ R7,BACK
;************数制转换*******************
MOV R6,#8
MOV R1,#30H
LL5: MOV R2,#0
L5: MOV A,#8
SUBB A,R2
JZ LL5
MOV A,@R1
MOV R5,A
INC R1
MOV A,@R1
MOV R4,A
MOV R7,#100
MOV R6,#8
DV51: MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
MOV F0,C
CLR C
SUBB A,R7
ANL C,/F0
JC DV52
MOV R4,A
DV52: CPL C
MOV A,R3
RLC A
MOV R3,A
DJNZ R6,DV51
MOV A,R3
MOV 22H,A
MOV A,R4
MOV B,#10
DIV AB
MOV 21H,A
MOV 20H,B
MOV 23H,#0AH
MOV 24H,#0AH
MOV 25H,R2
INC R2
INC R1
INC R1
LCALL DISP
LCALL DELAY
DJNZ R6,L5
NEXT2:MOV R3,#50
NEXT3:MOV TL0,#0E0H
MOV TH0,#0B1H
POP DPL
POP DPH
RETI
; ****************************显示***************
DISP:MOV DPTR,#CON_8279
MOV A,#92H
MOVX @DPTR,A
MOV R0,#20H
MOV R4,#6
L17: MOV A,@R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV DPTR,#DAT_8279
INC R0
MOVX @DPTR,A
DJNZ R4,L17
RET
;*************************DELAY*********************
DELAY:PUSH PSW
SETB PSW.3
MOV R5,#10
K2: MOV R7,#00H
K1: MOV R6,#00H
DJNZ R6,$
DJNZ R7,K1
DJNZ R5,K2
POP PSW
RET
TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H,0BFH
VOL: DB 0,5,10,15,20,25,30,35,40,45,50
DB 56,61,66,71,76,81,86,91,95,100
DB 106,110,115,120,125,131,135,140,145,150
DB 156,161,166,171,176,182,187,192,197,202
DB 208,213,218,223,228,234,239,244,249,255
TEM : DW 0,10,20,30,40,50,60,70,80,90,100
DW 110,120,130,140,150,160,170,180,190,200,210,220,230,240
DW 250,260,270,280,290,300,310,320,330,340,350,360,370,380,390,400
DW 410,420,430,440,450,460,470,480,490,500
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -