找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1702|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机的蓝牙收发程序

[复制链接]
跳转到指定楼层
楼主
ID:505549 发表于 2021-3-10 14:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                              
/*-----------------------------------------------------------------------------
* 实 验 名                 : RS232串口试验
* 实验说明     : 单片机串口接收数据控制灯亮灭
* 连接方式     :
* 注    意                 : 该试验使用的晶振是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;


//--声明全局函数--//   
void UsartConfiguration();
void Delay_1ms(uint i);


/********************************************************************
* 名称 : Com_Int()
* 功能 : 串口中断子函数
* 输入 : 无 * 输出 : 无
***********************************************************************/
void Com_Int(void) interrupt 4
{
        uchar i;
  uchar receive_data;
        
  EA = 0;
        
  if(RI == 1) //当硬件接收到一个数据时,RI会置位
        {                 
                RI = 0;
                receive_data = SBUF;//接收到的数据
                        
                if(receive_data == '1')         
                {
                                LED =0;//接收到1亮灯
                }
                else
                {
                                LED =1; //其他情况灯灭
                }
               
        }
               
                for(i=0; i<36; i++)
                {
                        SBUF = PuZh[ i];   //将要发送的数据放入到发送寄存器
                        while(!TI);                    //等待发送数据完成
                        TI=0;                                //清除发送完成标志位
                        Delay_1ms(1);
                }
                EA = 1;
}

/*******************************************************************************
* 函 数 名       : main
* 函数功能                   : 主函数
* 输    入       : 无
* 输    出       : 无
*******************************************************************************/

void main()
{

        UsartConfiguration();//初始化串口
        
        while(1);        
}
        
/*******************************************************************************
* 函 数 名       : UsartConfiguration()
* 函数功能                   : 设置串口
* 输    入       : 无
* 输    出       : 无
*******************************************************************************/

void UsartConfiguration()
{        
        SCON=0X50;                        //设置为工作方式1,8位数据,可变波特率
        TMOD=0X20;                        //设置计数器工作方式2
        PCON=0X00;                        //波特率不加倍
        TH1=0XFd;                    //计数器初始值设置,9600@11.0592MHz
        TL1=0XFd;
        TR1=1;                                        //打开计数器
        ES = 1;         //开串口中断
  EA = 1;         //开总中断
}


/********************************************************************
* 名称 : Delay_1ms()
* 功能 : 延时子程序,延时时间为 1ms
* x * 输入 : x (延时一毫秒的个数)
* 输出 : 无
***********************************************************************/
void Delay_1ms(uint i)//1ms延时
{
  uchar x,j;

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


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表