ddgw.net
当前位置:首页 >> 51单片机串行口通信 >>

51单片机串行口通信

把下面的程序稍微改一下:/* 说明:1. U1为发信机,U2位收信机;2. U1收到数据后会打印出AT89C51 U1-->, 并循环点亮8个LED;3. U2接收输入数据后保存最新的30个字符,按'\'后输出AT89C51 U2-->*/#include <reg51.h> /* define

第0步 设置好什么波特率之类的 第一步 SBUF 写个数 这样 那个串口部件就会自己发送了 但是这个速度非常慢的1 CPU可以干耗着 不停的问 你发没发完?你发没发完?你发没发完?…… 发完了CPU再干别的 比如发下一个数2 上面的方法太不效率了 CPU可以完成第一步就走人 当串口发完了之后 在给CPU“按铃” 这样CPU再处理是不是再发一个 这样你明白过程了 就不用我多说了吧?

设置好串行口以后,把要发送的字节送到sbuf就自动发送了,发送以后sbuf里面应该是0,因为sbuf是移位寄存器接收的时候是sbuf自动接收,每收一个bit,就移位一次,一共是移位8次,当满一个字节以后,就自动将标志位置1,然后可以查询标志位,也可以产生中断

串行通讯发送接收关键是发送与接收的频率要一致,也就是波特率要相同 8051的uart控制器实际就是一个移位寄存器,需要一个频率的信号控制移位,这个信号的频率就是波特率,这个信号要由t1定时器给出,8052可以用t1或t2给出 smod是一个倍数,为1时波特率加倍,取0取1都可以,按对应公式计算t1溢出率就行了,一般为了得到最大的波特率都取1

方式 0 :这种工作方式比较特殊,与常见的微型计算机的串行口不同,它又叫同步移位寄存器输出方式.在这种方式下,数据从 RXD 端串行输出或输入,同步信号从 TXD 端输出,波特率固定不变,为振荡率的 1/12 .该方式是以 8 位数据为一

通信线上传输了一个字节到单片机串口上,硬件自动将其接收并存储在SBUF里,此时会产生一个中断(串口接收中断),单片机的相应中断使能(ES,EA)打开的时候,就可以进入中断,方便处理通讯.关闭中断时,仍可以使用查询的方式进行通讯处理.查询RI位,if(RI==1){RI=0;//需要对其清零,硬件不会自动清零的//以下是处理程序}发送的时候把需要发送的字节送入SBUF即可启动硬件发送,单片机只需查询TI(发送标志位)看看发送是否完成就行了.TI也需软件清零.

#include <reg51.h> #include <string.h> unsigned char ch; bit read_flag= 0 ; void init_serialcom( void ) //串口通信初始设定 { SCON = 0x50 ; //UART为模式1,8位数据,允许接收 TMOD |= 0x20 ; //定时器1为模式2,8位自动重装 PCON |= 0x80 ;

在通信中 按传送方式可分为三种:单工,半双工,全双工. 按通信方式可分为两种:异步通信,同步通信.串行口的工作方式有四种:sm0,sm1为选择位.当这两位分别为0 0时,工作方式为0,即8位移位寄存器方式 波特率 f/12 为0 1 时,工作方式为1,即8位异步通信接口 可变 为1 0时,工作方式为2,即9位异步通信接口 f/64,f/32 为1 1时,工作方式为3,即9位异步通信接口 可变 想了解更详细可找本介绍单片机串行口的书看下,推荐网址:http://wenku.baidu.com/view/ace2c77d1711cc7931b716fd.html

1、通信就是是两台设备交换数据(全/半双工)或一台设备向另一台设备汇报工作(单工).2、总体而言分为串行和并行通信.并行速度更快如并口硬盘,串行连接更方便如USB硬盘的USB接口部分.3、就工业远距离通信应用,无一例外采用的是串行.距离远、节省线材,抗干扰强.4、单片机的串口通信是低速、低成本、通用的一种通信方式.常见电平标准是232和485.5、通过一根数据线和一根时钟线来实现单个字节的移位输入输出,从而完成数据的传输.6、51而言,具体控制,主要是硬件模块的初始化(串口工作方式、波特率设置、中断使能)以及通信协议的实现(串口缓冲SBUF读写管理以及协议的解释).

51单片机是通过SBUF这个串口专用寄存器和串口模块来收发数据的.发送时,只要将数据送入到SBUF,等等TI状态到1就发送完毕.同样接收时,RI为1,那么说明SBUF接收完毕一帧数据,可以直接从SBUF读取数据了.

网站首页 | 网站地图
All rights reserved Powered by www.ddgw.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com