📄 ldd2.asm
字号:
BTFSC STATUS,0
GOTO SUBD1 ;选出小数50H51H
SUB1: MOVF 52H,0
SUBWF 54H,0
BTFSS STATUS,0
GOTO SUB2 ;选出小数54H55H
BTFSS STATUS,2
GOTO SUBD2 ;选出小数52H53H
MOVF 53H,0
SUBWF 55H,0
BTFSC STATUS,0
GOTO SUBD2 ;选出小数52H53H
GOTO SUB2 ;选出小数54H55H
SUBD1: MOVF 50H,0
SUBWF 54H,0
BTFSS STATUS,0
GOTO SUB11 ;选出小数54H55H
BTFSS STATUS,2
GOTO SUBD11 ;选出小数50H51H
MOVF 51H,0
SUBWF 55H,0
BTFSC STATUS,0
GOTO SUBD11 ;选出小数50H51H
SUB11: MOVF 54H,0
SUBWF 56H,0
BTFSS STATUS,0
GOTO SUB3 ;选出最小数56H57H
BTFSS STATUS,2
GOTO SUBD3 ;选出最小数54H55H
MOVF 55H,0
SUBWF 57H,0
BTFSC STATUS,0
GOTO SUBD3 ;选出最小数54H55H
GOTO SUB3 ;选出最小数56H57H
SUBD11: MOVF 50H,0
SUBWF 56H,0
BTFSS STATUS,0
GOTO SUB3 ;选出最小数56H57H
BTFSS STATUS,2
GOTO SUBD311 ;选出最小数50H51H
MOVF 51H,0
SUBWF 55H,0
BTFSC STATUS,0
GOTO SUBD311 ;选出最小数50H51H
GOTO SUB3 ;选出最小数56H57H
SUB2: MOVF 54H,0
SUBWF 56H,0
BTFSS STATUS,0
GOTO SUB3 ;选出最小数56H57H
BTFSS STATUS,2
GOTO SUBD3 ;选出最小数54H55H
MOVF 55H,0
SUBWF 57H,0
BTFSC STATUS,0
GOTO SUBD3 ;选出最小数54H55H
GOTO SUB3 ;选出最小数56H57H
SUBD2: MOVF 52H,0
SUBWF 56H,0
BTFSS STATUS,0
GOTO SUB3 ;选出最小数56H57H
BTFSS STATUS,2
GOTO SUBD211 ;选出最小数52H53H
MOVF 53H,0
SUBWF 57H,0
BTFSC STATUS,0
GOTO SUBD211 ;选出最小数52H53H
GOTO SUB3 ;选出最小数56H57H
SUBD211: MOVF 52H,0
MOVWF 27H
MOVF 53H,0
MOVWF 28H
MOVLW 03H
MOVWF 43H ;43H存放最小距离通道数
MOVF 43H,0
GOTO MMM
SUBD311: MOVF 50H,0
MOVWF 27H
MOVF 51H,0
MOVWF 28H
MOVLW 00H
MOVWF 43H
MOVF 43H,0
GOTO MMM
SUB3: MOVF 56H,0
MOVWF 27H
MOVF 57H,0
MOVWF 28H
MOVLW 01H
MOVWF 43H
MOVF 43H,0
GOTO MMM
SUBD3: MOVF 54H,0
MOVWF 27H
MOVF 55H,0
MOVWF 28H
MOVLW 02H
MOVWF 43H
MOVF 43H,0
MMM: BCF STATUS,5 ;发送串行数据
; MOVF 45H,0
; MOVLW 00H
MOVWF TXREG ;先发送位置信息
BSF STATUS,5
MUOE1: BTFSS TXSTA,1
GOTO MUOE1
BCF STATUS,0
BCF STATUS,5
RLF 43H,1
RLF 43H,1
RLF 43H,1
RLF 43H,1
RLF 43H,1
RLF 43H,0
MOVWF PORTB
BSF STATUS,5
; LCALL YSZ
BCF STATUS,5
MOVF 50H,0 ;00通道
; MOVLW 1FH
MOVWF TXREG ;发送时间数高位
BSF STATUS,5
MUOE: BTFSS TXSTA,1
GOTO MUOE
; LCALL YSZ
BCF STATUS,5
MOVF 51H,0
; MOVLW 0FFH
MOVWF TXREG ;发送时间数低位
; INCF 45H
BSF STATUS,5
SSS: BTFSS TXSTA,1
GOTO SSS
; LCALL YSZ
BCF STATUS,5
MOVF 56H,0 ;01通道
; MOVLW 1AH
; MOVF 50H,0
MOVWF TXREG
BSF STATUS,5
SSS1: BTFSS TXSTA,1
GOTO SSS1
; LCALL YSZ
BCF STATUS,5
MOVF 57H,0
; MOVLW 0FDH
; MOVF 51H,0
MOVWF TXREG
BSF STATUS,5
SSS2: BTFSS TXSTA,1
GOTO SSS2
BCF STATUS,5
; LCALL YSZ
MOVF 54H,0 ;02通道
; MOVLW 12H
; MOVF 50H,0
MOVWF TXREG
BSF STATUS,5
SSS3: BTFSS TXSTA,1
GOTO SSS3
BCF STATUS,5
; LCALL YSZ
MOVF 55H,0
; MOVLW 46H
; MOVF 51H,0
MOVWF TXREG
BSF STATUS,5
SSS4: BTFSS TXSTA,1
GOTO SSS4
BCF STATUS,5
; LCALL YSZ
MOVF 52H,0 ;03通道
; MOVLW 02H
; MOVF 50H,0
MOVWF TXREG
BSF STATUS,5
SSS5: BTFSS TXSTA,1
GOTO SSS5
BCF STATUS,5
; LCALL YSZ
MOVF 53H,0
; MOVLW 25H
; MOVF 51H,0
MOVWF TXREG
BSF STATUS,5
SSS6: BTFSS TXSTA,1
GOTO SSS6
BCF STATUS,5
MOVF 27H,0
MOVWF 49H
MOVF 28H,0
MOVWF 47H
; MOVLW 19H
; MOVWF 3DH
; MOVLW 03H
; MOVWF 2FH
; BTFSC 4FH,6 ;若4个通道都没有回复信号则使4个通道时间数为0FFH
GOTO TAH
MOVLW 0FFH
MOVWF 50H
MOVWF 51H
MOVWF 52H
MOVWF 53H
MOVWF 54H
MOVWF 55H
MOVWF 56H
MOVWF 57H
TAH: ; BCF 4FH,6
COMF 49H,0 ;判断49H是否为0FFH
BTFSS STATUS,2
GOTO GOON
COMF 47H,0 ;判断47H是否为0FFH
BTFSC STATUS,2
GOTO AMP2
GOON: BCF STATUS,0
MOVF 47H,0 ;47H加上44
ADDLW 2CH
MOVWF 47H
BTFSC STATUS,0 ;是否有进位?
INCF 49H,1 ;有进位则49H加上1
MOVF 49H,0 ;49H加上1
ADDLW 00H
MOVWF 49H
BCF 4FH,2 ;4FH,2和4FH,3为0则为蜂鸣器断续响
BCF 4FH,3
BCF 4FH,7 ;是中间通道则置该标记位
; GOTO FAR1
MOVLW 01H ;判断是否中间的两个通道
SUBWF 43H,0
BTFSS STATUS,0
BSF 4FH,7 ;是中间通道则置该标记位
MOVF 43H,0
SUBLW 02H
BTFSS STATUS,0
BSF 4FH,7 ;是中间通道则置该标记位
FAR1: MOVLW 00H ;判断49H47H内容是否小于014AH(34CM)
SUBWF 49H,0
BTFSC STATUS,0
GOTO SOUND1 ;去判断是否相等和低位大小判断
BSF 4FH,2 ;49H47H内容小于014AH则置一直打开标志位
BCF 4FH,3
GOTO JJ5
SOUND1: BTFSS STATUS,2
GOTO AMP ;去判断是否超过150程序段
MOVLW 5AH ;判断47H内容是否小于4AH
SUBWF 47H,0
BTFSC STATUS,0
GOTO AMP ;去判断是否超过150程序段
BSF 4FH,2 ;49H47H内容小于014AH则置一直打开标志位
BCF 4FH,3
GOTO JJ5
AMP: ; BTFSC 4FH,7 ;若该位为低则为两边通道转判断是否大于90CM程序段
; GOTO NNR1
MOVF 49H,0 ;判断49H47H内容是否大于1D4CH
SUBLW 1DH
BTFSS STATUS,0
GOTO NNR1 ;49H47H内容大于1D4CH去超过150处理程序段
BTFSS STATUS,2
GOTO AMP3
MOVF 47H,0
SUBLW 4CH
BTFSS STATUS,0
GOTO NNR1 ;49H47H内容大于1D4CH去超过150处理程序段
GOTO AMP3
NNR1: MOVF 49H,0 ;判断49H47H内容是否大于0ED8H(90CM)
SUBLW 0EH
BTFSS STATUS,0
GOTO AMP22
BTFSS STATUS,2
GOTO AMP3
MOVF 47H,0
SUBLW 0D8H
BTFSS STATUS,0
GOTO AMP22
GOTO AMP3
AMP22: BSF 4FH,5 ;大于90CM标志位
MOVLW 23H ;给45H中存放固定频率值
MOVWF 4AH
BCF 4FH,2
BCF 4FH,3
GOTO JJ5
AMP2: BSF 4FH,3 ;该位为高则一直关断.
BCF 4FH,2 ;该位为高则一直打开.
BCF 4FH,5
GOTO JJ5
AMP3: BCF 4FH,5
GOTO JJ5
JJ5: BCF STATUS,0
MOVF 49H,0
SUBLW 0EH
BTFSC STATUS,0
GOTO JJ5B
MOVLW 08H
MOVWF 4BH
GOTO KKK2
JJ5B: BCF STATUS,0
MOVF 49H,0
SUBLW 0CH
BTFSC STATUS,0
GOTO JJ5C
MOVLW 07H
MOVWF 4BH
GOTO KKK2
JJ5C: BCF STATUS,0
MOVF 49H,0
SUBLW 0AH
BTFSC STATUS,0
GOTO JJ5D
MOVLW 06H
MOVWF 4BH
GOTO KKK2
JJ5D: BCF STATUS,0
MOVF 49H,0
SUBLW 08H
BTFSC STATUS,0
GOTO JJ5E
MOVLW 05H
MOVWF 4BH
GOTO KKK2
JJ5E: BCF STATUS,0
MOVF 49H,0
SUBLW 06H
BTFSC STATUS,0
GOTO JJ5F
MOVLW 04H
MOVWF 4BH
GOTO KKK2
JJ5F: BCF STATUS,0
MOVF 49H,0
SUBLW 04H
BTFSC STATUS,0
GOTO JJ5G
MOVLW 03H
MOVWF 4BH
GOTO KKK2
JJ5G: BCF STATUS,0
MOVF 49H,0
SUBLW 02H
BTFSC STATUS,0
GOTO JJ5H
MOVLW 02H
MOVWF 4BH
GOTO KKK2
JJ5H: MOVLW 01H
MOVWF 4BH
GOTO KKK2
KKK2:
BCF STATUS,5
BCF STATUS,0
UUU: BCF STATUS,5
CONTT1: ; MOVLW 0C8H
; MOVWF 4DH
BCF 4FH,0 ;清赋值标志
BACK3: GOTO KIS2
BTFSS 4FH,2
GOTO KIS1
BCF PORTA,1
GOTO BACK33
KIS1: BTFSS 4FH,3
GOTO KIS2
BSF PORTA,1
GOTO BACK33
KIS2: ; DECFSZ 4CH,1
; GOTO BACK33
; MOVLW 0C8H
; MOVWF 4CH
BACK33: MOVLW 05H
MOVWF TMR0
BSF INTCON,5
BCF INTCON,2
BCF PIR2,0 ;清0
BSF PORTB,3 ;试验信号
RETFIE
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -