码迷,mamicode.com
首页 > 其他好文 > 详细

51单片机之串口通信(三)

时间:2016-01-06 23:48:20      阅读:374      评论:0      收藏:0      [点我收藏+]

标签:

51单片机之串口通信(三)

已有 47 次阅读2015-12-29 00:21 |个人分类:51单片机单片机通信

用串口实现发送和接收同时可操作:
电脑显示结果如图:
技术分享
源程序:

/*
项目名称:串口发送接收实验
项目内容:串口发送接收同时进行,
计算机发送数据给单片机控制P0口,从而控制
LED灯的亮灭,单片机发送数据到计算机,计算机
显示出来
时间:2015年12月23日
项目负责人:YUAN
*/
#include <reg52.h>
typedef unsigned char uChar8;
typedef unsigned int uInt16;

void DelayMS(uInt16 ValMS);
void UartInit(void); //串口初始化
void UartReceiveData(void); //接收数据
void UartSendData(void); //串口发送数据,即单片机发送数据
void main(void)
{
/*初始化:包括定时器中断的设置,
串口寄存器设置,波特率设置*/
UartInit();
while(1)
{
/*接收计算机发送的数据并送给led控制端口*/
UartReceiveData();
UartSendData();
DelayMS(500);
}
}
void DelayMS(uInt16 ValMS)
{
uInt16 uiVal,ujVal;
for(uiVal=0;uiVal<ValMS;uiVal++)
for(ujVal=0;ujVal<113;ujVal++);
}
void UartInit(void)
{
TMOD &= 0x0f; //只改变要改变的
TMOD |= 0x20; //设置定时器0为工作方式2
TL1 = 0xfd;
TH1 = 0xfd; //设置波特率为9600bps
TR1 = 1; //允许T1开始计数

SCON &= 0x5f;
SCON |= 0x50; //设置串口工作在方式1,允许接收数据
}
void UartReceiveData(void)
{
//如果接收中断为1,则说明有发送
if(RI)
{
RI = 0;
P0 = SBUF; //把发送的数据送给P0控制LED
}
}
void UartSendData(void)
{
static uChar8 num = 0;
//发送数据,并累加
SBUF = num;
num++;
TI = 0;

}

 
 
收藏分享邀请使用道具 编辑删除|
 

51单片机之串口通信(三)

标签:

原文地址:http://www.cnblogs.com/yuanbao825/p/5107661.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!