资源简介
51单片机蓝牙串口调试测试源代码, 非常适合初学者学习使用
//**** 声明 ********************************************************************
/*******************************************************************************
* 下面来自互联开源程序,由广州汇承信息科技有限公司收集
* 方便用户参考学习,本公司不提供任何技术支持
* 程序仅供测试参考,不能应用在实际工程中,不一定能通过编译
* 公司网站 http://www.wavesen.com/
* 淘宝网址 http://shop61591214.taobao.com/
*******************************************************************************/
/********************************************************************
* 文件名 : 串口接收试验.c
* 描述 : 该文件实现通过单片机从电脑接收数据。
该试验使用的晶振是11.0592
***********************************************************************/
代码片段和文件信息
//**** 声明 ********************************************************************
/*******************************************************************************
* 下面来自互联开源程序,由广州汇承信息科技有限公司收集
* 方便用户参考学习,本公司不提供任何技术支持
* 程序仅供测试参考,不能应用在实际工程中,不一定能通过编译
* 公司网站 http://www.wavesen.com/
* 淘宝网址 http://shop61591214.taobao.com/
*******************************************************************************/
/********************************************************************
* 文件名 : 串口接收试验.c
* 描述 : 该文件实现通过单片机从电脑接收数据。
该试验使用的晶振是11.0592
***********************************************************************/
#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar uart_receive_buffer[30]; //从串口接收的数据
uchar uart_receive_number=0; //指示串口接收个数
/********************************************************************
* 名称 : Delay_1ms()
* 功能 : 延时子程序,延时时间为 1ms
* x * 输入 : x (延时一毫秒的个数)
* 输出 : 无
***********************************************************************/
void Delay_1ms(uint i)//1ms延时
{
uchar xj;
for(j=0;j for(x=0;x<=148;x++);
}
/********************************************************************
* 名称 : Com_Int()
* 功能 : 串口中断子函数
* 输入 : 无 * 输出 : 无
***********************************************************************/
void Com_Int(void) interrupt 4
{
static uchar i = 7; //定义为静态变量,当重新进入这个子函数时 i 的值不会发生改变
EA = 0;
if(RI == 1){ //当硬件接收到一个数据时,RI会置位
RI = 0;
uart_receive_buffer[uart_receive_number] = SBUF; //这里减去48是因为从电脑中发送过来的数据是ASCII码。
uart_receive_number++;
}
EA = 1;
}
/********************************************************************
* 名称 : Com_Init()
* 功能 : 串口初始化,晶振11.0592波特率9600,使能了串口中断
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Com_Init(void) {
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd; //设置波特率 9600
TL1 = 0xFd;
TR1 = 1; //启动定时器1
ES = 1; //开串口中断
EA = 1; //开总中断
}
/********************************************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Main()
{
uchar uart_receive_number_old=0;
Com_Init();
while(1){
if(uart_receive_number_old!=uart_receive_number){
uart_receive_number_old=uart_receive_number;
}
//如果单片机接收来自HC-xx模块不少于1字节的串口数据,一定要加延时后再判断是否
//还有串口数据在发送,这样才能完整的接收一帧串口数据
Delay_1ms(30);
//一段时间之后仍然相等,表示上位机发来的一串数据结束
if(uart_receive_number_old==uart_receive_number){
if(uart_receive_number)
break;
}
}
if(uart_receive_number){
//串口有数据时,该做些什么就做什么吧
}
while(1);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3213 2014-02-21 10:56 51\51_uart_receive.c
文件 1849 2014-02-21 10:40 51\51_uart_send.c
目录 0 2014-02-21 10:56 51\
- 上一篇:PatchNavicat.exe
- 下一篇:plist图集切图工具
评论
共有 条评论