找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 997|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

這是我寫的藍牙模塊二驅(qū)小車,但程序響應(yīng)一次就不能在響應(yīng)了,希望大佬可以幫我 求...

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:444353 發(fā)表于 2018-12-11 19:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "reg52.h"            
typedef unsigned int u16;
typedef unsigned char u8;
sbit B1B=P3^7;
sbit B1A=P3^6;
sbit A1B=P3^5;
sbit A1A=P3^4;
sbit led=P2^4;
void GO()
{
A1A=1;
    A1B=0;
B1A=1;
B1B=0;
}
void RIGHT()
{
A1A=1;
A1B=0;
B1A=0;
B1B=0;
}
void LEFT()
{
A1A=0;
A1B=0;
B1A=1;
B1B=0;
}
void BACK()
{
A1A=0;
A1B=1;
B1A=0;
B1B=1;
}
void STOP()
{
A1A=0;
A1B=0;
B1A=0;
B1B=0;
}
/*******************************************************************************
* ??????         :UsartInit()
* ????????     :???????
* ????           : ??
* ???           : ??
*******************************************************************************/
void UsartInit()
{
SCON=0X50;   //????????????1
TMOD=0X20;   //???ü????????????2
PCON=0X80;   //????????
TH1=0XF3;    //????????????????????????4800??
TL1=0XF3;
ES=1;      //???????ж?
EA=1;      //?????ж?
TR1=1;     //????????
}

void main()
{
  UsartInit();
while(1);

   
  
}

void Usart() interrupt 4
{
u8 receiveData;
receiveData=SBUF;//??????????????
RI = 0;//????????ж???λ
switch(receiveData)
{
  case 'A':RIGHT();break;
  case 'B':GO();break;
  case 'C':LEFT();break;
  case 'D':BACK();break;
  case 'E':STOP();break;
}
TI=0;       //????????????λ
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:164602 發(fā)表于 2018-12-12 08:31 | 只看該作者
我做過這個,你的程序和我的程序不同之處是:
你的程序,在串口中斷程序中使用了控制小車的函數(shù)。
我的做法是:在串口中斷程序中,只記錄藍牙發(fā)來的數(shù)據(jù),這個數(shù)據(jù)的判斷,留在main()中去判斷。

我的思路是:在中斷中調(diào)用其它函數(shù),就不好判斷程序執(zhí)行到哪里去了——若出現(xiàn)上次中斷服務(wù)程序沒執(zhí)行完,又來了一次中斷,就只能等待,這次中斷沒法執(zhí)行,程序就卡住了。而中斷最麻煩的,就是不知道程序執(zhí)行到哪里了出現(xiàn)中斷。
這是高手教我的哦。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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