1.USART用于异步通讯详解
1.1 USART的异步工作模式
在异步工作模式下, USART 采用的是标准非归零 ( NRZ编码格式 :一位起始位、8 位或 9 位数据位和一位停止位 )。最常用的数据格式是 8 位。片内专用的 8 位波特率发生器可用于由振荡器产生标准的波特率频率。 USART 首先发送和接收最低有效位。 USART 的发送器和接收器在功能上是独立的, 但采用相同的数据格式和波特率。 波特率发生器可以根据 BRGH 位 (TXSTA<2>)的状态产生两种不同的移位速率:对系统时钟 16 分频或 64 分频的波特率时钟。 USART 硬件不支持奇偶校验,但可以用软件实现 ( 奇偶校验位是第 9 个数据位 )。在休眠状态下, USART 不能在异步模式下工作。通过对 SYNC 位 (TXSTA<4>) 清零,可选择 USART 异步工作模式。USART 异步工作模式包括如下重要部分: 波特率发生器, 采样电路, 异步发送器,异步接收器。
1.2 异步发送器
上图展示的是发送器发送原理图。设置异步发送模式应遵循以下一些步骤:
1. 选择合适的波特率,对 SPBRG 寄存器进行初始化。如果需要高速波特率,将 BRGH 位置1 ;
2. 将 SYNC 位清零、 SPEN 位置 1,使能异步串行端口;
3. 若需要中断,将 TXIE、 GIE 和 PEIE 位置 1 ;(发送中断使能、中断总开关,外围中断使能)
4. 若需要发送 9 位数据,将 TX9 位置 1 ;
5. 将 TXEN 位置 1 ,使能发送,这也将置位 TXIF 位;
6. 若选择发送 9 位数据,第 9 位数据应该先写入 TX9D 位;
7. 把数据送入 TXREG 寄存器 ( 启动发送 )。
异步通信数据发送的时序图如下所示:
1.3 与异步发送相关的寄存器
1.4 异步接收器
上图展示的是接收数据器的功能电路图。设置异步接收模式时必须遵循以下步骤:
1. 选择合适的波特率对 SPBRG 进行初始化,如果需要高速波特率,将 BRGH 置 1 ;
2. 将 SYNC 清零, SPEN 置 1,使能异步串口;
3. 若需要中断,将 RCIE、 GIE 和 PEIE 位置 1 ;
4. 如果需要接收 9 位数据,将 RX9 位置 1 ;
5. 将 CREN 位置 1,使 USART 工作在接收方式;
6. 当接收完成后,中断标志位 RCIF 被置 1,如果此时 RCIE 已被置 1,便产生中断;
7. 读 RCSTA 寄存器获取第 9 位数据 (如果已使能),并判断在接收操作中是否发生错误;
8. 读 RCREG 寄存器来读取 8 位接受到的数据;
9. 如果发生错误,通过将 CREN 清零来清除错误。
1.5 与异步接收相关的寄存器
2.USART异步通信初始化技巧
异步发送器/接收器实例分析:
BSF STATUS,RP0 ; STATUE的PRO位置1
MOVLW ; 设定波特率的值,并装载到波特率发生器寄存器中
MOVWF SPBRG
MOVLW 0x40 ; 设定发送状态器的状态 0100 0000B 的含义:
MOVWF TXSTA ; 从动模式(外部时钟)-8位传输数据-允许发送-异步 0-低速波特率-移位寄存器满标志-无奇偶校验
BSF PIE1,TXIE ; 外围中断PIE1的TXIE发送中断置1,打开
BSF PIE1,RCIE ; 外围中断PIE1的RCIE接收中断置1,使能
BCF STATUS,RP0 ; 清除STATUE的PRO位
MOVLW 0x90 ; 设定接收状态控制器的状态 1001 0000B
MOVWF RCSTA ; 串口使能-8位数据接收-禁止接收单字符-连续接收 0-无帧错误-无溢出错误-无奇偶校验
3.为什么我的异步通信频繁报错?
最常见的原因是:
1. 对PIC16C187A单片机使用高速模式(BRGH置1), 而这些单片机在异步高速模式时,其采样电路的工作方式与其它型号单片机不同。
2. 没有正确计算出要装入 SPBRG 寄存器的值。
3. 发送和接收的波特率误差总和太大。
关键字:PIC单片机 异步通讯模式
引用地址:
PIC单片机入门_异步通讯模式详解
推荐阅读最新更新时间:2024-03-16 16:06
PIC单片机-七段数码管的使用
一、编写子程序LED_Display,根据入口参数在某一位7段码LED显示一个数字。点亮的LED位的位数在W寄存器中,该位显示的数字在变量wdata中。变量wdata的位置由用户自行设定。调用该子程序后,选中的数码管持续显示所需的数字100微秒,之后将数码管关闭,退出子程序。 /******************************************************************************* * 函 数 名: Choose_and_light_shumaguan(uint8 position, unit16 i); * 函数功能: 选择并显示七段数码管 * 入口参数: positio
[单片机]
基于PIC单片机的电能表时钟误差分析仪的研究
1引 言 随着社会的发展,用电量增大,为提高用电效率,改善用电量不均衡的现象,国内各省市的电力部门己开始全面推出了复费率电能表,计量单位对复费率电能表检定的任务越来越繁重[1-2]。时钟的准确性是分时计量最重要的一部分。目前的计量单位对复费率电能表时钟检定的方法已经逐渐不能满足需要。为了解决目前复费率电能表时钟检定存在的问题,本文设计了一种基于PIC单片机的复费率电能表时钟误差分析仪的系统。该系统是一种便携式时钟误差检定装置,集计时检定,数据处理,数据传送等功能于一体,具有快捷、准确、有效的特点。 l频率测量原理 系统测量频率采用的是多周期同步测量方法,这种方法是在直接测频的基础上发展测量方法,在目前的测频系统中得到越来越广泛的
[单片机]
手把手教你使用PIC单片机驱动继电器
在现代自动控制设备中,都存在一个电子电路(弱电)与电气电路(强电)的互相连接问题,一方面要使电子电路的控制信号能够控制电气电路的执行元件(如电动机、电磁铁、电灯等),另一方面又要为电子线路的电气电路提供良好的电隔离,以保护电子电路和人身的安全。继电器便能完成这一桥梁作用。 继电器的工作原理与分类 继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。在大多数的情况下,继电器就是一个电磁铁,这个电磁铁的衔铁可以闭合或断开一个或数个接触点。当电磁铁的绕组中有电流通过
[单片机]
PIC单片机实用教程基础篇
PIC单片机(Peripheral Interface Controller)是一种用来开发的去控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。与人类相比,大脑就是CPU,PIC 共享的部分相当于人的神经系统。 PIC 单片机是一个小的计算机 PIC单片机有计算功能和记忆内存像CPU并由软件控制允行。然而,处理能力—存储器容量却很有限,这取决于PIC的类型。但是它们的最高操作频率大约都在20MHz左右,存储器容量用做写程序的大约1K—4K字节。 时钟频率与扫描程序的时间和执行程序指令的时间有关系。但不能仅以时钟频率来判断程序处理能力,它还随处理装置的体系结构改变(1*)。如果是同样的体系结构,时钟频
[单片机]
基于PIC单片机的家用电器电话遥控装置
随着社会的发展和人们生活水平的提高,越来越多的家用电器进入了人们的生活,这些家用电器给人们的生活带来了很多的方便和享受,同时随着电话在家庭中的普及,利用电话实现家用电器遥控是家用电器未来的发展方向[1]。本文介绍一种基于单片机的电话遥控装置。利用该装置,用户可以通过任意一部双音频电话(包括手机和固定电话)遥控家中的电器。当用户要下班时,可以通过电话,提前打开空调、电饭锅,用户回到家里时,饭煮好了,房子里温度刚刚好。用户也可以通过电话随时开关、检查家里电器的使用情况等等。总之,电话通到哪里,用户就可以从哪里遥控家中的电器。 1 遥控装置的工作原理 基于PIC单片机控制家用电器电话遥控装置的工作原理是:当有电话打入时,振铃
[单片机]
PIC单片机软件编程技巧
项目是有关机器人控制的实现。控制部分采用PICl6F7X系列单片机,运用汇编语言编程,运行速度较快,能够达到系统的要求。在这里使用的大多是数字信号的控制,电机的控制只有开和合两种状态。在动作的过程中需要两只手臂、身体、头部、脚部等的协调动作。整个控制系统比较复杂,因而在PIC程序编写和空间分配方面需要注意一些问题。 1、 动作标志位的使用 在整个控制中,组合的动作很多,当所有动作定位都通过光电开关控制时,在程序编写上就有一些问题。如要求左手上升到鼓掌位、右手上升到举手位(手初始位置在最下的放下位),光电开关0有效(即为0时是挡住),到达正确位置。用简单的理解可以写成下面的程序: list P=16c73 call left
[单片机]
PIC单片机(PIC16F877A)外部中断程序
正常运行为流水灯,发生中断则灯全亮。 #include pic.h __CONFIG(0x3B31); //4M #define uchar unsigned char #define uint unsigned int #define DELAY 500 uint j=50000; void delay(uint x) //1ms { uint y,z; for(y=x;y 0;y--) for(z=25;z 0;z--); } void init(void) { TRISB0=0; RB0=1; //为下降沿创造高电平的初始条件 TRISB0=1; //输入
[单片机]
PIC单片机的4×4行列式键盘工作原理
PIC单片机的4×4行列式键盘工作原理: (1)单片机系统键盘原理 行列式键盘的接法比独立式键盘的接法复杂,编程实现上也会比较复杂。但是,在占用相同的I/O端口的情况下,行列式键盘的接法会比独立式接法允许的按键数量多,其原理图如图1所示。 图1 4×4行列式键盘的原理图 实际的工程中,可能会使用PIC16C5X这种通用的可编程的键盘、显示接口器件,使用PIC16C5X单片器件就能够完成键盘输入和显示控制两种功能。 行列式键盘的工作方式是先用列线发送扫描字,然后读取行线的状态,查看是否有按键按下。键盘部分提供一种扫描的工作方式,可以和具有64个按键的矩阵键盘相连接,能对键盘不断扫描、自动消抖、自动识别按
[工业控制]