DIY编程器网
标题:
单片机的MODEM通讯
[打印本页]
作者:
liyf
时间:
2012-1-27 19:46
标题:
单片机的MODEM通讯
摘 要: 探讨单片机之间或单片机与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寄存器的介绍。
[table]
[tr]
[td]表1 GM16C550寄存器 [/td][/tr]
[tr]
[td]
[table]
[tr]
A2A1A0[/td]
ADDRESS W/R[/td]
寄存器[/td][/tr]
[tr]
0 0 0[/td]
FFF8 W[/td]
接收缓冲寄存器(RHR)[/td][/tr]
[tr]
[/td]
R[/td]
发送保持寄存器(THR)[/td][/tr]
[tr]
0 0 1[/td]
FFF9 W[/td]
中断允许寄存器(IER)[/td][/tr]
[tr]
0 1 0[/td]
FFFA W[/td]
FIFO控制寄存器(FCR)[/td][/tr]
[tr]
0 1 0[/td]
FFFA R[/td]
中断状态寄存器(ISR)[/td][/tr]
[tr]
0 1 1[/td]
FFFB W[/td]
线路控制寄存器(LCR)[/td][/tr]
[tr]
1 0 0[/td]
FFFC W[/td]
MODEM控制寄存器(MCR)[/td][/tr]
[tr]
1 0 1[/td]
FFFD R[/td]
线路状态寄存器(LSR)[/td][/tr]
[tr]
1 1 0[/td]
FFFE R[/td]
MODEM状态寄存器(MSR)[/td][/tr]
[tr]
1 1 1[/td]
FFFF W/R[/td]
临时数据寄存器(SPR)[/td][/tr]
欢迎光临 DIY编程器网 (http://diybcq.com/)
Powered by Discuz! X3.2