用软件实现PIC16F5X异步串行口

发布者:心灵之舞最新更新时间:2017-12-20 来源: 21IC中国电子网关键字:软件实现  PIC16F5X  异步串行口 手机看文章 扫描二维码
随时随地手机看文章

1. 概述

PIC16F5X微控制器为MicroChip公司生产的一系列低成本、高性能、8 位、全静态和基于闪存的CMOS 单片机 。本文将详细介绍如何使用PIC16F5X实现异步串行I/O口。

系统设计中通常需要完成片对片的数据串口通信,虽然PIC16F5X系列微控制器没有片上串行口,但是可以通过软件模拟串口实现通信,即一个I/O口作为输入,用于接收数据,另一个I/O口作为输出,用于发射数据。当考虑到批量应用时,通过软件模拟实现的串行I/O口成本更低。

2. 实现原理

文中通过两个程序模拟全双工RS-232通信和半双工通信。半双工通信时,使用8MHz作为输入时钟,波特率可以达到19200;全双工通信时,8MHz晶振时波特率可达到9600,20MHz晶振时可达到19200。通讯数据格式为一个或两个停止位、7个或8个数据位、没有奇偶位,可以通过LSb或MSb发送或接收。输入时钟越高时,分辨率相应会越好。用户须根据通信改变头文件;软件不提供握手协议,用户使用XON/XOFF可合并软件握手;对于硬件握手,使用RTS和CTS作为另外的两个数字I/O口即可。

串口发送和接收的流程图分别如图1和图2所示,在传输过程中,起始位通过传送数据位DX发送数据,DX=0时持续B秒;当DX置1或清0时,每隔B秒则相应回应数据位一次。

软件实现半双工或全双工的RS-232通信,结合PICE-II仿真器突出的优点在于排除错误的能力极强,可以进行实时跟踪,能快速检测错误的根源。运用PICE-II实时在线仿真器极大地方便了用户进行软件调试,更快地实现异步串行口。

2.1 串口发送原理

DX输出脚用于发送数据,串口发送源程序如下所示:

;**************************************************************************

Transmitter

**************************************************************************;

Xmtr MOV lw 8

MOV wf XCount

bcf Port_A,DX

X_next call Delay

rrf XmtReg

btfsc STATUS,CARRY

bsf Port_A,DX

btfss STATUS,CARRY

bcf Port_A,DX

decfsz Count

goto X_next

X_Stop call Delay

bsf Port_A,DX

x_Over goto X_Over

在用户程序中,用户须下载数据并发送到XmtReg,然后使X_flag置1,检测数据是否为继续发送状态;同时,当X_flag置1时改变XmtReg值将使传送的数据发生错误。

2.2 串口接收原理

DR脚用于接收数据。用户须经常确保R_done标志位是否接收完毕。如果继续接收,则R_flag置1保持不变;当接收完毕时,R_done置1。当检测到下一个起始位时,R_done清0。同时,用户须经常核对R_done标志位的值,当该位置1时,接收数据存储在寄存器RcvReg中;当检测到一个新的起始位时,该寄存器清0,即当(R)_done置1时,接收数据存储在寄存器RcvReg中,其它寄存器数据从RcvReg中进行复制;当检测到下一个起始位时,则清除R_done标志位。

用户可以改变代码实现接收,如果接收的速度很大时,可发送XOFF信号,为接收到更多的数据,须发送XON信号。串口接收源程序如下所示:

;**********************************************************************

Receiver

***********************************************************************;

Rcvr btfsc Port_A, DR

Goto Rcvr

MOV lw 8

clrf RcvReg

R_next call Delay

bcf STATUS,CARRY

rrf RcvReg

btfsc Port_A,DR

bsf RcvREG,MSB

call Delay

decfsz Rcount

goto R_next

R_Over goto R_Over

3. 软件调试

为更好地模拟串口通信,排除用户电路故障,检测硬件运行状态或者检查有问题的 单片机 系统,本文采用PICE-II进行仿真调试。该仿真器具有单步、断点、读出、修改等操作,可以随时观看中间结果而不改变运行中原有数据的性能和结果,更显著的特点是采用硬件断点,不会引起错误、采用CPLD大规模集成电路设计、4K向前实时跟踪程序的运行、可以随时观察程序存储器、内部RAM以及特殊功能存储器的内容。

