微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求大神帮忙看看,关于蓝牙控制小灯的

求大神帮忙看看,关于蓝牙控制小灯的

时间:10-02 整理:3721RD 点击:
想返回字符,但是返回的字符顺序不对,有时候正常有时候不正常,下面是图,程序在二楼,非常感谢。

蓝牙返回错误


#include<reg52.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigned int
sbit power=P2^0;   //定义控制端口
uchar uart_data,flag;
//void fanhui(void);
//uchar table[]="32";
uchar temp;
void delay();
uint i,j;
//double a=35.6;
void main(void)
        {
                SCON=0X50;                  //设置串口,方式为1
                TMOD=0X20;                  //设置为定时器1为工作方式2
                TH1= 0x0FD;                          //初值,9600波特率
                TL1= 0x0FD;
                ES=1;                                 //开串口中断
                EA=1;                                 //开总中断
                TR1=1;
                REN=1;                                 //启动定时器
                power=1;                         //P2.0为高,灯灭
                //while(1);
               
                while(1)
                {
                if(flag==1)
                //temp=0x01;
                        {
                                ES=0;
                                flag=0;
                                               
                                SBUF='O';                                //单片机往串口返回“O”字符
                                //delay();
                                while(!TI);
                                TI=0;
                                //ES=1;
       
                                SBUF='K';                           //单片机往串口返回“K”字符
                                //delay();
                                while(!TI);
                                TI=0;
                                //ES=1;
                               
                                SBUF='!';                           //单片机往串口返回“!”字符
                                //delay();
                                while(!TI);
                                TI=0;
                                               
                                ES=1;
                                        }
                /*if(flag==2)
                        {
                                ES=0;
                                flag=0;
               
                                SBUF='0';
                                while(!TI);
                                TI=0;
               
                                SBUF='2';
                                while(!TI);
                                TI=0;
                                               
                                ES=1;       
                                        }*/
                       
                }
}
void serial_IT(void) interrupt 4
{
        if(RI==1)                         //R1置1,向CPU申请中断,循环
                {       
                        RI=0;                                         //软件清零,取消申请
                        uart_data = SBUF;
                        temp=uart_data;                        //蓝牙输入数据赋值
                        flag=1;          
                        //SBUF = uart_data;          //返回终端
                        //temp = uart_data;           //赋值
                        if(temp==0x01)
                                {
                                        power=0;
                                        flag=1;                  //返回1标志位
                                }
                                //fanhui();
                                //while(!TI);
                                //TI=0;
                        if(temp==0x00)
                                {
                                        power=1;
                                        //flag=2;          //返回2标志位
                                }
                }
                        //delay();
                        //EA=0;
                        //fanhui();
                        //SBUF=uart_data;
                        //while(!TI);
                        //TI=0;                //中断关闭
                        //EA=1;
                        //T1 = 0;   
}
void delay()                                                //延时
        {
        for(i=0;i<10;i++)
                for(j=0;j<100;j++);
                }

第二个字符会把第一个字符覆盖,,为什么呢。

这个是是在手机平台下控制台灯的状态的吗  ?

嗯,可以说是的

那手机平台上怎么调试的?是用下载APP来调试吗

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top