位置:51电子网 » 技术资料 » 单 片 机

PIC单片机控制Modem的串行通信设计

发布时间:2008/8/16 0:00:00 访问次数:687

  在工程中,常采用modem通过模拟线路进行数据的远程传输。我们用工业级pic16f87系列单片机控制modem完成串行异步/同步通信,在较低速率的线路上实现了数据的实时传输,收到了很好的效果。

  本文就系统中pic单片机控制modem的串行通信技术,在硬件、软件两方面进行了分析。

  1 pic单片机及其同步/异步串行接口usart模块功能简介

  pic16f877a单片机内部有8k*14的flash程序存储器和512字的ram数据存储器:不仅采用哈佛体系结构,而且还采用哈佛总线结构,流水线操作,pic16f877a大大提高了指令执行速度,pic单片机的系统时钟可以工作在dc-20mhz的频率范围之内。优化的cpu结构,加上精简指令集(risc)技术,更加快了指令执行速度,这为复杂控制算法的实现提供了良好的条件。
 
  本系统采用的是pic16f87系列单片机,其内部集成了同步/异步串行接口usart模块,适合同单片机外部扩展独立的外设部件进行串行通信。并且可以定义三种工作方式:全双工异步、半双工同步主控和半双工同步从动方式。

  2 pic单片机控制modem 实现异步串行通信
  
  利用pic单片机,可实现对modem的控制,从而进行异步通信。usart模块在单片机的rx引脚上接收,在tx引脚上发送,串行信息的编码方式采用1位起始位、8位数据位和1位停止位。片内提供了一个专用的8位波特率发生器brg,利用来自时基振荡器的系统时钟信号,产生标准的波特率时钟。usart 模块的接收和发送数据顺序是地位在前。即首先发送最低位(lsb)。usart模块的接收器和发送器在功能上是相互独立的,但是它们所用的数据格式与波特率是相同的。

  2.1异步串行通信硬件连接
  
  pic将要发送的数据通过串口送给本端modem,将数字信号调制成可在模拟线路上传输的模拟信号,并通过模拟线路传给远方的modem。远方的modem将收到的模拟信号还原为数字信号送给与其相连的pic,pic通过异步串口发送at(请求)命令来实现对modem控制进行串行通信,与modem接口按rs-232标准设计。pic的输入输出电平为ttl电平,我们通过电平转换芯片max232,实现与rs-232接口的匹配。系统中对modem的初始化、呼叫(应答)、传输数据及挂机等都由pic发送的at命令通过存于modem的flash rom中的程序控制完成。

  2.2 异步串行通信软件设计

  2.2.1 pic单片机与usart模块相关的寄存器

  pic单片机usart模块的两条外接引脚是与输入/输出端口rc模块公用的rc7/rx/dt和rc6/tx/ck两条口线,与usart模块有关的寄存器共有9个。

  在此.就pic工作于usart模式时,所涉及的一些位进行介绍,详见表1。

  中断控制寄存器intcon,第一外围设备中断标志寄存器pir1。第一外围设备中断屏蔽寄存器pie1,端口c方向寄存器trisc,发送状态和控制寄存器txsta,接收状态和控制寄存器rcsta,发送寄存器txreg,接收寄存器rcreg,波特率寄存器spbrg。

  2.2.2 usart模块波特率设置

  usart模块带一个8位的波特率发生器(brg),brg支持usart的同步方式和异步方式。用波特率寄存器spbrg控制一个独立的8位定时器周期。波特率发生器可以根据brgh位(发送状态和控制寄存器txsta的位2)的设置,产生两种不同的移位速度,分别是对于系统时钟16分频和64分频得到的波特率时钟。用波特率寄存器spbrg控制一个独立的8位定时器周期。在异步方式下,brgh位也被用来控制波特率;在同步方式下。不用brgh位。表2给出了在主控方式下,不同usart工作方式的波特率计算公式(x为写入spbrg寄存器的值)。

  2.2.3 通信程序设计
  
  要实现系统的正常数据传输,正确设置pic异步串口usart至关重要。在此,以异步接收方式为例,编写程序应遵循以下几个步骤:

  (1)选择合适的波特率,然后根据表2计算出spbrg寄存器的值(x),并将其写入spbrg寄存器;
  (2)设置sync=0,spen=1,使usart工作于异步方式;
  (3)如需中断功能,将中断控制寄存器的中断屏蔽gie和peie置1,同时置第一外围设备中断屏蔽寄存器的rcie=1;
  (4)如需接收9位数据,置接收状态和控制寄存器的rx9=1;
  (5)置接收状态和控制寄存器的cren=1,激活接收器;
  (6)当一个字节接收完后,产生中断请求,如果rcie=1,便产生中断;
  (7)读rcsta寄存器以便获得第9位数据(如果选择了接收9位数据),并且判断是否在接收过程中发生了错误;
  (8)读rcreg寄存器中已经收到的8位数据;
  (9)如果发生了接收错误,通过置cren=0以清除错误标志。
  
  下面给出了串口的初始化程序:
