📄 yydcld.asm
字号:
Label_003D BSF 0x24 , 03
MOVLW 0x05
MOVWF 0x4F
Label_0041 MOVLW 0x05
MOVWF 0x7E
MOVLW 0x5C
MOVWF 0x7F
RETURN
Label_003E MOVF 0x0F , W
MOVWF 0x7E
MOVF 0x0E , W
MOVWF 0x7F
CALL delay50us
BTFSS PORTB , 07
GOTO Label_003F
MOVLW 0x0A
SUBWF 0x7E , W
BTFSC STATUS , C
GOTO Label_0042
MOVLW 0x00
SUBWF 0x7F , W
BTFSS STATUS , C
GOTO Label_003D
Label_0042 BTFSS 0x24 , 03
RETURN
DECFSZ 0x4F , f
GOTO Label_0041
BCF 0x24 , 03
RETURN
Label_0038 MOVLW 0x25
MOVWF 0x7E
CLRF 0x7F
GOTO Label_0043
wait32ms BTFSS 0x0F , 07
GOTO wait32ms
RETURN
;===================================================
;delay50us
;==================================================
delay50us MOVLW 0x18
MOVWF 0x78
Label_0044 CLRWDT
DECFSZ 0x78 , f
GOTO Label_0044
RETURN
;=========================================================
;0x25存放探头故障(主要是探头没插)标志 总余震大于700us
;==========================================================
detect_sensor
CALL send_no1_ultra
MOVLW 0x07
CALL delay100nus
BTFSS PORTB , 04 ;为1跳转 no1
BSF 0x25 , 00 ;UR1/RB4=0,有故障
MOVLW 0xC8 ;200
CALL delay100nus
CALL send_no2_ultra
MOVLW 0x07
CALL delay100nus
BTFSS PORTB , 05 ;为1跳转 no2
BSF 0x25 , 01 ;UR2/RB5=0,有故障
MOVLW 0xC8 ;200
CALL delay100nus
CALL send_no3_ultra
MOVLW 0x07
CALL delay100nus
BTFSS PORTB , 06 ;为1跳转 no3
BSF 0x25 , 02 ;UR3/RB6=0,有故障
MOVLW 0xC8
CALL delay100nus
CALL send_no4_ultra
MOVLW 0x07
CALL delay100nus
BTFSS PORTB , 07 ;为1跳转 no4
BSF 0x25 , 03 ;UR4/RB7=0,有故障
MOVLW 0xC8
CALL delay100nus
RETURN
Label_0001 CALL Label_0045 ;initial
CALL Label_0046 ;清 BANK0(0x0A~0x80) 数据
CALL Label_0047 ;寄存器初始化
CLRF PORTB
CLRF PORTA
RETURN
;==========================================
;initial
;==========================================
Label_0045 BSF STATUS,RP0 ;RP0=1 Select Bank1
MOVLW 0x00 ;W清0
MOVWF TRISA ;设置A口输出
MOVLW 0xF0
MOVWF TRISB ;设置B端口?
BCF STATUS,RP0
RETURN ;子程序返回
;=======================================================
;寄存器初始化
;=======================================================
Label_0047 BSF STATUS, RP0 ;RP0=1 Select Bank1
MOVLW 0x8A ;bank1
MOVWF OPTION_REG ;prescaler assign to wdt 1:4 18*4=72ms
MOVLW 0x02
MOVWF 0x0C ;interrupt enable tmr2 to pr2 match
MOVLW 0x07
MOVWF 0x1F ;ra0~ra3 as digital input
CLRF 0x12 ; pr2=255
DECF 0x12,f ;0x12=0xff
BCF STATUS,RP0 ;bank0
CLRF 0x0C ;clr interrupt flag
MOVLW 0xC0
MOVWF INTCON ;off interrupt
MOVLW 0x11
MOVWF 0x10 ;t1con tmr1 on ,prescaler value 1:2 ,tmr1 1us为记数周期
MOVLW 0x07
MOVWF 0x12 ;t2con tmr2 on,prescaler value 1:16 postscale value is 1:1
RETURN
;=============================================
; ;清 BANK0(0x0A~0x80) 数据
;============================================
Label_0046 MOVLW 0x0A
MOVWF FSR
Label_0048 CLRF INDF ;0x0A(0x8A) PCLATH清零
BSF FSR,07
CLRF INDF
BCF FSR,07
INCF FSR,f
BTFSS FSR,07
GOTO Label_0048
RETURN
;===========================================================
;delay 100*x us
;=================================================================
delay100nus
MOVWF 0x79
Label_004B MOVLW 0x40
MOVWF 0x7A
Label_0049 DECFSZ 0x7A , f
GOTO Label_0049
GOTO Label_004A
Label_004A DECFSZ 0x79 , f
GOTO Label_004B
RETURN
;===============================================================
;delay ((2.5*198+1.5)*251+1.5)*4=500ms
;================================================================
delay500ms MOVLW 0x04
MOVWF 0x79
Label_004E MOVLW 0xFB;251
MOVWF 0x7B
Label_004D MOVLW 0xC6;198
MOVWF 0x7A
Label_004C CLRWDT
NOP
DECFSZ 0x7A , f
GOTO Label_004C
DECFSZ 0x7B , f
GOTO Label_004D
DECFSZ 0x79 , f
GOTO Label_004E
RETURN
;==============================================================
;delay 10.5us
;==============================================================
delay10us MOVLW 0x05
MOVWF 0x7A
Label_004F DECFSZ 0x7A , f
GOTO Label_004F
RETURN
;=============================================================
;send ultrasonic
;==============================================================
send_no1_ultra
BCF INTCON , GIE ;关全局中断
MOVLW 0x1A
MOVWF 0x79
Label_0051 MOVLW 0x01
XORWF PORTB , f ;异或(与1 求反;与自身 清0;与0 不变)
CALL delay10us
DECFSZ 0x79 , f ;DECFSZ减1为0,跳转
GOTO Label_0051
BSF INTCON , GIE
RETURN
;==============================================================
send_no2_ultra
BCF INTCON , GIE
MOVLW 0x1A
MOVWF 0x79
Label_0052 MOVLW 0x02
XORWF PORTB , f
CALL delay10us
DECFSZ 0x79 , f
GOTO Label_0052
BSF INTCON , GIE
RETURN
;==================================================================
send_no3_ultra
BCF INTCON , GIE
MOVLW 0x1A
MOVWF 0x79
Label_0053 MOVLW 0x04
XORWF PORTB , f
CALL delay10us
DECFSZ 0x79 , f
GOTO Label_0053
BSF INTCON , GIE
RETURN
;====================================================================
send_no4_ultra
BCF INTCON , GIE
MOVLW 0x1A
MOVWF 0x79
Label_0054 MOVLW 0x08
XORWF PORTB , f
CALL delay10us
DECFSZ 0x79 , f
GOTO Label_0054
BSF INTCON , GIE
RETURN
;=======================================================================
;取中间72 73~78 79 4个求平均值,结果放在7c 7d中
;=======================================================================
average CLRF 0x7F
MOVF 0x72 , W
MOVWF 0x7C
MOVF 0x73 , W
MOVWF 0x7D
MOVF 0x75 , W
ADDWF 0x7D , f
BTFSC STATUS , C
INCF 0x7C , f
MOVF 0x74 , W
ADDWF 0x7C , f
BTFSC STATUS , C
INCF 0x7F , f
MOVF 0x77 , W
ADDWF 0x7D , f
BTFSC STATUS , C
INCF 0x7C , f
MOVF 0x76 , W
ADDWF 0x7C , f
BTFSC STATUS , C
INCF 0x7F , f
MOVF 0x79 , W
ADDWF 0x7D , f
BTFSC STATUS , C
INCF 0x7C , f
MOVF 0x78 , W
ADDWF 0x7C , f
BTFSC STATUS , C
INCF 0x7F , f
RRF 0x7F , f
RRF 0x7C , f
RRF 0x7D , f
RRF 0x7F , f
RRF 0x7C , f
RRF 0x7D , f
RETURN
;===========================================================
;将0x70~0x7b空间排序,最大值放高地址
;===========================================================
sort MOVLW 0x05
MOVWF 0x7F
Label_005A CALL Label_0055
CALL Label_0056
CALL Label_0057
CALL Label_0058
CALL Label_0059
DECFSZ 0x7F , f
GOTO Label_005A
RETURN
Label_0055 MOVF 0x72 , W
SUBWF 0x70 , W
BTFSS STATUS , C
RETURN
BTFSS STATUS , Z
GOTO Label_005B
MOVF 0x73 , W
SUBWF 0x71 , W
BTFSS STATUS , C
RETURN
Label_005B MOVF 0x72 , W
SUBWF 0x70 , W
ADDWF 0x72 , f
SUBWF 0x70 , f
MOVF 0x73 , W
SUBWF 0x71 , W
ADDWF 0x73 , f
SUBWF 0x71 , f
RETURN
Label_0056 MOVF 0x74 , W
SUBWF 0x72 , W
BTFSS STATUS , C
RETURN
BTFSS STATUS , Z
GOTO Label_005C
MOVF 0x75 , W
SUBWF 0x73 , W
BTFSS STATUS , C
RETURN
Label_005C MOVF 0x74 , W
SUBWF 0x72 , W
ADDWF 0x74 , f
SUBWF 0x72 , f
MOVF 0x75 , W
SUBWF 0x73 , W
ADDWF 0x75 , f
SUBWF 0x73 , f
RETURN
Label_0057 MOVF 0x76 , W
SUBWF 0x74 , W
BTFSS STATUS , C
RETURN
BTFSS STATUS , Z
GOTO Label_005D
MOVF 0x77 , W
SUBWF 0x75 , W
BTFSS STATUS , C
RETURN
Label_005D MOVF 0x76 , W
SUBWF 0x74 , W
ADDWF 0x76 , f
SUBWF 0x74 , f
MOVF 0x77 , W
SUBWF 0x75 , W
ADDWF 0x77 , f
SUBWF 0x75 , f
RETURN
Label_0058 MOVF 0x78 , W
SUBWF 0x76 , W
BTFSS STATUS , C
RETURN
BTFSS STATUS , Z
GOTO Label_005E
MOVF 0x79 , W
SUBWF 0x77 , W
BTFSS STATUS , C
RETURN
Label_005E MOVF 0x78 , W
SUBWF 0x76 , W
ADDWF 0x78 , f
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -