用软件实现PIC16F5X异步串行口

发布者:kappa20最新更新时间:2017-12-06 来源: eefocus关键字:软件实现  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秒则相应回应数据位一次。 


  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  
R_next  bcf     STATUS,C  
       IF      R_MODE  
       rrf     RcvReg,Same     ;  
/* to set if MSB first or LSB first*/  
       ELSE  
       rlf     RcvReg,Same  
       ENDIF  
       btfsc   PORTA,DR ;  
       IF      R_MODE  
       IF      R_Nbit  
       bsf     RcvReg,MSB       ;   
/*Conditional Assembly*/  
       ELSE  
       bsf     RcvReg,MSB-1  
    ENDIF;  
       ELSE  
       bsf     RcvReg,LSB  
       ENDIF ;  
       call    DelayY  
       decfsz  Count,Same  
       goto    R_next 

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


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

上一篇:LCD1602显示C语言
下一篇:PIC单片机PWM模块应用实验程序

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

TI汽车网关处理器DRA821助力实现软件定义汽车
自动驾驶、电气化和与云端连接的趋势正在使软件成为优先事项,这就是为什么汽车设计师正在重塑现代汽车的架构并向软件定义的汽车迁移。 如今汽车内的许多系统是具有独立功能的电子控制单元(ECU)的集合。这些ECU通过传统的控制器区域网络、本地互连网络和其他低带宽网络进行通信。ECU也被划分为各种功能域,如动力系统控制等。然而,高端汽车中的一百个或更多的ECU使得在每个ECU中实现下一代功能是不现实的。 为了解决这一限制,一种方法是用几个计算平台取代ECU。例如,车辆结构可以采用一个计算平台来控制内部机舱的功能,如信息娱乐系统或仪表盘。另一个计算平台控制车辆的运动。软件定义的车辆架构能够在汽车的各个功能域带来各种好处,包括更简单的开
[汽车电子]
TI汽车网关处理器DRA821助力<font color='red'>实现</font><font color='red'>软件</font>定义汽车
TI全新MCU软件在工业系统中实现亚微秒级电流
  德州仪器 (TI)日前宣布推出DesignDRIVE快速电流环路(Fast Current Loop)软件,使C2000™ 微控制器(MCU)成为业界首款电流环路性能低于1微秒的器件。下面就随工业控制小编一起来了解一下相关内容吧。 TI的C2000™ MCU产品组合与DesignDRIVE软件共同提供了片上系统(SOC)功能,并简化了驱动控制系统的开发。新型DesignDRIVE快速电流环路软件不仅在性能上优于传统基于MCU的电流环路解决方案,同时还能通过取消通常用于外部电流环路控制的现场可编程门阵列(FPGA)来简化设计。快速电流环路软件是C2000 controlSUITE™ 软件的免费更新版。如需了解更多信息,敬请访问
[工业控制]
SMARTCAR软件平台实现汽车电子系统软件的整体设计
  随着汽车电子向着智能化、标准化、网络化的方向发展,软件开发在产品开发中所占的比重不断增加,采用平台化的设计方法降低成本、缩短开发时间、充分利用已有资源成为一种必然趋势。   目前,主要的汽车电子软件的开发标准有AUTOSAR、MISRA和OSEK。浙江大学CCNT实验室根据已有的标准和平台,开发出了SMARTCAR汽车电子软件平台,包括了智能汽车平台和汽车电子软件开发平台。   浙江大学副校长吴朝晖老师同时也是CCNT的学术带头人,他介绍说,包括面向智能汽车的自适应中间件平台ScudWare和在此基础上开发的一个智能汽车空间原型系统,是由车载处理中心、各种上下文采集设备、以及一系列远程Web服务器组成的一个计算环境,主
