找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機的藍牙收發(fā)程序

[復(fù)制鏈接]
ID:505549 發(fā)表于 2021-3-10 14:07 | 顯示全部樓層 |閱讀模式
                              
/*-----------------------------------------------------------------------------
* 實 驗 名                 : RS232串口試驗
* 實驗說明     : 單片機串口接收數(shù)據(jù)控制燈亮滅
* 連接方式     :
* 注    意                 : 該試驗使用的晶振是11.0592
*******************************************************************************/

#include<reg52.h>
#include<intrins.h>

#define uchar unsigned char
#define uint  unsigned int

uchar PuZh[36] = "xxxxxxxxxxxx";

//--定義使用的IO--//

sbit LED=P2^0;


//--聲明全局函數(shù)--//   
void UsartConfiguration();
void Delay_1ms(uint i);


/********************************************************************
* 名稱 : Com_Int()
* 功能 : 串口中斷子函數(shù)
* 輸入 : 無 * 輸出 : 無
***********************************************************************/
void Com_Int(void) interrupt 4
{
        uchar i;
  uchar receive_data;
        
  EA = 0;
        
  if(RI == 1) //當硬件接收到一個數(shù)據(jù)時,RI會置位
        {                 
                RI = 0;
                receive_data = SBUF;//接收到的數(shù)據(jù)
                        
                if(receive_data == '1')         
                {
                                LED =0;//接收到1亮燈
                }
                else
                {
                                LED =1; //其他情況燈滅
                }
               
        }
               
                for(i=0; i<36; i++)
                {
                        SBUF = PuZh[ i];   //將要發(fā)送的數(shù)據(jù)放入到發(fā)送寄存器
                        while(!TI);                    //等待發(fā)送數(shù)據(jù)完成
                        TI=0;                                //清除發(fā)送完成標志位
                        Delay_1ms(1);
                }
                EA = 1;
}

/*******************************************************************************
* 函 數(shù) 名       : main
* 函數(shù)功能                   : 主函數(shù)
* 輸    入       : 無
* 輸    出       : 無
*******************************************************************************/

void main()
{

        UsartConfiguration();//初始化串口
        
        while(1);        
}
        
/*******************************************************************************
* 函 數(shù) 名       : UsartConfiguration()
* 函數(shù)功能                   : 設(shè)置串口
* 輸    入       : 無
* 輸    出       : 無
*******************************************************************************/

void UsartConfiguration()
{        
        SCON=0X50;                        //設(shè)置為工作方式1,8位數(shù)據(jù),可變波特率
        TMOD=0X20;                        //設(shè)置計數(shù)器工作方式2
        PCON=0X00;                        //波特率不加倍
        TH1=0XFd;                    //計數(shù)器初始值設(shè)置,9600@11.0592MHz
        TL1=0XFd;
        TR1=1;                                        //打開計數(shù)器
        ES = 1;         //開串口中斷
  EA = 1;         //開總中斷
}


/********************************************************************
* 名稱 : Delay_1ms()
* 功能 : 延時子程序,延時時間為 1ms
* x * 輸入 : x (延時一毫秒的個數(shù))
* 輸出 : 無
***********************************************************************/
void Delay_1ms(uint i)//1ms延時
{
  uchar x,j;

  for(j=0;j<i;j++)
    for(x=0;x<=148;x++);
}


回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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