如何使用PIC16F5X实现异步串行I/O口

发布者:CelestialMagic最新更新时间:2018-03-31 来源: eefocus关键字:PIC16F5X  异步串行  I  O口 手机看文章 扫描二维码
随时随地手机看文章

  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口即可。

串口接收和发送的流程图

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

串口接收和发送的流程图

  2.1串口发送原理

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

串口发送源程序

串口发送源程序

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

  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信号。串口接收源程序如下所示:

串口接收源程序

34

  3.软件调试

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

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

时设置

     文中采用了实时跟踪技术,具有很强的排除错误能力,可提供4k实时跟踪查看窗口。程序全速运时,即可进行实时跟踪。当程序遇到断点或人为停止时,可以通过窗口观察前4k运行的指令、发送的数据是否完毕,同时可判断程序设计的思路是否正确、程序有没有跑飞、在哪里出现了问题,以便快速检查错误的根源。实时跟踪的窗口如下图所示。

实时跟踪的窗口

  在程序运行过程中,当不需要查看全部数据存储器的值,只须查看与程序运行有关的特殊功能寄存器或是用户定义的变量值时,可打开“观察变量窗口”,在“增加SFR”下拉列表可以查看特殊的功能寄存器,也可以对寄存器的值进行修改;在“增加Symbol”下拉列表中可增加用户定义的变量。以本文的源程序为例,可以看到TMRO、PORTA、PORTB的值,也可以看到自定义变量DR、DX、XmtReg、RcvReg的值,从而可以更好地控制接收和发送是否完毕。观察变量窗口如下图所示。

观察变量窗口

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

超级终端的源程序

  实现上图所示超级终端的源程序如下所示:

实时跟踪的窗口

超级终端的源程序

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

3

  4.结语

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


关键字:PIC16F5X  异步串行  I  O口 引用地址:如何使用PIC16F5X实现异步串行I/O口

上一篇:基于PIC16C65单片机的扫描隧道显微镜的电子学系统
下一篇:基于PIC16F877微控制器触摸式调光台灯智能化控制的实现

推荐阅读最新更新时间:2024-03-16 15:58

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之kernel移植
前篇文章已经在tqimx6q上成功跑起了新版BSP的uboot,本文来配置下新版BSP的kernel,使kernel能在tqimx6q上正常启动。 准备工作 每次移植kernel的时候都会做的工作就是找到与当前开发板接近的config,其实uboot移植的时候也是一样的。由于tqimx6q的芯片是imx6q的,所以,还是以mx6q_sabresd为例。另外,自己动手移植BSP时应该充分使用官方文档,本人以为,以下文档是非常有用的: (1) i.MX 6 BSP Porting Guide: 该文档详细的记载了BSP移植的流程。 (2) i.MX 6 SABRE-SD Linux User's Guide:
[单片机]
宝马i系要甘拜下风
很多人想让我评价一下 乐视 发布的 FF91 ,这难不倒我。 前 宝马 的设计师Richard Kim带领的设计团队,把宝马i系列没有实现的理念,都在FF91上得以实现。FF91有让设计团队爽到爆的,甚至有点任性的超大尺寸(这个尺寸在国内也只能自动泊车了,因为FF91的宽度在国内大部分车位车门打开都费劲。当然,美国市场没这个问题),可以把所有想法全部体现在内外的设计和布置上。   如果用一句话来形容:FF91更像是FF推出的宝马i7,无论是车身布置、对开门方式、内部设计,都像是宝马i系列纯电动的未来旗舰版,XXL版的i3,性能也足够NB。   FF91作为一辆智能电动车,在设计理念和技术呈现上,已经很明显的领先于传统汽车品牌设计
[嵌入式]
基于I2C总线的高分辨率红外式触摸屏设计
  引言   随着平面显示器的大规模应用和大屏幕平板显示器的出现,红外触摸屏的应用已十分广泛。同时,分辨率的进一步提高成为红外触摸屏应用于大屏幕的关键,本文提出了一种提高红外式触摸屏分辨率的方法。   系统结构及工作原理   系统工作原理   红外触摸屏基本原理是光束阻断技术,它不需要在原来的显示器表面覆盖任何材料,只需在显示屏幕的四周安放一个框架。框架两个对边上,一边安装红外发光二极管(LED),另一边安装红外线探测器,在显示屏幕的表面形成一个由红外线组成的栅格。当有任何物体进入这个栅格的时候,就会阻挡一些光线,光电转换电路就会收到变化的信号,由ADC转换后,MCU将计算的触摸位置坐标传递给操作系统。   早期红外
