會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





sr04控制無法計數
新會員
註冊日期:
2016/10/18 23:29
所屬群組:
註冊會員
文章: 8
等級: 1; EXP: 73
HP : 0 / 18
MP : 2 / 175
離線
我用了各種方法去推計數器,可是測出來的計數值永遠都只有加1一次而已,有沒有大大可以教一下


#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
#include "config.h"
#include <pic18f4550.h>

#define _XTAL_FREQ 16000000

#define sr04_trig PORTBbits.RB0
#define sr04_echo PORTBbits.RB4
#define led PORTDbits.RD2

#define sr04_trig_T TRISBbits.TRISB0
#define sr04_echo_T TRISBbits.TRISB4
#define led_T TRISDbits.TRISD2

void delay_ms(unsigned int a)
{
int i;
for(i=0;i<a;i++)
{
__delay_us(996);
}
}

long counter;
unsigned char cm,clk;

void main(void)
{
OSCCON =0b01110000;
ADCON1 =0b00001111;
CMCON =0b00000111;
// T0CON =0b00000001;

sr04_trig_T =0;
sr04_echo_T =1;
led_T =0;

sr04_trig =0;
led =1;

delay_ms(38);


while(1)
{

switch(clk)
{
case 0 :sr04_trig =1;clk=1;

case 1 :__delay_us(10);clk=2;

case 2 :sr04_trig =0;clk=3;

case 3 :if(sr04_echo==1){clk=4;}

case 4:for(counter=0;sr04_echo==1;counter++);//就是這裡的counter加不上去
if(sr04_echo==0){clk=5;}

case 5 :counter = counter/16;clk=6;

case 6 :cm = counter/58.8;clk=7;

case 7 :cm++;clk=8;

case 8 :if(cm<=10){led=0;}else {led=1;}
clk=0;
}
}
}

2016/10/18 23:40
轉換PDF檔 列印


Re: sr04控制無法計數
資深會員
註冊日期:
2014/04/12 20:35
所屬群組:
註冊會員
文章: 209
等級: 13; EXP: 48
HP : 0 / 312
MP : 69 / 5265
離線
Switch case 為何不使用break; ?

2016/10/19 08:05
轉換PDF檔 列印


Re: sr04控制無法計數
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14924
等級: 73; EXP: 71
HP : 1090 / 1817
MP : 4974 / 83505
離線
#define sr04_trig PORTBbits.RB0
#define sr04_echo PORTBbits.RB4
#define led PORTDbits.RD2

建議這輸出腳的使用改成 LATB,輸入腳仍使用 PORTB
這樣可以避免一些不必要的 Read Modify Write 的現象。

#define sr04_trig LATBbits.LATBB0
#define sr04_echo PORTBbits.RB4
#define led LATDbits.LATD2



底下請比較一下有、無 Break; 的敘述的差異。

附加檔案:



jpg  擷取1.jpg (94.12 KB)
16_5806d504a56c4.jpg 963X720 px

jpg  擷取.JPG (84.03 KB)
16_5806d510bc2a8.jpg 962X714 px

2016/10/19 10:06
轉換PDF檔 列印


Re: sr04控制無法計數
新會員
註冊日期:
2016/10/18 23:29
所屬群組:
註冊會員
文章: 8
等級: 1; EXP: 73
HP : 0 / 18
MP : 2 / 175
離線
我也有寫有用break去跑回圈的,但是解果還是一樣,上面是我打得其中一種。

2016/10/26 23:06
轉換PDF檔 列印


Re: sr04控制無法計數
新會員
註冊日期:
2016/10/18 23:29
所屬群組:
註冊會員
文章: 8
等級: 1; EXP: 73
HP : 0 / 18
MP : 2 / 175
離線
我會把輸出改掉試試看,謝謝

2016/10/26 23:19
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project