当前位置:首页 > 单片机 > 单片机
[导读]   1.概述  PIC16F5X微控制器为MicroChip公司生产的一系列低成本、高性能、8位、全静态和基于闪存的CMOS单片机。本文将详细介绍如何使用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信号。串口接收源程序如下所示:

  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实时在线仿真器极大地方便了用户进行软件调试,更快地实现异步串行口。

 

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