大奖娱乐官方网站_大奖娱乐老虎机_在线【大奖娱乐平台】

用软件实现PIC16F5X异步串行口

2017-12-06 20:10:56来源: 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. 结束语  
        本文可以根据用户需求通过

[1] [2]

关键字:软件实现  PIC16F5X  异步串行口

编辑:什么鱼 引用地址:/mcu/article_2017120636620.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:LCD1602显示C语言
下一篇:最后一页

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利
推荐阅读
全部
软件实现
PIC16F5X
异步串行口
  • rar文件

小广播

热门关键词

单片机  单片机技术  PIC单片机技术                         

大学堂最新课程

独家专题更多

东芝在线展会——芯科技智社会创未来
东芝在线展会——芯科技智社会创未来
2017东芝PCIM在线展会
2017东芝PCIM在线展会
TI车载信息娱乐系统的音视频解决方案
TI车载信息娱乐系统的音视频解决方案
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源

何立民专栏

单片机及嵌入式宝典

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

大奖娱乐官方网站世界版权所有 京ICP证060456号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright ? 2005-2017 EEWORLD.com.cn, Inc. All rights reserved