綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] Eclipse bluetooth 傳輸問題

[複製連結] 查看: 4325|回覆: 29|好評: 0
跳轉到指定樓層
樓主
用點心 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2014-8-5 10:32
50碎鑽
本帖最後由 用點心 於 2014-8-5 10:34 編輯

小弟最近在做手機與89S52的藍芽傳輸
手機端的藍芽APP是自己改寫的
遇到傳接值一些瓶頸
我希望的功能是當我89S52一直按著一個按鍵時
就會傳個值到手機手機便開始倒數
如果按鍵放開倒數計時就會停止

遇到的問題是:
當我89S52一直按著一個按鍵時
89S52便一直傳值
例如我設倒數五秒
當我一直按著一個按鍵時
手機便接收到我要倒數五秒的值
但是他卻一直不斷傳倒數五秒的值
所以手機就是一值產生新的計時器

希望板上的高手大大幫幫忙


「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
whl | 收聽TA | 只看該作者
發表於 2014-8-6 07:08
改寫 89s52 的 code 不要一直傳啊!
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

板凳
 樓主| 用點心 | 收聽TA | 只看該作者
發表於 2014-8-6 21:57
whl 發表於 2014-8-6 07:08
改寫 89s52 的 code 不要一直傳啊!

請問應該如何改?
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

地板
whl | 收聽TA | 只看該作者
發表於 2014-8-7 07:02
我以為 89s52 的 code 是你自己寫的。
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

5
 樓主| 用點心 | 收聽TA | 只看該作者
發表於 2014-8-7 22:59
whl 發表於 2014-8-7 07:02
我以為 89s52 的 code 是你自己寫的。

是我自己寫的沒錯啊~
不過我不懂你要改的地方是在哪
可以舉例說明嗎?
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

6
 樓主| 用點心 | 收聽TA | 只看該作者
發表於 2014-8-10 23:49
whl 發表於 2014-8-6 07:08
改寫 89s52 的 code 不要一直傳啊!

如果 沒有我要關掉摟

50碎鑽不是隨便送的

用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

7
CarolHsieh | 收聽TA | 只看該作者
發表於 2014-8-11 16:23
你可以在APP端看看能不能設定當接收到值之後
停止取值的動作

或是藍芽端看看能不能設定當值被接收後
停止傳值但不斷線

用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

8
 樓主| 用點心 | 收聽TA | 只看該作者
發表於 2014-8-11 19:14
CarolHsieh 發表於 2014-8-11 16:23
你可以在APP端看看能不能設定當接收到值之後
停止取值的動作

我也知道是這樣

但是就是不知道指令該如何打
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

9
CarolHsieh | 收聽TA | 只看該作者
發表於 2014-8-12 09:13
痾....
問題是你也沒貼任何程式
沒有人能幫忙看啊
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

10
 樓主| 用點心 | 收聽TA | 只看該作者
發表於 2014-8-12 10:33
CarolHsieh 發表於 2014-8-12 09:13
痾....
問題是你也沒貼任何程式
沒有人能幫忙看啊

#include <reg51.h>
#include <reg.h>
#include <stdio.h>  
#include<stdlib.h>
#include <math.h>
//#include<time.h>

//---------------------------------------------------------------------
void UART_int(void);

void delay1();
void delay2();
void delay3();
void mod1();
void mod2();
void mod3();
void mod4();
void off();

//********************************************************************
//                                        主程式       
//********************************************************************
main()
{

        SCON = 0x52;  // 8 bit UART (mode 1), 啟動 Timer 1
    TMOD = 0x20;  // T0 mod 0, T1 mode 1
    TH1 = 256-(28800/9600);  //baudrate=9600
    TL1 = TH1;
    TR1 = 1;     // 用KEIL C的 puts(), gets() 等來傳送RS232資料
    ES = 1;      // 開啟序列(RS232)中斷的開關
    EA = 1;      // 開啟中斷的總開關
       
}
//---------------------------------------------------
void UART_int(void) interrupt 4
{
        //while(1)
        //{       
                                                               
                if(SBUF=="1")
                {         
                        mod1();
                        RI=0;
                       
                }
            else if(SBUF=="2")
                {
                        mod2();       
                        RI=0;
                }
            else if(SBUF=="3")
                {
                        mod3();       
                        RI=0;
                }
                else if(SBUF=="4")
                {
                        mod4();       
                        RI=0;
                }
                else off;
        //}
}

//-----------------------------------------------------

