单片机串口通信

通信方式

并行

适合短距离通信,并行通信控制简单、相对传输速度快(8位一起传输)。

串行

只能一位一位的传送。

同步(了解)

建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙。

发送方对接收方的同步可以通过外同步和自同步

异步(常)

以字符(构成的帧)为单位进行传输。数据位从低到高传送。

格式:

这里的空闲时间是任意的。

串行通信的制式(传输方向)

单工(仅能沿一个方向)

半双工(可进行双向,但需分时)

全双工

串行通信的错误校验

奇偶校验

在发送数据时,数据位尾随的1位为奇偶校验位(1/0)。奇校验时,数据中1的个数与检验位1的个数之和应为奇数;偶校验时,数据中1的个数与校验位1的个数之和应为偶数。接收字符时,对1的个数进行校验,若字符不一致,则说明传输数据过程中出现错误。

代码和校验

发送方将所发数据块求和(或各字节异或),产生一个字节的校验字符(校验和)附加到数据块末尾。接收方接收数据时,同时对数据块(除校验字节外)求和(或各字节异或),将所得的结果与发送方的“校验和”进行比较,一致则无差。

循环冗余校验

通过某种数学预算实现有效信息与校验位之间的循环校验,常用语对磁盘信息的传输、存储区的完整性校验。

串口的基本结构

SBUF:51单片机中的特殊寄存器,串行数据缓冲器(一个接收一个发送),两个其实是共用的一个地址99H,但是两个在物理上面是分开的。

当发送使用时,就采用SBUF=XXX;  (XXX为需要传送的数据)

当接收使用时,采用XXX=SBUF;

记得因为是串行的所以传输都是一位一位进行的。

T1溢出率:T1计时器的溢出频率(就是计时器每次低位计满向高位进位时间的倒数)

用处:用于计算波特率(每秒传输二进制代码的位数)

存器介绍IE(interrupt enable):(可位寻址)设定各个中断源的打开和关闭

IP(interrupt prior)中断优先级寄存器:(可位寻址)用来设定各个中断源属于两级中断中的哪一级

中断源:

中断响应条件:

1.中断源有中断请求

2.此中断源的中断允许位为1

3.CPU开中断(EA=1)

代码书写:

1.先开总中断EA

2

.然后再开特定的中断去控制

3.如果有特殊需要优先级问题再设置IP

4.中断函数书写

格式

void 函数名() interrupt 中断号(上面图示的序号)

//中断函数返回值一定是void

//函数名随便写

//中断号用来判断是哪个中断源

计时器寄存器介绍TCON 支持位寻址 :控制寄存器,控制T1、T0的启动和停止及设置溢出标志

TMOD,不支持位寻址:定时/计数器的工作方式寄存器,确定工作方式和功能

计时器代码书写步骤:1.EA=1;

2.ETX=1;                            //开启计时器X中断

3.配置工作方式  TMOD=0x..; //根据自己需求按照上表来配

3.配置计时器初值

//THX=(65535-N)/256;

//TLX=(65535-N)%256;

//N由你要计时的时长决定。计时器计一个数花费一个时钟周期来计算。

4.TRX=1;                           //开启计时器X

串口通信寄存器介绍PCON电源管理寄存器 :(不可位寻址)

用来管理单片机的电源部分,包括上电复位检测、掉电模式

、空闲模式等

SCON:(可位寻址)用以设定串行口的工作方式、接收/发送控制以及设置状态标志

波特率计算

SMOD就是PCON中的第一位,默认为0

fosc为晶振频率,所以自己设定不同波特率时,也要考虑晶振不同的问题。

(0)

相关推荐