该仿真主机采用专用的时钟芯片,可以提供30kHz~40MHz之间任意频率的仿真时钟。在该程序中,当需改变波特率时只要改变仿真时钟即可,无需更换目标板晶振等,即很大程序上省去了更换晶振的麻烦。在模拟半双工通信时,文中选择波特率19200,该系统工作时钟频率可设置为8MHz,也可以根据用户需要选择频率。时设置如图3所示。

在程序调试过程中,可以使用单步进入、单步跳过、单步跳出、连续单步等功能,也可以自动单步运行,在需要查看的地方点击“暂停” 使运行停止即可。该调试简单易行,不占用任何资源,所有地址空间全部提供给用户,同时还可以通过超级终端观看接收的数据,如图6所示。

Transmitter ;

Xmtr

IF X_Nbit

MOV lw 8

ELSE

MOV lw 7

ENDIF

MOV wf Count ;

IF X_MODE

ELSE

IF X_Nbit

ELSE

rlf XmtReg,Same

ENDIF ;

bcf PORTA,DX ;

/*Send Start Bit*/

call Delay1

X_next bcf STATUS,C ;

IF X_MODE

rrf XmtReg,Same ;

/*Conditional Assembly*/

ELSE ;

/* to set if MSB first or LSB first*/

rlf XmtReg,Same

ENDIF ;

btfsc STATUS,C

bsf PORTA,DX

btfss STATUS,C

bcf PORTA,DX

call DelayX

decfsz Count,Same

goto X_next

bsf PORTA,DX ;

/* Send Stop Bit*/

call Delay1

IF Sbit2

bsf PORTA,DX

call Delay1

ENDIF;

goto Talk

Receiver ;

Rcvr

IF R_Nbit

MOV lw 8 ;

/*8 Data bits*/

ELSE

MOV lw 7 ;

/*7 data bits*/

ENDIF;

MOV wf Count

关键字:软件实现  PIC16F5X  异步串行口 引用地址:用软件实现PIC16F5X异步串行口

上一篇:如何破解MCU的方法及其预防措施
下一篇:详解一个非常好的串口程序:Mega128

推荐阅读最新更新时间:2024-05-03 02:10

SAW RFID阅读器的信号处理电路与软件实现
  RFID是一种简单的无线系统,只有两个基本器件,该系统用于控制、检测和跟踪物体。系统由一个询问器(或阅读器)和很多应答器(或标签)组成。 RFID 技术的基本工作原理并不复杂:标签进入磁场后,接收解读器发出的射频信号,凭借感应电流所获得的能量发送出存储在芯片中的产品信息(Passive Tag,无源标签或被动标签),或者主动发送某一频率的信号(Active Tag,有源标签或主动标签);解读器读取信息并解码后,送至中央信息系统进行有关数据处理。本文将介绍一种SAW RFID阅读器的信号处理电路设计及其软件设计。   1 阅读器的系统分析   阅读器是一款快速、实用、功能超强的桌面端阅读软件。 RSS阅读器是一种软件