void mod1 ()
{        

        while(1)
        {
                ADCdata_1=Adc0832_1(0);               
                ADCdata_2=Adc0832_2(0);
                ADCdata_3=Adc0832_3(0);
                ADCdata_4=Adc0832_4(0);
                ADCdata_5=Adc0832_5(0);
                RI=0;
           if(ADCdata_1>0x55&&ADCdata_1<=0xFF)
                {
                        P0_3=0;        delay2();                       
                        puts("a");delay2();
                        RI=0;
                }
                else if(ADCdata_2>0x55&&ADCdata_2<=0xFF)
                {               
                       
                        P0_4=0;        delay2();
                        puts("b");
                        RI=0;
                }
                else if(ADCdata_3>0x55&&ADCdata_3<=0xFF)
                {                                       
                        P0_5=0;        delay2();
                        puts("c");
                        RI=0;
                }
                else if(ADCdata_4>0x55&&ADCdata_4<=0xFF)
                {                                       
                        P0_6=0;        delay2();
                        puts("d");
                        RI=0;
                }
                else if(ADCdata_5>0x55&&ADCdata_5<=0xFF)
                {                                       
                        P0_7=0;        delay2();
                        puts("e");
                        RI=0;
                }
                else                
                {       
                        P0=0xff;
                        RI=0;
                        break;
                }
                if(SBUF!="2")
                {
                        RI=0;
                       
                }
        }
}
//-------------------------------------------------------------
void mod2 ()
{
        P0=~0x08;
        while(1)
        {       
                ADCdata_1=Adc0832_1(0);               
                ADCdata_2=Adc0832_2(0);
                ADCdata_3=Adc0832_3(0);
                ADCdata_4=Adc0832_4(0);
                ADCdata_5=Adc0832_5(0);               
                RI=0;
               
            if(ADCdata_1>0x35&&ADCdata_1<=0xFF)
                {                                       
                        P0=~0x10;
                        delay2();
                        //puts("ONE!");
                        RI=0;
                }
                else if(ADCdata_2>0x35&&ADCdata_2<=0xFF)
                {                                       
                        P0=~0x20;
                        delay2();
                        //puts("ONE!");
                        RI=0;
                }
                else if(ADCdata_3>0x35&&ADCdata_3<=0xFF)
                {                                       
                        P0=~0x40;
                        delay2();
                        //puts("ONE!");
                        RI=0;
                }
                else if(ADCdata_4>0x35&&ADCdata_4<=0xFF)
                {                                       
                        P0=~0x80;
                        delay2();
                        //puts("ONE!");
                        RI=0;
                }
                else if(ADCdata_5>0x35&&ADCdata_5<=0xFF)
                {                                       
                        P0=~0x00;
                        delay2();
                        //puts("ONE!");
                        RI=0;
                        break;
                }

        }

}

//-------------------------------------------------------------
void mod3 ()
{
        P0=~0x80;
        while(1)
        {
                ADCdata_1=Adc0832_1(0);               
                ADCdata_2=Adc0832_2(0);
                ADCdata_3=Adc0832_3(0);
                ADCdata_4=Adc0832_4(0);
                ADCdata_5=Adc0832_5(0);               
                RI=0;
               
            if(ADCdata_5>0x35&&ADCdata_5<=0xFF)
                {                                       
                        P0=~0x40;
                        delay2();
                        //puts("ONE!");
                        RI=0;
                }
                else if(ADCdata_4>0x35&&ADCdata_4<=0xFF)
                {                                       
                        P0=~0x20;
                        delay2();
                        //puts("ONE!");
                        RI=0;
                }
                else if(ADCdata_3>0x35&&ADCdata_3<=0xFF)
                {                                       
                        P0=~0x10;
                        delay2();
                        //puts("ONE!");
                        RI=0;
                }
                else if(ADCdata_2>0x35&&ADCdata_2<=0xFF)
                {                                       
                        P0=~0x08;
                        delay2();
                        //puts("ONE!");
                        RI=0;
                }
                else if(ADCdata_1>0x35&&ADCdata_1<=0xFF)
                {                                       
                        P0=~0x00;
                        delay2();
                        //puts("ONE!");
                        RI=0;
                        break;
                }

        }

}
//--------------------------------------------------------
/*
void mod4(void){
    int r;
    int i;
    int sides = 5;

    srand((unsigned) time(NULL));
    for(i=0;i<10;i++){
    r = 1 + rand() % sides;
}
        while(1)
        {       
                ADCdata_1=Adc0832_1(0);               
                ADCdata_2=Adc0832_2(0);
                ADCdata_3=Adc0832_3(0);
                ADCdata_4=Adc0832_4(0);
                ADCdata_5=Adc0832_5(0);               
                RI=0;


               
            if(ADCdata_1>0x35&&ADCdata_1<=0xFF)
                {                                       
                        P0=~0x10;
                        delay2();
                        //puts("ONE!");
                        RI=0;
                }
                else if(ADCdata_2>0x35&&ADCdata_2<=0xFF)
                {                                       
                        P0=~0x20;
                        delay2();
                        //puts("ONE!");
                        RI=0;
                }
                else if(ADCdata_3>0x35&&ADCdata_3<=0xFF)
                {                                       
                        P0=~0x40;
                        delay2();
                        //puts("ONE!");
                        RI=0;
                }
                else if(ADCdata_4>0x35&&ADCdata_4<=0xFF)
                {                                       
                        P0=~0x80;
                        delay2();
                        //puts("ONE!");
                        RI=0;
                }
                else if(ADCdata_5>0x35&&ADCdata_5<=0xFF)
                {                                       
                        P0=~0x00;
                        delay2();
                        //puts("ONE!");
                        RI=0;
                        break;
                }

        }


}
*/
//--------------------------------------------------------
//--------------------------------------------------------
//--------------------------------------------------------
void off()
{
        P0=0x00;
}

//************************************************************************

unsigned int Adc0832_1(unsigned char channel)
{
        uchar i=0;
        uchar j;
        uint dat=0;
        uchar ndat=0;
        if(channel==0)channel=2;
        if(channel==1)channel=3;
        ADDI_1=1;
        ADCS_1=0;//拉低CS端
        ADCLK_1=1;//拉高CLK端
        ADCLK_1=0;//拉低CLK端,形成下降沿1
        ADCLK_1=1;//拉高CLK端       
        ADDI_1=channel&0x1;
        ADCLK_1=0;//拉低CLK端,形成下降沿2
        ADCLK_1=1;//拉高CLK端
        ADDI_1=(channel>>1)&0x1;       
        ADCLK_1=0;//拉低CLK端,形成下降沿3       
        ADDI_1=1;//控制命令?束
        dat=0;
        for(i=0;i<8;i++)
        {
                dat|=ADDO_1;//收?据               
                ADCLK_1=1;               
                ADCLK_1=0;//形成一次????
                dat<<=1;
                if(i==7)dat|=ADDO_1;
        }
        for(i=0;i<8;i++)
        {
                j=0;
                j=j|ADDO_1;//收?据               
                ADCLK_1=1;
                ADCLK_1=0;//形成一次????
                j=j<<7;
                ndat=ndat|j;
                if(i<7){ndat>>=1;}
        }
        ADCS_1=1;//拉低CS端
        ADCLK_1=0;//拉低CLK端
        ADDO_1=1;//拉高?据端,回到初始??
        dat<<=8;
        dat|=ndat;
        return(dat); //return ad data
}

//************************************************************************

unsigned int Adc0832_2(unsigned char channe2)
{
        uchar i=0;
        uchar j;
        uint dat=0;
        uchar ndat=0;
        if(channe2==0)channe2=2;
        if(channe2==1)channe2=3;
        ADDI_2=1;
        ADCS_2=0;//拉低CS端
        ADCLK_2=1;//拉高CLK端
        ADCLK_2=0;//拉低CLK端,形成下降沿1
        ADCLK_2=1;//拉高CLK端       
        ADDI_2=channe2&0x1;
        ADCLK_2=0;//拉低CLK端,形成下降沿2
        ADCLK_2=1;//拉高CLK端
        ADDI_2=(channe2>>1)&0x1;       
        ADCLK_2=0;//拉低CLK端,形成下降沿3       
        ADDI_2=1;//控制命令?束
        dat=0;
        for(i=0;i<8;i++)
        {
                dat|=ADDO_2;//收?据               
                ADCLK_2=1;               
                ADCLK_2=0;//形成一次????
                dat<<=1;
                if(i==7)dat|=ADDO_2;
        }
        for(i=0;i<8;i++)
        {
                j=0;
                j=j|ADDO_2;//收?据               
                ADCLK_2=1;
                ADCLK_2=0;//形成一次????
                j=j<<7;
                ndat=ndat|j;
                if(i<7){ndat>>=1;}
        }
        ADCS_2=1;//拉低CS端
        ADCLK_2=0;//拉低CLK端
        ADDO_2=1;//拉高?据端,回到初始??
        dat<<=8;
        dat|=ndat;
        return(dat); //return ad data
}

//**************************************************************************

unsigned int Adc0832_3(unsigned char channe3)
{
        uchar i=0;
        uchar j;
        uint dat=0;
        uchar ndat=0;
        if(channe3==0)channe3=2;
        if(channe3==1)channe3=3;
        ADDI_3=1;
        ADCS_3=0;//拉低CS端
        ADCLK_3=1;//拉高CLK端
        ADCLK_3=0;//拉低CLK端,形成下降沿1
        ADCLK_3=1;//拉高CLK端       
        ADDI_3=channe3&0x1;
        ADCLK_3=0;//拉低CLK端,形成下降沿2
        ADCLK_3=1;//拉高CLK端
        ADDI_3=(channe3>>1)&0x1;       
        ADCLK_3=0;//拉低CLK端,形成下降沿3       
        ADDI_3=1;//控制命令?束
        dat=0;
        for(i=0;i<8;i++)
        {
                dat|=ADDO_3;//收?据               
                ADCLK_3=1;               
                ADCLK_3=0;//形成一次????
                dat<<=1;
                if(i==7)dat|=ADDO_3;
        }
        for(i=0;i<8;i++)
        {
                j=0;
                j=j|ADDO_3;//收?据               
                ADCLK_3=1;
                ADCLK_3=0;//形成一次????
                j=j<<7;
                ndat=ndat|j;
                if(i<7){ndat>>=1;}
        }
        ADCS_3=1;//拉低CS端
        ADCLK_3=0;//拉低CLK端
        ADDO_3=1;//拉高?据端,回到初始??
        dat<<=8;
        dat|=ndat;
        return(dat); //return ad data
}

//**************************************************************************

unsigned int Adc0832_4(unsigned char channe4)
{
        uchar i=0;
        uchar j;
        uint dat=0;
        uchar ndat=0;
        if(channe4==0)channe4=2;
        if(channe4==1)channe4=3;
        ADDI_4=1;
        ADCS_4=0;//拉低CS端
        ADCLK_4=1;//拉高CLK端
        ADCLK_4=0;//拉低CLK端,形成下降沿1
        ADCLK_4=1;//拉高CLK端       
        ADDI_4=channe4&0x1;
        ADCLK_4=0;//拉低CLK端,形成下降沿2
        ADCLK_4=1;//拉高CLK端
        ADDI_4=(channe4>>1)&0x1;       
        ADCLK_4=0;//拉低CLK端,形成下降沿3       
        ADDI_4=1;//控制命令?束
        dat=0;
        for(i=0;i<8;i++)
        {
                dat|=ADDO_4;//收?据               
                ADCLK_4=1;               
                ADCLK_4=0;//形成一次????
                dat<<=1;
                if(i==7)dat|=ADDO_4;
        }
        for(i=0;i<8;i++)
        {
                j=0;
                j=j|ADDO_4;//收?据               
                ADCLK_4=1;
                ADCLK_4=0;//形成一次????
                j=j<<7;
                ndat=ndat|j;
                if(i<7){ndat>>=1;}
        }
        ADCS_4=1;//拉低CS端
        ADCLK_4=0;//拉低CLK端
        ADDO_4=1;//拉高?据端,回到初始??
        dat<<=8;
        dat|=ndat;
        return(dat); //return ad data
}

//**************************************************************************

unsigned int Adc0832_5(unsigned char channe5)
{
        uchar i=0;
        uchar j;
        uint dat=0;
        uchar ndat=0;
        if(channe5==0)channe5=2;
        if(channe5==1)channe5=3;
        ADDI_5=1;
        ADCS_5=0;//拉低CS端
        ADCLK_5=1;//拉高CLK端
        ADCLK_5=0;//拉低CLK端,形成下降沿1
        ADCLK_5=1;//拉高CLK端       
        ADDI_5=channe5&0x1;
        ADCLK_5=0;//拉低CLK端,形成下降沿2
        ADCLK_5=1;//拉高CLK端
        ADDI_5=(channe5>>1)&0x1;       
        ADCLK_5=0;//拉低CLK端,形成下降沿3       
        ADDI_5=1;//控制命令?束
        dat=0;
        for(i=0;i<8;i++)
        {
                dat|=ADDO_5;//收?据               
                ADCLK_5=1;               
                ADCLK_5=0;//形成一次????
                dat<<=1;
                if(i==7)dat|=ADDO_2;
        }
        for(i=0;i<8;i++)
        {
                j=0;
                j=j|ADDO_5;//收?据               
                ADCLK_5=1;
                ADCLK_5=0;//形成一次????
                j=j<<7;
                ndat=ndat|j;
                if(i<7){ndat>>=1;}
        }
        ADCS_5=1;//拉低CS端
        ADCLK_5=0;//拉低CLK端
        ADDO_5=1;//拉高?据端,回到初始??
        dat<<=8;
        dat|=ndat;
        return(dat); //return ad data
}

//**************************************************************************

void delay1() //0.2s
{
        int j,k;
        for(j=0;j<20;j++)       
        for(k=0;k<2000;k++);       
}
void delay2() //1s
{
        int j,k;
        for(j=0;j<20;j++)       
        for(k=0;k<2000;k++);       
}
void delay3() //0.5s
{
        int j,k;
        for(j=0;j<25;j++)       
        for(k=0;k<2000;k++);       
}
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則