×
单片机 > 单片机程序设计 > 详情

pic12C508超声波测距仪程序

发布时间:2020-06-03 发布时间:
|

;超声波测距仪  
; Internal Osc, WDT EnabLED 

    include     

loop        equ    10h     

dlyCTR        equ    11h         
tone_cnt    equ    12h    ; 反射周期计数 
period        equ    13h    ; tmr0溢出时间 


    org     0            
    MOVwf    OSCCAL         
    MOVlw    b’10001001’         
    option            ;1:2 WDT ON 
    MOVlw    b’00001101’         
    tris    GPIO         
    MOVwf    0 
    bcf    GPIO,1        ;输出脉冲 

;=================================== 
main    clrwdt 
    btfss    GPIO,0        ; 等待触发信号 
    goto    main          
m2    clrwdt 
    btfsc    GPIO,0          
    goto    m2 

    call    burst        ; 发送超声波 
    bsf    GPIO,1        ; 开始输出定时脉冲 
m1    btfsc    GPIO,2 
    goto    m1          
    bcf    GPIO,1        ; 结束输出定时脉冲 
    goto    main 

;=================================== 
burst     clrf    loop 
    MOVlw    8          
    MOVwf    loop 

burst1     MOVlw    b’00010000’ 
    MOVwf    GPIO 

    MOVlw    3         
    MOVwf    dlyctr         
burst2     decfsz    dlyctr,f 
    goto    burst2        ; 12uS 

    MOVlw    b’00010100’ 
    MOVwf    GPIO 
    MOVlw    2        ; (2 * 3inst * 1uS) -1uS = 5uS  
    MOVwf    dlyctr        ; 5uS + (8*1uS) = 13uS 
burst3     decfsz    dlyctr,f 
    goto    burst3 

    nop 
    decfsz    loop,f 
    goto    burst1 
    MOVlw    0x00         
    MOVwf    GPIO 
    retlw    0 

;================================ 
tone    clrf    TMR0 
t1    btfsc    GPIO,2     
    goto    t1          
    MOVfw    TMR0 
    clrf    TMR0 
    MOVwf    period          

    MOVlw    21        ; if(period>22 && period<30)  
    subwf    period,w 
    btfss    STATUS,C 
    goto    t2 
    MOVlw    30 
    subwf    period,f 
    btfsc    STATUS,C 
    goto    t2 
    decfsz    tone_cnt,f    ; 25uS period OK, so  
    goto    t1        ; if not yet 3 of them, keep looking 
    retlw    0        ; else - success - return 
     
t2     MOVlw    3          
    MOVwf    tone_cnt      
    goto    t1 

;===================================== 
     end 




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
AVR熔丝位操作时的要点和需要注意的相关事项