bsf status,rp0 ;选择存储体1
bcf status,rp1
bsf trisc,7 ;设置rc7脚为输入状态
bcf trisc,6 ;设置rc6脚为输出状态
movlw 25h ;设置波特率
movwf spbrg
movlw 20h ;设定8位发送/接收
movwf txsta ;设定异步

  在工程中,常采用modem通过模拟线路进行数据的远程传输。我们用工业级pic16f87系列单片机控制modem完成串行异步/同步通信,在较低速率的线路上实现了数据的实时传输,收到了很好的效果。

  本文就系统中pic单片机控制modem的串行通信技术,在硬件、软件两方面进行了分析。

  1 pic单片机及其同步/异步串行接口usart模块功能简介

  pic16f877a单片机内部有8k*14的flash程序存储器和512字的ram数据存储器:不仅采用哈佛体系结构,而且还采用哈佛总线结构,流水线操作,pic16f877a大大提高了指令执行速度,pic单片机的系统时钟可以工作在dc-20mhz的频率范围之内。优化的cpu结构,加上精简指令集(risc)技术,更加快了指令执行速度,这为复杂控制算法的实现提供了良好的条件。
 
  本系统采用的是pic16f87系列单片机,其内部集成了同步/异步串行接口usart模块,适合同单片机外部扩展独立的外设部件进行串行通信。并且可以定义三种工作方式:全双工异步、半双工同步主控和半双工同步从动方式。

  2 pic单片机控制modem 实现异步串行通信
  
  利用pic单片机,可实现对modem的控制,从而进行异步通信。usart模块在单片机的rx引脚上接收,在tx引脚上发送,串行信息的编码方式采用1位起始位、8位数据位和1位停止位。片内提供了一个专用的8位波特率发生器brg,利用来自时基振荡器的系统时钟信号,产生标准的波特率时钟。usart 模块的接收和发送数据顺序是地位在前。即首先发送最低位(lsb)。usart模块的接收器和发送器在功能上是相互独立的,但是它们所用的数据格式与波特率是相同的。

  2.1异步串行通信硬件连接
  
  pic将要发送的数据通过串口送给本端modem,将数字信号调制成可在模拟线路上传输的模拟信号,并通过模拟线路传给远方的modem。远方的modem将收到的模拟信号还原为数字信号送给与其相连的pic,pic通过异步串口发送at(请求)命令来实现对modem控制进行串行通信,与modem接口按rs-232标准设计。pic的输入输出电平为ttl电平,我们通过电平转换芯片max232,实现与rs-232接口的匹配。系统中对modem的初始化、呼叫(应答)、传输数据及挂机等都由pic发送的at命令通过存于modem的flash rom中的程序控制完成。

  2.2 异步串行通信软件设计

  2.2.1 pic单片机与usart模块相关的寄存器

  pic单片机usart模块的两条外接引脚是与输入/输出端口rc模块公用的rc7/rx/dt和rc6/tx/ck两条口线,与usart模块有关的寄存器共有9个。

  在此.就pic工作于usart模式时,所涉及的一些位进行介绍,详见表1。

  中断控制寄存器intcon,第一外围设备中断标志寄存器pir1。第一外围设备中断屏蔽寄存器pie1,端口c方向寄存器trisc,发送状态和控制寄存器txsta,接收状态和控制寄存器rcsta,发送寄存器txreg,接收寄存器rcreg,波特率寄存器spbrg。

  2.2.2 usart模块波特率设置

  usart模块带一个8位的波特率发生器(brg),brg支持usart的同步方式和异步方式。用波特率寄存器spbrg控制一个独立的8位定时器周期。波特率发生器可以根据brgh位(发送状态和控制寄存器txsta的位2)的设置,产生两种不同的移位速度,分别是对于系统时钟16分频和64分频得到的波特率时钟。用波特率寄存器spbrg控制一个独立的8位定时器周期。在异步方式下,brgh位也被用来控制波特率;在同步方式下。不用brgh位。表2给出了在主控方式下,不同usart工作方式的波特率计算公式(x为写入spbrg寄存器的值)。

  2.2.3 通信程序设计
  
  要实现系统的正常数据传输,正确设置pic异步串口usart至关重要。在此,以异步接收方式为例,编写程序应遵循以下几个步骤:

  (1)选择合适的波特率,然后根据表2计算出spbrg寄存器的值(x),并将其写入spbrg寄存器;
  (2)设置sync=0,spen=1,使usart工作于异步方式;
  (3)如需中断功能,将中断控制寄存器的中断屏蔽gie和peie置1,同时置第一外围设备中断屏蔽寄存器的rcie=1;
  (4)如需接收9位数据,置接收状态和控制寄存器的rx9=1;
  (5)置接收状态和控制寄存器的cren=1,激活接收器;
  (6)当一个字节接收完后,产生中断请求,如果rcie=1,便产生中断;
  (7)读rcsta寄存器以便获得第9位数据(如果选择了接收9位数据),并且判断是否在接收过程中发生了错误;
  (8)读rcreg寄存器中已经收到的8位数据;
  (9)如果发生了接收错误,通过置cren=0以清除错误标志。
  
  下面给出了串口的初始化程序:
bsf status,rp0 ;选择存储体1
bcf status,rp1
bsf trisc,7 ;设置rc7脚为输入状态
bcf trisc,6 ;设置rc6脚为输出状态
movlw 25h ;设置波特率
movwf spbrg
movlw 20h ;设定8位发送/接收
movwf txsta ;设定异步

相关IC型号

热门点击

 

推荐技术资料

硬盘式MP3播放器终级改
    一次偶然的机会我结识了NE0 2511,那是一个远方的... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!