[嵌入式]
基于LPC11C24微控制器组成的CAN网络,实现对节点MCU的软件更新
0引言 分散型控制系统中的现场终端一般由控制器和各检测模块构成,它们之间通过一定的通信网络建立数据的交换链路。这种系统具有高可靠、开放性、灵活性、协调性、易维护等优点。然而,该分散型系统也具有终端数量多、分布范围广的特点。一旦终端系统软件存在缺陷或用户提出新的功能和指标要求时,其升级、维护的工作量和成本都非常大。本文针对上述情况,设计了一种方便、灵活、快速及稳定地对MCU节点进行在线更新的机制。基于LPC11C24微控制器组成的CAN网络,采用IAP编程技术(In Application Programming),实现了对目标节点MCU的软件更新功能。 1 LPC11C24单片机和CAN总线 恩智浦半导体(NXP)推出业界首款
[单片机]
基于LPC11C24微控制器组成的CAN网络,<font color='red'>实现</font>对节点MCU的<font color='red'>软件</font>更新
MPEG-4在视频监控应用中的软件实现
1 引言     目前,用于数字视频监控的图像压缩标准主要是H.261 和MPEG-1,他们在实际应用中有一定的局限性。第一,他们的适应性差,不能根据网络情况自适应的调节传输率,使得网络发生拥塞时性能急剧下降;第二,他们不具备较强的用户交互性。MPEG-4 能弥补以上不足,还具有在监控应用中的独特优势:由于压缩比是同质量的MPEG-1 的十倍多,所以可大大节约存储空间和网络带宽;错误恢复能力强:当网络传输有误码或丢包现象时,MPEG4 受的影响很小并且能够迅速恢复;图像质量高:可以达到接近DVD 的效果。 2 设计思路     根据视频监控的图像特点及其实时性要求,考虑到实际中网络的不稳定性,进行了编码软件的设计。视频
[嵌入式]
基于DSP Builder的软件无线电调制器的设计与实现
1.引言 软件无线电(software defined radio)是由J.Mitola在1992年提出的一个概念,它的核心思想是在完全可编程的硬件平台上通过注入不同的软件,实现对工作频段、调制解调方式、信道多址方式等无线功能的改变。调制解调技术在软件无线电的研究过程中是一个重要的组成部分。目前对于软件无线电调制技术的实现多是采用具有调制功能的专用芯片(其中应用较为广泛的是AD公司的AD985X系列) 或是可编程器件和专用器件相结合的设计方法实现 ,然而在某些场合,这些调制方式和控制方式与系统的要求差距很大。因而,完全采用高性能的FPGA器件设计出符合自己需要的调制电路就是一个很好的解决方法 ,它提供了一个良好的数字无线通讯系统
[应用]
软件定义汽车如何实现更可靠更易用?
一个多世纪前,福特 T 型车成为第一款量产汽车。虽然T型车不再能与现代汽车相媲美,但它的制造理念至今依然流行,例如可靠性和易用性,但人们对更智能、功能更丰富和节能的汽车的需求不断增长。 软件定义汽车(SDV)现已成为汽车公司的下一个里程碑。 这不仅是因为特斯拉等公司加速了电动汽车和先进驾驶系统的出现和普及,还因为所有行业都受到技术进步和软件日益增强的影响。 公众期望最常用的设备之间能够实现可靠的连接和协作,而汽车自然而然地成为了这些期望的延伸。随着智能传感器、摄像头和自动驾驶功能的集成,汽车行业在创新方面取得了长足进步。 然而,创建软件定义的车辆需要强大的软件基础设施和专业知识,以确保高质量的结果。 由于对更智能、更互
[汽车电子]
新型出租车计价器软件功能分析与实现
摘要:介绍一款基于单片机的新型出租车计价器设计方法。详细介绍计价器计程、计时、统计功能的实现原理,并依次做了误差分析,同时还给出了部分软件设计流程。计价器在车轮转一圈最少需要的33.9 ms内,可以完成所有计程、计时的计算a软件设计灵活,误差小。统计功能的设计为出租车管理部门制定合理决策提供了最详实的依据。 关键词:AT24C256;软件设计;出租车计价器,计程原理 0 引言 随着物价升高,燃油费增长等原因,出租车行业难免有调整单价,增收燃油附加费的需求。现有的出租车计价器调整单价比较麻烦。需要更换计价器中的芯片。另外,现有的计价器没有附加费功能,若需要加收燃油附加费时,乘客在不了解的情况下,难免会和出租车司机产生不必要的纠纷
[工业控制]
新型出租车计价器<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