[嵌入式]
十五.ARM裸机学习之I2C通信详解
常用的串行总线协议: 常用的微机与外设之间进行数据传输的串行总线主要有I2C总线、SPI总线和SCI总线。 其中I2C总线以同步串行2线方式进行通信(一条时钟线,一条数据线)。 SPI总线则以同步串行3线方式进行通信(一条时钟线,一条数据输入线,一条数据输出线)。 SCI总线是以异步方式进行通信(一条数据输入线,一条数据输出线)。 1-wire,即单线总线,又叫单总线。例如DS18B20温度传感器就是用的这种总线结构. 我们这里重点详解下I2C串行总线,我们这里以数据手册的IIC时序图为例讲起,看不懂时序图的小伙伴必须补上来了. 一.I2C串行总线的组成及工作原理. 1.I2C总线是PHLIPS公司推出的一种串行总线,它只
[单片机]
十五.ARM裸机学习之<font color='red'>I</font>2C通信详解
富士康计划最早于2021年在I94公路上使用自动驾驶卡车
  核心提示:据外媒报道,富士康科技集团正在与美国政府高官进行磋商,或许最快将于2021年在第94号国际公路上运营 自动驾驶 卡车。富士康将在路上建立通信系统,接收交通速度等信息。当电动卡车在公路上行驶时,或许能通过无线系统实现无线充电功能。据富士康首席执行官郭台铭的助理Louis Woo透露,该公司旨在其工厂周边打造新一代的交通环境,目前的探讨结果是:晚上11点至早晨6点期间,允许自动驾驶电动卡车在该公路上通行。详见正文。       据外媒报道,富士康科技集团(Foxconn Technology Group)正在与政府高官进行磋商,或许最快将于2021年在第94号国际公路上运营自动驾驶卡车。   这类卡车将装载富士康的
[嵌入式]
STM32学习之I2C
I2C总线是由NXP(原PHILIPS)公司设计,有十分简洁的物理层定义,其特性如下: 只要求两条总线线路:一条串行数据线SDA,一条串行时钟线SCL; 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机关系软件设定地址,主机可以作为主机发送器或主机接收器; 它是一个真正的多主机总线,如果两个或更多主机同时初始化,数据传输可以通过冲突检测和仲裁防止数据被破坏; 串行的8 位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s; 连接到相同总线的IC 数量只受到总线的最大电容400pF 限制。 其典型的接口连线如下: I2C
[单片机]
STM32学习之<font color='red'>I</font>2C
飞思卡尔 i.MX 系列处理器助力打造全新智能汽车
汽车从诞生至今100多年来,已经逐渐从人们的代步工具演化为生活和娱乐空间的延续,随着汽车逐渐成为大多数人生活中的必需品,更安全、更舒适、更便捷的现代化智能汽车在众多电子设备的辅助下呼之欲出。信息娱乐系统和远程信息控制系统正是在这种市场需求下越来越多地应用到汽车中。在8月24日开幕的飞思卡尔技术论坛(FTF)上,飞思卡尔分享了其i.MX51的综合平台解决方案,该系列处理器为打造全新智能汽车提供了强有力的支持。 全新的市场趋势 自上世纪60年代起,电子技术的进步就已成为汽车工业发展的最大动力,上世纪90年代,国外提出智能交通系统概念,智能车辆则是智能交通系统的重要组成部分。智能车辆技术包含了计算机、移动通讯、自动控制等
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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