📄 ldxs.asm
字号:
; NOW USING
ORG 0000H
AJMP MAIN
ORG 000BH
LJMP TIMER
ORG 0050H
MAIN: MOV SP,#60H
MOV TMOD,#21H
SETB ET0
MOV TH0,#0FAH
MOV TL0,#0AAH
MOV TH1,#0EAH ;设置串行波特率为1200
MOV TL1,#0EAH
MOV 7EH,#10
MOV 7FH,#10
CLR ES
SETB EA
SETB TR0
MOV P1,#0FFH
MOV P3,#0FFH
CLR P3.3
MOV 30H,#0 ;高位显示缓冲
MOV 31H,#0 ;低位显示缓冲
MOV 32H,#0FFH
MOV 5DH,#10
CLR 00H ; 0通道小于34CM标志
CLR 01H ; 0通道大于150CM
CLR 02H ; 小数点开关
CLR 03H ; 无效数标志
CLR 04H ; 0通道大于90CM标志
CLR 05H ; 1通道小于34CM标志
CLR 06H ; 1通道大于150CM
CLR 07H ; 1通道大于90CM标志
CLR 08H ; 2通道小于34CM标志
CLR 09H ; 2通道大于150CM
CLR 0AH ; 2通道大于90CM标志
CLR 0BH ; 3通道小于34CM标志
CLR 0CH ; 3通道大于150CM
CLR 0DH ; 3通道大于90CM标志
CLR 0EH
CLR 0FH
MOV 30H,#11 ;开机提示显示
MOV 31H,#12
MOV 32H,#0
MOV 33H,#50
WARN: LCALL YSZ1
DJNZ 33H,WARN
MOV PCON,#00H ;设置串行通信
MOV SCON,#50H
SETB TR1
; SJMP SY
LOOP: SETB P3.5
MOV 32H,5CH
; SJMP SY
JNB RI,$
CLR RI
MOV A,SBUF
MOV 52H,A ;接收位置信息
NOP
; CLR P3.5
; MOV 40H,#0
; SJMP MULAB
JNB RI,$
CLR RI
MOV A,SBUF
MOV 41H,A ;接收0通道数码显示低位
NOP
JNB RI,$
CLR RI
MOV A,SBUF ;接收0通道数码显示高位
MOV 42H,A
NOP
JNB RI,$
CLR RI
MOV A,SBUF
MOV 43H,A ;接收1通道数码显示低位
NOP
JNB RI,$
CLR RI
MOV A,SBUF ;接收1通道数码显示低位
MOV 44H,A
NOP
JNB RI,$
CLR RI
MOV A,SBUF
MOV 45H,A ;接收2通道数码显示低位
NOP
JNB RI,$
CLR RI
MOV A,SBUF ;接收2通道数码显示低位
MOV 46H,A
NOP
JNB RI,$
CLR RI
MOV A,SBUF
MOV 47H,A ;接收3通道数码显示低位
NOP
JNB RI,$
CLR RI
MOV A,SBUF ;接收3通道数码显示低位
MOV 48H,A
NOP
CLR P3.5
;-------数据判断---------------
; SY: MOV 52H,#00H
; MOV 41H,#0BH
; MOV 42H,#0FFH
; MOV 43H,#1FH
; MOV 44H,#0FEH
; MOV 45H,#1FH
; MOV 46H,#0FEH
; MOV 47H,#1FH
; MOV 48H,#0FFH
MOV 20H,#0
MOV 5CH,#0FFH ;5CH暂存灯的颜色
CLR C ;判断0通道是否超过150CM
MOV A,41H
SUBB A,#1AH
JC COMP0
JNZ CCU0 ;判断是否相等
CLR C ;43H等于81,则判断44H是否大于90
MOV A,42H
SUBB A,#0FEH
JC COMP0 ;若44H大于或等于90则超过150CM,若小于90则小于150CM
CCU0: SETB 01H ;0通道超过150CM
CLR 00H
CLR 04H
SJMP TD1
COMP0: MOV A,41H ;0通道不超过150CM,则判断是否超过90CM
CLR C
SUBB A,#0DH
JC COMP02
JNZ CCU02
CLR C
MOV A,42H
SUBB A,#1AH
JC COMP02 ;若44H大于或等于46则超过90CM,若小于80则小于90CM
CCU02: SETB 04H
CLR 00H
CLR 01H
SJMP TD1
COMP02: MOV A,#00H ;0通道不超过90CM则判断是否小于34CM
CLR C
SUBB A,41H
JC COMP03
JNZ CCU03
CLR C
MOV A,#27H
SUBB A,42H
JC COMP03
CCU03: SETB 00H
CLR 01H
CLR 04H
SJMP TD1
COMP03: CLR 00H ;0通道在34CM至90CM之间
CLR 01H
CLR 04H
TD1: CLR C ;判断1通道是否超过150CM
MOV A,43H
SUBB A,#1AH
JC COMP1
JNZ CCU1 ;判断是否相等
CLR C ;43H等于66,则判断44H是否大于69
MOV A,44H
SUBB A,#0FEH
JC COMP1 ;若44H大于或等于69则超过150CM,若小于69则小于150CM
CCU1: SETB 06H ;1通道超过150CM
CLR 05H
CLR 07H
SJMP TD2
COMP1: MOV A,43H ;1通道不超过150CM,则判断是否超过90CM
CLR C
SUBB A,#0DH
JC COMP2
JNZ CCU2
CLR C
MOV A,44H
SUBB A,#1AH
JC COMP2
CCU2: SETB 07H
CLR 05H
CLR 06H
SJMP TD2
COMP2: MOV A,#00H ;1通道不超过90CM则判断是否小于34CM
CLR C
SUBB A,43H
JC COMP3
JNZ CCU3
CLR C
MOV A,#27H
SUBB A,44H
JC COMP3
CCU3: SETB 05H
CLR 06H
CLR 07H
SJMP TD2
COMP3: CLR 05H ;1通道在34CM至90CM之间
CLR 06H
CLR 07H
TD2: CLR C ;判断2通道是否超过150CM
MOV A,45H
SUBB A,#1AH
JC COMP1A
JNZ CCU1A ;判断是否相等
CLR C ;45H等于66,则判断46H是否大于69
MOV A,46H
SUBB A,#0FEH
JC COMP1A ;若46H大于或等于69则超过150CM,若小于69则小于150CM
CCU1A: SETB 09H ;2通道超过150CM
CLR 08H
CLR 0AH
SJMP TD3
COMP1A: MOV A,45H ;2通道不超过150CM,则判断是否超过90CM
CLR C
SUBB A,#0DH
JC COMP2A
JNZ CCU2A
CLR C
MOV A,46H
SUBB A,#1AH
JC COMP2A
CCU2A: SETB 0AH
CLR 08H
CLR 09H
SJMP TD3
COMP2A: MOV A,#00H ;2通道不超过90CM则判断是否小于34CM
CLR C
SUBB A,45H
JC COMP3A
JNZ CCU3A
CLR C
MOV A,#27H
SUBB A,46H
JC COMP3A
CCU3A: SETB 08H
CLR 09H
CLR 0AH
SJMP TD3
COMP3A: CLR 08H ;2通道在34CM至90CM之间
CLR 09H
CLR 0AH
TD3: CLR C ;判断3通道是否超过150CM
MOV A,47H
SUBB A,#1AH
JC COMP1B
JNZ CCU1B ;判断是否相等
CLR C ;47H等于66,则判断48H是否大于69
MOV A,48H
SUBB A,#0FEH
JC COMP1B ;若48H大于或等于69则超过150CM,若小于69则小于150CM
CCU1B: SETB 0CH ;3通道超过150CM
CLR 0BH
CLR 0DH
SJMP TD4
COMP1B: MOV A,47H ;3通道不超过150CM,则判断是否超过90CM
CLR C
SUBB A,#0DH
JC COMP2B
JNZ CCU2B
CLR C
MOV A,48H
SUBB A,#1AH
JC COMP2B
CCU2B: SETB 0DH
CLR 0BH
CLR 0CH
SJMP TD4
COMP2B: MOV A,#00H ;3通道不超过90CM则判断是否小于34CM
CLR C
SUBB A,47H
JC COMP3B
JNZ CCU3B
CLR C
MOV A,#27H
SUBB A,48H
JC COMP3B
CCU3B: SETB 0BH
CLR 0CH
CLR 0DH
SJMP TD4
COMP3B: CLR 0BH
CLR 0CH
CLR 0DH
TD4: LJMP CONA1
MULAB: MOV A,41H ;判断是否为无效数据
CPL A
JNZ CONA1
MOV A,42H
CPL A
JNZ CONA1
LCALL YSZ1
DJNZ 5DH,LOOP1
MOV 5DH,#8
SJMP LOOP2
LOOP1: LJMP LOOP
LOOP2: MOV A,43H ;判断是否为无效数据
CPL A
JNZ CONA1
MOV A,44H
CPL A
JNZ CONA1
LCALL YSZ1
DJNZ 5DH,LOOP1A
MOV 5DH,#8
SJMP LOOP3
LOOP1A: LJMP LOOP
LOOP3: MOV A,45H ;判断是否为无效数据
CPL A
JNZ CONA1
MOV A,46H
CPL A
JNZ CONA1
LCALL YSZ1
DJNZ 5DH,LOOP1B
MOV 5DH,#8
SJMP LOOP4
LOOP1B: LJMP LOOP
LOOP4: MOV A,47H ;判断是否为无效数据
CPL A
JNZ CONA1
MOV A,48H
CPL A
JNZ CONA1
LCALL YSZ1
DJNZ 5DH,LOOP1C
MOV 5DH,#8
SJMP LOOP5
LOOP1C: LJMP LOOP
LOOP5: MOV 30H,#0AH
MOV 31H,#0AH
CLR 00H
CLR 01H
CLR 02H
SETB 03H
LJMP XSA2
CONA1: MOV A,52H ;距离换算
CLR C
RLC A
ADD A,#41H
MOV R0,A
CLR 03H
MOV R3,#0
MOV A,@R0
MOV R4,A
INC R0
MOV A,@R0
MOV R5,A
MOV R2,#0
MOV R6,#0
MOV R7,#39
LCALL D457
MOV A,R3 ;误差修正
ADD A,#15
MOV R3,A
CLR C ;是否超过70?
MOV A,R3
MOV 7BH,A
SUBB A,#70
JC RUB1 ;是否超过70?
MOV R5,A ;大于70需除以3
MOV R4,#0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -