找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2895|回復(fù): 2
收起左側(cè)

51單片機(jī)stc89c52藍(lán)牙控制小車紅外手勢(shì)開關(guān),我寫了程序不知道為什么不能遙控

[復(fù)制鏈接]
ID:476498 發(fā)表于 2019-2-22 14:24 | 顯示全部樓層 |閱讀模式
這是我代碼
#include<reg52.h>

typedef unsigned int u16;          
typedef unsigned char u8;

sbit int1=P0^0;
sbit int2=P0^1;
sbit int3=P0^2;
sbit int4=P0^3;
sbit kaiguan=P3^7;
u8 receiveData;
void delay(u8 a)
{
        while(a--);       
}
void Timer0Init()
{
        TMOD|=0X01;
        TH0=0X4c;       
        TL0=0X00;       
        ET0=1;
        EA=1;
        TR0=1;               
}
void UsartInit()
{
        SCON=0X50;                       
        TMOD=0X20;                       
        PCON=0X00;                       
        TH1=0XFD;                               
        TL1=0XFD;
        ES=1;                                               
        EA=1;                                               
        TR1=1;                                       
}
void forward()               
{
        int1=1;
        int2=0;
        int3=1;
        int4=0;
}

void backward()               
{
        int1=0;
        int2=1;
        int3=0;
        int4=1;
}
void turn_left()       
{
        int1=1;
        int2=0;
        int3=0;
        int4=0;
}
void rotate_left()       
{
        int1=1;
        int2=0;
        int3=0;
        int4=1;
}
void turn_right()       
{
        int1=0;
        int2=0;
        int3=1;
        int4=0;
}
void rotate_right()       
{
        int1=0;
        int2=1;
        int3=1;
        int4=0;       
}
void stop()                       
{       
        int1=1;
        int2=1;
        int3=1;
        int4=1;       
}

void tip1()
{
        rotate_left();
        delay(3);
        rotate_right();
        delay(3);
}

void tip2()
{
        rotate_left();
        delay(6);
        rotate_right();
        delay(6);

}

void tip3()
{
        turn_left();
        delay(66);
}

void tip4()
{
        turn_right();
        delay(55);
}

void ctrl()   
{
        if(kaiguan==0)
        {
                while(1)
                {
                if(receiveData==0x01)
                forward();
                if(receiveData==0x02)
                        backward();
                if(receiveData==0x03)
                        turn_left();
                if(receiveData==0x04)
                        turn_right();
                if(receiveData==0x05)
                        stop();
                if(receiveData==0x06)
                        tip1();
                if(receiveData==0x07)
                        tip2();
                if(receiveData==0x08)
                        tip3();
                if(receiveData==0x09)
                        tip4();
               
                }
        }
}
void main ()
{        Timer0Init();
       
       
                UsartInit();
       
        while(1);       
}

void Timer0() interrupt 1
{
        static u8 i;
        TH0=0XFC;       
        TL0=0X18;
        i++;
        if(i==50)
        {
                i=0;       
        }       
}

void Usart() interrupt 4
{
       
       
        if(RI==1)
        {
                receiveData=SBUF;
                RI=0;
        }       
        ctrl();
}


IMG20190222141804.jpg
IMG20190222141812.jpg
IMG20190222141815.jpg
IMG20190222141835.jpg
Screenshot_2019-02-22-10-30-13-40.png
Screenshot_2019-02-22-10-30-25-39.png
回復(fù)

使用道具 舉報(bào)

ID:164602 發(fā)表于 2019-2-23 10:38 | 顯示全部樓層
簡(jiǎn)單看了你的程序結(jié)構(gòu),至少有這樣的問題吧
第一:最大的錯(cuò)誤,在串口中斷函數(shù)中,用了while(1),這樣的結(jié)果就是,只要串口中斷一次后,就卡那里了,再次串口中斷,中斷嵌套了,這可不是好現(xiàn)象,結(jié)果就不好判斷了。
將 ctrl();寫到主函數(shù)中吧。
第二:看不到你的APP程序,你確定它發(fā)送的是十六進(jìn)制數(shù)?
第三:你的紅外避障模塊在等于0時(shí)為開是吧,就是有手勢(shì)的時(shí)候,那就要你一直擋住它,手機(jī)再遙控才有效哦,只要車一動(dòng),你沒擋住,車就不開了——它是不會(huì)一直等于0的。

評(píng)分

參與人數(shù) 1黑幣 +70 收起 理由
admin + 70 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:476498 發(fā)表于 2019-3-1 17:29 | 顯示全部樓層
HC6800-ES-V2.0 發(fā)表于 2019-2-23 10:38
簡(jiǎn)單看了你的程序結(jié)構(gòu),至少有這樣的問題吧
第一:最大的錯(cuò)誤,在串口中斷函數(shù)中,用了while(1),這樣的結(jié) ...

while去掉了
但是開關(guān)的問題怎么解決/?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表