[网络通信]
MSP430G2553软件实现IIC
程序框图 单片机IIC控制流程框图 代码实现 IIC实现代码(前面的宏定义适用于MSP430) #define uchar unsigned char #define uint unsigned int //=====================================延时函数================================= #define CPU_F ((double)8000000) #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((
[单片机]
MSP430G2553<font color='red'>软件</font><font color='red'>实现</font>IIC
Keysight Genesys 2015 软件实现业界最快速的射频电路设计
Keysight Sys-Parameter 利用已有元器件技术指标进行仿真,免除射频系统硬件设计迭代 新闻要点: Keysight Sys-Parameters 支持射频设计师轻松使用已发布的元器件技术指标进行仿真 与世界领先的射频系统元器件厂商和设计工程师协作开发 2016 年 3 月 2 日,北京――是德科技公司(NYSE:KEYS)日前宣布其业界领先的低成本射频仿真和综合软件 Genesys 2015 推出最新版本。Genesys 2015 为电路和系统设计工程师量体设计,采用具有突破性的 Keysight Sys-Parameters,使设计工程师能够利用现有的元器件技术指标进行射频系统仿真;其完备的射频
[测试测量]
基于LabVIEW开发平台实现读写器自动化测试软件的设计
引言 超高频RFID读写器射频的测试项目有载波频率容限、占用带宽、发射功率、邻道功率泄露比和杂散发射等。在通常的手工测试中,每一项测试都要对仪器进行重新配置、重复的手工测试和记录大量的数据,不仅浪费时间而且还容易出错。RFID测试软件通过通用总线接口GPIB接口把计算机和仪器有机地融合为一体组成一个测试系统,从而把计算机的数据处理能力和仪器的测量、控制能力结合在一起,以使测试流程集成化简单化,最大程度地降低测试人员的工作量与操作复杂程度。该测试系统具有自动控制、数据采集和报告自动生成功能,软件提供仪器配置、仪器设置、仪器校准等信息,并提供实时操作提示、仪表的工作状态和当前测试状态等信息。 1、 测试系统的硬件构成 图1所示的测
[测试测量]
基于LabVIEW开发平台<font color='red'>实现</font>读写器自动化测试<font color='red'>软件</font>的设计
一种新型DSP软件在线升级方法的研究与实现
孙亚萍,张慧熙 随着IT技术的迅猛发展,数字化技术已被广泛应用到国民经济的各个领域。数字化技术的核心包括两个部分:MCU或DSP等数字控制芯片和相应的软件程序。一般的数字芯片均带有Flash存储空间、丰富的外设模块,其中包括各种常见的通信接口(例如I2C、RS232等)。同时,为了满足不断变化的应用需求,一般会在相应的软件程序设计中加入Bootloader功能,即利用系统已有的通信接口,依靠BOOT程序在线更新MCU或DSP中的软件。完成软件更新之后,运行更新版本程序来实现系统功能的扩展或升级。 目前,常用的更新方法有2种:(1)直接刷新Flash中已有的代码来实现软件的升级。虽然该方法实现简单,但是存在意外风险,即当系统
[嵌入式]
一种新型DSP<font color='red'>软件</font>在线升级方法的研究与<font color='red'>实现</font>
新解决方案基于R-car V3M 实现了可定制的3D全景可视软件
电子网消息,全球领先的半导体解决方案供应商瑞萨电子株式会社(TSE:6723)与汽车行业领先的嵌入式软件供应商Cogent Embedded公司,今日宣布两家公司共同开发了一款3D全景可视解决方案,在停车或低速行驶时为驾驶员提供协助。新解决方案专为入门级和中级车型的泊车辅助系统而设计,它基于R-Car V3M SoC,该SoC自带专用图像渲染单元(IMR), 在瑞萨参考板上实现了可定制的3D全景可视化软件。该解决方案无需使用GPU,可帮助系统开发人员以低成本开发节能全景环视泊车辅助系统。Cogent Embedded也可提供按需定制服务,使系统开发人员能够专注于开发应用软件以实现系统的差异化。 新3D全景可视解决方案将在201
[半导体设计/制造]
PIC单片机软件异步串行口实现技巧
  在用单片机开发各种嵌入式应用系统时,异步串行通信是经常要用到的一种通信模式,很多应用中还要求实现多路异步串行通信。大家平时熟悉的各种厂家的单片机,绝大部分片上只提供一个硬件UART模块,利用它可以方便实现一路串行通讯。PIC系列单片机也不例外,在其丰富的产品家族成员中,除高端系列(PIC17/18)一些型号片上带有两路硬件UART模块外,其它大部分型号片上只有一路UART,一些低端廉价的PIC单片机甚至还不带硬件 UART。为了提高系统的性能价格比,就要求设计工程师用软件增加实现一路或多路异步串行通信。很多工程师对用软件实现的UART在可靠性和效率方面持怀疑态度,其实关键问题是看软件采用何种方式来实现可靠的UART功能。   在
[单片机]
PIC单片机<font color='red'>软件</font><font color='red'>异步</font><font color='red'>串行口</font><font color='red'>实现</font>技巧
RF软件定义仪器突破传统机箱限制 实现高性能射频测试
随着测量速度、弹性与精确度的逐渐提升,工程师必须脱离机箱的框架,继续寻找RF测试的创新解决方案。而软件定义的模块化仪器所提供的新工具,正满足越来越多无线标准的测试。 通常情况下,工程师在测试新的无线标准时,往往会选择使用规格最接近的机箱。对于拥有多种测试需求的自动化测试系统来说,上述方法常导致不同的测量需求就需不同的机箱。当测试需求一致且不变时,机箱测试的方法当然游刃有余,但若要测试符合多种无线标准的复杂射频(RF)设备时,此方法就显得麻烦、昂贵且缓不济急。相比之下,软件定义的测试方法适用于RF的认证、检验与产品测试。当然,传统的RF机箱在设计平台中仍持续扮演重要角色。 无线设备演进快 测试机箱望尘莫及 现今工程师必须脱离RF测
[测试测量]
RF<font color='red'>软件</font>定义仪器突破传统机箱限制 <font color='red'>实现</font>高性能射频测试
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved