位置:51电子网 » 技术资料 » 测试测量

单片机的MODEM通讯

发布时间:2008/6/3 0:00:00 访问次数:553

摘 要: 探讨单片机之间或单片机与pc之间采用modem的实现方法,以及通讯参数的设定、数据的接收发送和部分at命令的介绍,并给出演示程序。

关键词:modem通讯at命令单片机

我们经常能见到关于pc的modem通讯的文章,但关于单片机modem通讯的文章却不多见。现在将我个人单片机modem通讯的实践经历写出来供大家参考。

要写单片机的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寄存器 a2a1a0 address w/r 寄存器 0 0 0 fff8  w 接收缓冲寄存器(rhr)   r 发送保持寄存器(thr) 0 0 1 fff9  w 中断允许寄存器(ier) 0 1 0 fffa  w fifo控制寄存器(fcr) 0 1 0 fffa  r 中断状态寄存器(isr) 0 1 1 fffb  w 线路控制寄存器(lcr) 1 0 0 fffc  w modem控制寄存器(mcr) 1 0 1 fffd  r 线路状态寄存器(lsr) 1 1 0 fffe  r modem状态寄存器(msr) 1 1 1 ffff  w/r 临时数据寄存器(spr) (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 波特率除数锁存器 波特率

/baud 锁存器 (hex) msb lsb 300 180 01 80 1200 60 00 60 4800 18 00 18 19.2k 06 00 06 57.6k 02 00 02 波特率

/baud 锁存器 (hex) msb lsb 600 c0 00 0c 2400 30 00 30 9600 0c 00 0c 38.4k 03 00 03 11.5k 00 00 01 mov dptr,#lcr ;除数锁定允许

mov a,#80h

movx @dptr, a

mov dptr,#lsb ;波特率为9600baud

mov a,#0ch

movx @dptr, a

inc dptr

clr a

movx @dptr, a

图 1为gm16c550与rs232接线图。

图1 gm16c550与rs232接线图

(2) 接收缓冲寄存器和发送保持寄存器(transmit and receive holding register)

当lcr.7=0,且a2a1a0=000时,读操作单片机访问接收缓冲寄存器(rhr),写操作单片机访问发送保持寄存器(thr)。

(3) 中断允许寄存器(interrupt enable register)

当lcr.7=0,且a2a1a0=001时,单片机访问中断允许寄存器(ier)。

ier.0=1,允许接收器数据就绪中断。

ier.1=1,允许发送保持寄存器为空时中断。即当从发送保持寄存器把一个字节移到移位寄存器时,产生一个中断,使发送保持寄存器能够接收下一个字节。

ier.2=1,表示允许接收有错信息或间断条件中断。

ier.3=1,modem状态变化中断。

ier.4~7,没有使用,设置为零。

mov dptr

摘 要: 探讨单片机之间或单片机与pc之间采用modem的实现方法,以及通讯参数的设定、数据的接收发送和部分at命令的介绍,并给出演示程序。

关键词:modem通讯at命令单片机

我们经常能见到关于pc的modem通讯的文章,但关于单片机modem通讯的文章却不多见。现在将我个人单片机modem通讯的实践经历写出来供大家参考。

要写单片机的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寄存器 a2a1a0 address w/r 寄存器 0 0 0 fff8  w 接收缓冲寄存器(rhr)   r 发送保持寄存器(thr) 0 0 1 fff9  w 中断允许寄存器(ier) 0 1 0 fffa  w fifo控制寄存器(fcr) 0 1 0 fffa  r 中断状态寄存器(isr) 0 1 1 fffb  w 线路控制寄存器(lcr) 1 0 0 fffc  w modem控制寄存器(mcr) 1 0 1 fffd  r 线路状态寄存器(lsr) 1 1 0 fffe  r modem状态寄存器(msr) 1 1 1 ffff  w/r 临时数据寄存器(spr) (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 波特率除数锁存器 波特率

/baud 锁存器 (hex) msb lsb 300 180 01 80 1200 60 00 60 4800 18 00 18 19.2k 06 00 06 57.6k 02 00 02 波特率

/baud 锁存器 (hex) msb lsb 600 c0 00 0c 2400 30 00 30 9600 0c 00 0c 38.4k 03 00 03 11.5k 00 00 01 mov dptr,#lcr ;除数锁定允许

mov a,#80h

movx @dptr, a

mov dptr,#lsb ;波特率为9600baud

mov a,#0ch

movx @dptr, a

inc dptr

clr a

movx @dptr, a

图 1为gm16c550与rs232接线图。

图1 gm16c550与rs232接线图

(2) 接收缓冲寄存器和发送保持寄存器(transmit and receive holding register)

当lcr.7=0,且a2a1a0=000时,读操作单片机访问接收缓冲寄存器(rhr),写操作单片机访问发送保持寄存器(thr)。

(3) 中断允许寄存器(interrupt enable register)

当lcr.7=0,且a2a1a0=001时,单片机访问中断允许寄存器(ier)。

ier.0=1,允许接收器数据就绪中断。

ier.1=1,允许发送保持寄存器为空时中断。即当从发送保持寄存器把一个字节移到移位寄存器时,产生一个中断,使发送保持寄存器能够接收下一个字节。

ier.2=1,表示允许接收有错信息或间断条件中断。

ier.3=1,modem状态变化中断。

ier.4~7,没有使用,设置为零。

mov dptr

相关IC型号

热门点击

 

推荐技术资料

音频变压器DIY
    笔者在本刊今年第六期上着重介绍了“四夹三”音频变压器的... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!