您的位置 首页 FPGA

单片机完成点对点的数据传输-串口通讯

单片机在控制本地的外围期间时,信息的交互是通过8位并行数据总线进行的,但是在较大规模的现代控制系统中,单片机还需要控制远端的设备,…

单片机在操控本地的外围期间时,信息的交互是经过8位并行数据总线进行的,但是在较大规划的现代操控系统中,单片机还需要操控远端的设备,能够运用单片机的串行通讯模块,在学习了RS-232串口通讯的原理和时序后,学习了运用RS-232接口完成串口数据传输的点对点通讯。

首要器材:

1、AT89C52单片机芯片,用于操控串口通讯。

2、接口电平转化芯片MAX3232,用于完成TTL电平缓RS-232电平的转化。

实验流程图:主机部分

从机部分:

实验电路图:

实验程序代码:

//PPDataR.h程序

#ifndef_PPDATAR_H//避免PPDataT.h被重复引证

#define_PPDATAR_H

#include

#include

#define uchar unsigned char

#define uint unsigned int

/*握手信号宏界说*/

#define CALL 0x24//主机呼叫

#define BUSY 0x15//从机忙

#define OK 0x00//从机准备好

#define SUCC 0x2A//接纳成功

#define ERR 0xF0//接纳过错

#define MAXLEN 64//缓冲区最大长度

uchar buf[MAXLEN];

#endif

//PPDataR.c程序

#include “PPDataR.h”

/*发送数据函数*/

uchar recvdata(uchar *buf)

{

uchar i,tmp;

uchar len;//保存数据长度

uchar ecc;//保存校验字节

/*接纳数据长度字节*/

RI = 0;

while(!RI);

len = SBUF;

RI = 0;

/*运用len的值为校验字节ecc赋初值*/

ecc = len;

/*接纳数据*/

for (i=0;i

{

while(!RI);

*buf = SBUF;

ecc = ecc^(*buf);//进行字节校验

RI = 0;

buf++;

}

*buf = 0;//表明数据完毕

/*接纳校验字节*/

while(!RI);

tmp = SBUF;

RI = 0;

/*进行数据校验*/

ecc = tmp^ecc;

if (ecc!=0)//假如校验过错

{

*(buf-len) = 0;//清空数据缓冲区

/*发送校验过错信号ERR */

TI = 0;

SBUF = ERR;

while(!TI);

TI = 0;

return 0xff;//回来0xff表明校验过错

}

/*发送校验成功信号SUCC */

TI = 0;

SBUF = SUCC;

while(!TI);

TI = 0;

return 0;//校验成功,回来0

}

void init_serial()

{

TMOD = 0x20;//定时器T1运用作业方式2

TH1 = 250;

TL1 = 250;

TR1 = 1;//开端计时

PCON = 0x80;// SMOD = 1

SCON = 0x50;//作业方式1,波特率9600kbit/s,答应接纳

}

/*主程序*/

void main()

{

uchar tmp = 0;

/*串口初始化*/

init_serial();

EA = 0;//封闭一切中止

while(1)

{

/*假如接纳到的数据不是CALL,则持续等候*/

while (tmp!=CALL)

{

RI = 0;

while(!RI)

tmp = SBUF;

RI = 0;

}

/*检测P0口判别当时是否作业忙,若P0=0xBB,则为忙状况*/

P0 = 0xff;

tmp = P0;

if(tmp==0xBB)//假如P0口为0xBB,发送BUSY信号

{

TI = 0;

SBUF = BUSY;

while(!TI);

TI = 0;

continue;

}

/*不然发送OK信号,表明从机能够接纳数据*/

TI = 0;

SBUF = OK;

while(!TI);

TI = 0;

/*数据接纳*/

tmp = 0xff;

while(tmp==0xff)

{

tmp = recvdata(buf);//校验失利回来0xff,接纳成功回来0

}

}

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/267071.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部