⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yydcld.asm

📁 本程序
💻 ASM
📖 第 1 页 / 共 3 页
字号:
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 + -