91精品一区二区三区久久久久久_欧美一级特黄大片色_欧美一区二区人人喊爽_精品一区二区三区av

位置:51電子網 » 技術資料 » 測試測量

單片機的MODEM通訊

發布時間:2008/6/3 0:00:00 訪問次數:533

摘 要: 探討單片機之間或單片機與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
深圳服務熱線:13692101218  13751165337
粵ICP備09112631號-6(miitbeian.gov.cn)
公網安備44030402000607
深圳市碧威特網絡技術有限公司
付款方式


 復制成功!
泌阳县| 丰城市| 沐川县| 如东县| 云龙县| 花莲市| 禄丰县| 平远县| 吉水县| 丹阳市| 铁岭县| 托克逊县| 齐齐哈尔市| 泰宁县| 锡林浩特市| 丹阳市| 偏关县| 阿克苏市| 河源市| 河间市| 蕲春县| 镇康县| 丹东市| 乐平市| 若尔盖县| 武强县| 婺源县| 安康市| 桦甸市| 靖宇县| 柳河县| 盘山县| 大庆市| 上犹县| 太康县| 湖北省| 宣城市| 宁蒗| 龙山县| 咸宁市| 新营市|