新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机的MODEM通讯

单片机的MODEM通讯

作者:时间:2012-03-14来源:网络收藏

我们经常能见到关于PC的的文章,但关于的文章却不多见。现在将我个人的实践经历写出来供大家参考。

本文引用地址:http://www.eepw.com.cn/article/171883.htm

要写的MODEM通讯必须要有两个背景知识,一个是AT命令集,另一个是通用异步接收发送器(UART)。

1.AT命令集

下面介绍我通讯程序例子中涉及到的AT命令。
豹Dn:拨号命令。该命令使MODEM立即进入摘机状态,并拨出跟在后面的号码。D命令是基本的拨号命令,它受到其它命令的修饰可构成MODEM何时拨号以及如何拨号等操作。
豹T:音频拨号。例如,ATDT2245879,其中2245879为电话号码。
豹P:脉冲拨号。例如,ATDP2245879,其中2245879为电话号码。
豹保:标准暂停。我们常常碰到拨打外线电话时需要暂停一下,等听到二次拨号音(外线)之后才能再拨后续的号码。缺省时暂停时间为2s(秒),它由S8寄存器指定。
豹Sn:表示MODEM内部的寄存器。
豹S0:自动应答。如果要求MODEM具有自动应答特性,则应该预先将MODEM的S0寄存器设置为非0。
豹S8:逗号拨号修饰符的暂停时间。该寄存器决定了当MODEM在拨号中遇到逗号(,)时应该暂停的时间。
豹2.通用异步接收发送器UART

深入理解UART内部结构以及内部寄存器各位的含义,详细了解数据发送和接收的过程,有助于编写出高效、稳定的程序。现以GM16C550为例介绍编写基本通讯程序需要知道的寄存器。实际的ADDRESS由具体接线决定。表1为GM16C550寄存器的介绍。
 
表1 GM16C550寄存器
47.jpg

(1) 波特率除数锁存器(LSB、MSB)

在通讯之前要进行一些参数初始化,波特率是首先应该考虑的一项。该寄存器是一个16位的寄存器,分为低8位(LSB)和高8位(MSB)寄存器。

当 LCR.7=1,且A2A1A0=000/001时,单片机访问的是波特率除数锁存器LSB/MSB。GM16C550推荐的工作频率是 1.8432MHz。这个频率除以16就是波特率的时钟频率,用于控制发送和接收数据的速度。下面给出波特率除数锁存器值的计算公式:

波特率除数锁存器值=工作频率/(16×期望波特率)=1843200/(16×期望波特率)

表2给出了常用波特率与波特率除数锁存器值。
 
表2 波特率除数锁存器
48.jpg


上一页 1 2 3 4 下一页

关键词: 通讯 MODEM 单片机

评论


相关推荐

技术专区

关闭