:::


Browsing this Thread:   1 Anonymous Users






sr04控制無法計數
#1
新會員
新會員


查看用戶資訊
我用了各種方法去推計數器,可是測出來的計數值永遠都只有加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
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: sr04控制無法計數
#2
資深會員
資深會員


查看用戶資訊
Switch case 為何不使用break; ?

發表於: 2016/10/19 8:05
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: sr04控制無法計數
#3
版主
版主


查看用戶資訊
#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; 的敘述的差異。

Attach file:



jpg  (0.00 KB)


jpg  (0.00 KB)


發表於: 2016/10/19 10:06
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: sr04控制無法計數
#4
新會員
新會員


查看用戶資訊
我也有寫有用break去跑回圈的,但是解果還是一樣,上面是我打得其中一種。

發表於: 2016/10/26 23:06
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: sr04控制無法計數
#5
新會員
新會員


查看用戶資訊
我會把輸出改掉試試看,謝謝

發表於: 2016/10/26 23:19
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
You cannot start a new topic.
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]