当前位置: 代码迷 >> 单片机 >> RS232串口通讯
  详细解决方案

RS232串口通讯

热度:47   发布时间:2016-04-28 15:17:28.0
RS232串口通信
单片机进行串口通信时需要在单片机程序中设定数据位、停止位、奇偶校验位吗 ?
求解答!
串口通信 单片机

------解决方案--------------------
设置帧格式。比如帧头,数据长度,数据,校验位,帧尾等。
当单片机接收的帧格式正确时,表明数据接收正确,然后进行接下来的操作。
------解决方案--------------------
有关51串口通信
 http://www.cnblogs.com/steararre/archive/2012/03/21/2410445.html

(1)SCON 是一个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志:
 
SCON        位      7        6         5         4         3         2           1            0
位于98h           SM0     SM1    SM2    REN     TB8     RB8       TI           RI
 
1.SM0与SM1是工作方式控制位
2.SM2与方式有关,一般只用方式1所以,SM2一般用不到, 
3.REN,允许串行接收位。由软件置REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。
4.TB8,在方式2或方式3中,是发送数据的第九位,可以用软件规定其作用。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。
    在方式0和方式1中,该位未用。
5.RB8,在方式2或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。在方式1时,若SM2=0,则RB8是接收到的停止位。
6.TI,发送中断标志位。在方式0时,当串行发送第8位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使TI置1,向CPU发中断申请。在中断服务程序中,必须用软件将其清0,取消此中断申请。
7.RI,接收中断标志位。在方式0时,当串行接收第8位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使RI置1,向CPU发中断申请。也必须在中断服务程序中,用软件将其清0,取消此中断申请。
 #### 如果使用方式一的话,只要设置SM0=0,SM1=1选择方式一;REN=1启动串行口接收数据;TI跟RI,在中断服务程序中,必须用软件将其清0,取消此中断申请。
 
(2) PCON中只有一位SMOD与串行口工作有关 :
  SMOD(PCON.7)  波特率倍增位。在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。复位时,SMOD=0。
 
SBUF可读可写
 
 
串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下:
§确定T1的工作方式(编程TMOD寄存器);/*TMOD寄存器 有8位,低4位是控制定时器0的,高四位是控制定时器1的,分别为GATE(初始化时候是0,不用管它)、C/t(定时计数选择位,0位定时器)、M1、M0(工作方式选择位)*/
§计算T1的初值,装载TH1、TL1; /* T1 溢出率 = fosc /{12×[256 -(TH1)]} 其中fosc为单片机的主频*/
§启动T1(编程TCON中的TR1位);
§确定串行口控制(编程SCON寄存器);
串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)。