max232c语言,at89c51接max232,51单片机串口max232通信程序

RS232作为标准的计算机串行接口已被广泛使用,与此同时,随着现场总线技术的飞速发展,具有实时性好、可靠性高、结构简单等优点的CAN总线在测控系统中也越来越多地被采用,但由于两者的总线结构、通信协议及传输特点各不相同,因而给不同设备之间的连接带来诸多不便。因此,如何以最简单的方式实现CAN节点与RS232串行口的通信就成为工程实践中一个不可回避的问题。

本文主要就是说at89c51接max232方法和程序,具体的我们一起来了解一下吧。

43a669dbbeb96a12a5dc8592599bf5b1.png

at89c51接max232方法

MAX232与51单片机之间的通信连接很简单,因为所谓的MAX232通信标准,就是对插件样式、信号名称和意义以及所谓的驱动器/接收器的电气模式这种硬件作出规定。一般的都是9针的接口,其中包括CD接口:数据通道接收载波的检测;RD接口:接收数据;SD接口:发送数据;ER接口:数据终端就绪;SG接口:信号用接地;DR接口:数据集就绪;RS接口:请求发送;CS接口:允许发送;CI接口:被呼表示。

用以上接口进行数据通信,还有对电平的要求。所以与51单片机进行通信连接的方式很简单,首先要解决的是电平标准,51的I/O口最大输出5V电压,而RS-232要求电压在±10V,为达到电平匹配,需用到MAX232CPF电平转换芯片,将0~5V电平转换为±10V电平,从而实现电平匹配;然后,数据接口只用到了数据发送与接收2个端口,还有数据的请求发送与允许发送,共4个端口,MAX232CPF还有其他一些外围电路接口,但比较简单,都是些电容接口,从而实现单片机与RS232接口的通信。

f50b6ab0145f9dababfe693f9057ec1c.png

51单片机串口max232通信程序

//工作晶振为11.0592MHz,否则出现返回值错误,一个字节的发送

//工作晶振为11.0592MHz,否则出现返回值错误,一个字节的发送

#include《regx52.h》

#define uchar unsigned char

#define uint unsigned int

uchar a,flag;

uchar table[]={“very good ”};

//-----------初始化定时器和串口-

void inital_TImer1()

{

TMOD=0X20; //必须使用定时器1,串口使用规定

TH1=0Xfd; //定时器1,工作方式2,8位 自动重装

TL1=0Xfd; //高8位与低8位数值必须相同

TR1=1; //定时器1允许位

REN=1; //串口使能

SM0=0; //串口 工作方式设置,工作方式1

SM1=1; ES=1; //串口中断使能

EA=1; // 总中断使能

}

//----------串口中断---------

void gorpe() interrupt 4

{

RI=0; //接受中断标志位,硬件置1,必须软件置0

a=SBUF; // 特殊功能寄存器

flag=1; // 检测标志位

}

//-----接收数据,并向上位机作出反应(即发送返回数据)---

void display()

{

uchar i;

if(flag==1)

{

ES=0; //关闭串口中断,接下来要发送数据,否则发送完一个数据仍会产生中断,产生死循环

for(i=0;i《10;i++)

{

SBUF=table[i];

while(!TI); //判断是否发送完成

TI=0; //发送中断标志位

}

SBUF=a;

while(!TI);

TI=0;

ES=1;

flag=0;

}

}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值