• <del id="qqie6"><sup id="qqie6"></sup></del>
  • <tfoot id="qqie6"></tfoot>
  • <ul id="qqie6"></ul>
  • 產(chǎn)品推薦:水表|流量計(jì)|壓力變送器|熱電偶|液位計(jì)|冷熱沖擊試驗(yàn)箱|水質(zhì)分析|光譜儀|試驗(yàn)機(jī)|試驗(yàn)箱


    儀表網(wǎng)>技術(shù)中心>行業(yè)論文1(請不要選擇)>正文

    歡迎聯(lián)系我

    有什么可以幫您? 在線咨詢

    單片機(jī)的MODEM通訊

    來源:深圳市隆星科技有限公司   2008年05月26日 10:45  

      摘要 探討單片機(jī)之間或單片機(jī)與PC之間采用MODEM的實(shí)現(xiàn)方法,以及通訊參數(shù)的設(shè)定、數(shù)據(jù)的接收發(fā)送和部分AT命令的介紹,并給出演示程序。
      關(guān)鍵詞 MODEM通訊 AT命令 單片機(jī) MODEM
      我們經(jīng)常能見到關(guān)于PC的MODEM通訊的文章,但關(guān)于單片機(jī)MODEM通訊的文章卻不多見。現(xiàn)在將我個(gè)人單片機(jī)MODEM通訊的實(shí)踐經(jīng)歷寫出來供大家參考。
      要寫單片機(jī)的MODEM通訊必須要有兩個(gè)背景知識(shí),一個(gè)是AT命令集,另一個(gè)是通用異步接收發(fā)送器(UART)。
      1 AT命令集
      下面介紹我通訊程序例子中涉及到的AT命令。
      Dn:撥號(hào)命令。該命令使MODEM立即進(jìn)入摘機(jī)狀態(tài),并撥出跟在后面的號(hào)碼。D命令是基本的撥號(hào)命令,它受到其它命令的修飾可構(gòu)成MODEM何時(shí)撥號(hào)以及如何撥號(hào)等操作。
       T:音頻撥號(hào)。例如,ATDT2245879,其中2245879為。
       P:脈沖撥號(hào)。例如,ATDP2245879,其中2245879為。
       ,:標(biāo)準(zhǔn)暫停。我們常常碰到外線時(shí)需要暫停一下,等聽到二次撥號(hào)音(外線)之后才能再撥后續(xù)的號(hào)碼。缺省時(shí)暫停時(shí)間為2s秒,它由S8寄存器。
       Sn:表示MODEM內(nèi)部的寄存器。
       S0:自動(dòng)應(yīng)答。如果要求MODEM具有自動(dòng)應(yīng)答特性,則應(yīng)該預(yù)先將MODEM的S0寄存器設(shè)置為非0。
       S8:逗號(hào)撥號(hào)修飾符的暫停時(shí)間。該寄存器決定了當(dāng)MODEM在撥號(hào)中遇到逗號(hào)(,)時(shí)應(yīng)該暫停的時(shí)間。
      2  通用異步接收發(fā)送器UART
      深入理解UART內(nèi)部結(jié)構(gòu)以及內(nèi)部寄存器各位的含義,詳細(xì)了解數(shù)據(jù)發(fā)送和接收的過程,有助于編寫出、穩(wěn)定的程序。現(xiàn)以GM16C550為例介紹編寫基本通訊程序需要知道的寄存器。實(shí)際的ADDRESS由具體接線決定。表1為GM16C550寄存器的介紹。
    表1  GM16C550寄存器
    500this.width=500" border=0>
      (1)  波特率除數(shù)鎖存器(LSB、MSB)
      在通訊之前要進(jìn)行一些參數(shù)初始化,波特率是首先應(yīng)該考慮的一項(xiàng)。該寄存器是一個(gè)16位的寄存器,分為低8位(LSB)和高8位(MSB)寄存器。
      當(dāng)LCR.7=1,且A2A1A0=000/001時(shí),單片機(jī)訪問的是波特率除數(shù)鎖存器LSB/MSB。GM16C550推薦的工作頻率是1.8432MHz。這個(gè)頻率除以16就是波特率的時(shí)鐘頻率,用于控制發(fā)送和接收數(shù)據(jù)的速度。下面給出波特率除數(shù)鎖存器值的計(jì)算公式:
      波特率除數(shù)鎖存器值=工作頻率/(16×期望波特率)=1843200/(16×期望波特率)
      表2給出了常用波特率與波特率除數(shù)鎖存器值。
    表2  波特率除數(shù)鎖存器
    500this.width=500" border=0>
    MOV  DPTR,#LCR  ;除數(shù)鎖定允許
    MOV  A,#80H
    MOVX  @DPTR, A
    MOV  DPTR,#LSB  ;波特率為9600baud
    MOV  A,#0CH
    MOVX  @DPTR, A
    INC  DPTR
    CLR  A
    MOVX  @DPTR, A
      500this.width=500" border=0>
    圖1  GM16C550與RS232接線圖
    (2)  接收緩沖寄存器和發(fā)送保持寄存器transmitreceive holding register
       當(dāng)LCR.7=0,且A2A1A0=000時(shí),讀操作單片機(jī)訪問接收緩沖寄存器(RHR),寫操作單片機(jī)訪問發(fā)送保持寄存器(THR)。
    (3)  中斷允許寄存器(interrupt enable register)
      當(dāng)LCR.7=0,且A2A1A0=001時(shí),單片機(jī)訪問中斷允許寄存器(IER)。
      IER.0=1,允許接收器數(shù)據(jù)就緒中斷。
      IER.1=1,允許發(fā)送保持寄存器為空時(shí)中斷。即當(dāng)從發(fā)送保持寄存器把一個(gè)字節(jié)移到移位寄存器時(shí),產(chǎn)生一個(gè)中斷,使發(fā)送保持寄存器能夠接收下一個(gè)字節(jié)。
      IER.2=1,表示允許接收有錯(cuò)信息或間斷條件中斷。
      IER.3=1,MODEM狀態(tài)變化中斷。
      IER.4~7,沒有使用,設(shè)置為零。
    MOV DPTR,#IER
    MOV A,#01H
    MOVX @ DPTR ,A
    (4)  FIFO控制寄存器(FIFO control register)
      數(shù)據(jù)發(fā)送和接收模式的選擇。GM16C550提供了兩種模式:FIFO和DMA。其中DMA又有兩種模式DMA的模式0、DMA的模式1可供選擇。我的舉例采用默認(rèn)的DMA的模式0。感興趣的朋友可試一試其它模式,這里不再說明。
    (5)  中斷狀態(tài)寄存器(interrupt status register)
      前面介紹了幾種中斷,它們在各自的條件下產(chǎn)生中斷,UART都會(huì)輸出一個(gè)高電平的中斷請求信號(hào),觸發(fā)同一個(gè)中斷請求。為了具體判斷是哪一種中斷,還應(yīng)該檢測ISR,如表3所列。
    表3  中斷狀態(tài)寄存器
    500this.width=500" border=0>
      ISR.0=1,表示沒有中斷產(chǎn)生。
      ISR.4~5沒有使用。
      ISR.6~7,當(dāng)采用FIFO的接收和發(fā)送模式時(shí),這兩位都設(shè)置為1;反之,都設(shè)置為0。
    (6)  線路控制寄存器(line control register)
      LCR.0~1,表示發(fā)送和接收時(shí)的字節(jié)長度,如表4所列。
      LCR.2,這一位與LCR.0~1共同定義了停止位的長度,如表5所列。
    表4  線路控制寄存器LCR.0~1
    500this.width=500" border=0>
    表5  線路控制寄存器LCR.2
    500this.width=500" border=0>
      LCR.3=1,進(jìn)行奇偶校驗(yàn)。
      LCR.4=0,進(jìn)行奇校驗(yàn);LCR.4=1,進(jìn)行偶校驗(yàn)。
      LCR.5=1,奇偶校驗(yàn)位恒為1或0。
      表6為線路控制寄存器LCR.3~5。
    表6  線路控制寄存器LCR.3~5
    500this.width=500" border=0>
      LCR.6=1,表示允許間斷,即允許發(fā)送器寄存器保持一個(gè)完整幀時(shí)間以上的空號(hào)狀態(tài)。
      LCR.7,用于區(qū)分訪問除數(shù)鎖存寄存器還是訪問接收緩沖/發(fā)送保持和中斷允許寄存器。
    MOVDPTR,#LCR;通訊傳輸長度為8位,停止位為1,
    ;偶校驗(yàn)
    MOVA,#1BH
    MOVX @DPTR,A
    (7)  MODEM控制寄存器(MODEM control register)
      這是一個(gè)MODEM和外設(shè)接口的寄存器。
      MCR.0=1時(shí),強(qiáng)制芯片引腳DTR=0;
      MCR.0=0時(shí),強(qiáng)制芯片引腳DTR=1。
      MCR.1=1時(shí),強(qiáng)制芯片引腳RTS=0;
      MCR.1=0時(shí),強(qiáng)制芯片引腳RTS=1。
      MCR.2=1時(shí),強(qiáng)制芯片引腳OP1=0;
      MCR.2=0時(shí),強(qiáng)制芯片引腳OP1=1。
      MCR.3=1時(shí),強(qiáng)制芯片引腳OP2=0;
      MCR.2=0時(shí),強(qiáng)制芯片引腳OP2=1。
      MCR.4=1時(shí),循環(huán)返回模式,可用于芯片自測。
      其它位保留。
    MOVDPTR,#MCR;異步串口芯片的DTR、RTS引腳送出邏輯低電平
    MOVA,#03H
    MOVX @DPTR,A
    (8)  線路狀態(tài)寄存器(line status register)
      LSR.0:當(dāng)接收移位寄存器接收到的字節(jié)*移到接收緩沖寄存器時(shí),該位置1。如果讀該寄存器,那么這一位被清零。
      LSR.1:出現(xiàn)超越錯(cuò)時(shí),這一位被置1。讀該寄存器,這一位被清零。
      LSR.2:出現(xiàn)奇偶校驗(yàn)錯(cuò)時(shí),這一位被置1。讀該寄存器,這一位被清零。
      LSR.3:出現(xiàn)停止位不完整、丟失、空號(hào)時(shí),這一位被置1。讀該寄存器,這一位被清零。
      LSR.4:當(dāng)接收寄存器檢測到空號(hào)狀態(tài)已持續(xù)一個(gè)完整幀傳輸時(shí)間時(shí),這一位被置1。讀該寄存器,這一位被清零。
      LSR.5:當(dāng)發(fā)送的字節(jié)從發(fā)送保持寄存器移到發(fā)送移位寄存器時(shí),該位置1。
      LSR.6:當(dāng)發(fā)送保持寄存器和發(fā)送移位寄存器都沒用字節(jié)時(shí),該位置1。
      LSR.7:當(dāng)奇偶校驗(yàn)錯(cuò)、幀格式錯(cuò)、空號(hào)錯(cuò)有一個(gè)出現(xiàn)時(shí),該位置1。
    Setdata
      MOV  DPTR,#LSR
      MOVX  A,@DPTR
      JNB  ACC.5,Setdata
      MOV  A,DataNumber;DataNumber記錄發(fā)送字符的個(gè)數(shù)
      MOV  DPTR,#AtCommand
      AtCommand定義AT命令參數(shù)的起始地址
      MOVC  A,@A+DPTR
      MOV  DPTR,#THR  ;發(fā)送保持寄存器
      MOVX  @DPTR,A
      INC  DataNumber
      MOV  A,DataNumber
      CJNE  A,#0BH,Setdata  ;發(fā)送11個(gè)字符
    AtCommand:DB  “A”,“T”,“S”,“0”,“=”,“2”,“S”,“8”,“=”,“5”,0DH
    (9)  MODEM狀態(tài)寄存器(MODEM status register)
      MSR.0~3=1時(shí),表示自上一次單片機(jī)讀MSR寄存器之后,分別反映MODEM控制邏輯的四個(gè)輸入信號(hào)的狀態(tài)發(fā)生了變化。
      MSR.0=1時(shí),清除發(fā)送信號(hào)(CTS)已經(jīng)發(fā)生了變化。
      MSR.1=1時(shí),數(shù)據(jù)設(shè)備就緒信號(hào)(DSR)已經(jīng)發(fā)生了變化。
      MSR.2=1時(shí),振鈴信號(hào)(RI)已經(jīng)發(fā)生了變化。
      MSR.3=1時(shí),載波信號(hào)(DCD)已經(jīng)發(fā)生了變化。
      MSR.4~7四位分別反映MODEM控制邏輯的四個(gè)輸入信號(hào)的當(dāng)前狀態(tài)。
      MSR.4=1時(shí),清除發(fā)送信號(hào)(CTS)有效。
      MSR.5=1時(shí),數(shù)據(jù)設(shè)備就緒信號(hào)(DSR)有效。
      MSR.6=1時(shí),振鈴信號(hào)(RI)有效。
      MSR.7=1時(shí),載波信號(hào)(DCD)有效。
    (10)  臨時(shí)數(shù)據(jù)寄存器(scratchpag register)
      可以存儲(chǔ)用戶信息。
      有了上面知識(shí)的準(zhǔn)備后就可以輕松地寫出程序,現(xiàn)在可把零散的東西組織起來。
      GM16C550芯片初始化模塊
    Init_16C550:
      MOV  DPTR,#LCR  ;除數(shù)鎖定允許
      MOV  A,#80H
      MOVX  @DPTR, A
      MOV  DPTR,#LSB  ;波特率為9600baud
      MOV  A,#0CH
      MOVX  @DPTR, A
      INC  DPTR
      CLR  A
      MOVX  @DPTR, A
      MOV  DPTR,#LCR;通訊傳輸長度為8位,停止位為1,偶校驗(yàn)
      MOV  A,#1BH
      MOVX  @DPTR, A
      MOV  DPTR,#MCR;異步串口芯片的DTR。RTS引腳送出邏輯低電平
      MOV  A,#03H
      MOVX  @DPTR,A
      MOV  DPTR,#IER
      MOV  A,#01H
      MOVX  @DPTR,A
      采用中斷的方式接數(shù)據(jù)
    Interrupt2:
      PUSH  ACC
      PUSH  DPH
      PUSH  DPL
      PUSH  PSW
      MOV  DPTR,#RHR  ;接受數(shù)據(jù)
      MOVX  A,@DPTR
       ……………………
       POP  PSW
       POP  DPL
       POP  DPH
       POP  ACC
       RETI
      至此,完成了一個(gè)小型的單片機(jī)MODEM通訊系統(tǒng)。其中的檢錯(cuò)寄存器、MODEM狀態(tài)寄存器等應(yīng)用限于篇幅沒有*涉及到。有興趣的朋友可以試一試,那么你就會(huì)對MODEM通訊有一個(gè)比較深刻的認(rèn)識(shí)。

    免責(zé)聲明

    • 凡本網(wǎng)注明“來源:儀表網(wǎng)”的所有作品,均為浙江興旺寶明通網(wǎng)絡(luò)有限公司-儀表網(wǎng)合法擁有版權(quán)或有權(quán)使用的作品,未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用上述作品。已經(jīng)本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使用,并注明“來源:儀表網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責(zé)任。
    • 本網(wǎng)轉(zhuǎn)載并注明自其它來源(非儀表網(wǎng))的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或和對其真實(shí)性負(fù)責(zé),不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品第一來源,并自負(fù)版權(quán)等法律責(zé)任。
    • 如涉及作品內(nèi)容、版權(quán)等問題,請?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
    聯(lián)系我們

    客服熱線: 15267989561

    加盟熱線: 15267989561

    媒體合作: 0571-87759945

    投訴熱線: 0571-87759942

    關(guān)注我們
    • 下載儀表站APP

    • Ybzhan手機(jī)版

    • Ybzhan公眾號(hào)

    • Ybzhan小程序

    企業(yè)未開通此功能
    詳詢客服 : 0571-87759942
    主站蜘蛛池模板: 成人国产在线不卡视频| 国产成人免费在线| 最新69国产成人精品视频69| 欧美成人午夜精品免费福利| 成人免费一区二区三区| 国产成人精品免高潮在线观看| 亚洲欧美日韩成人高清在线一区| 精品人妻无码一区二区色欲产成人| 欧美日韩一区二区成人午夜电影| 成人在线免费视频| 亚洲无成人网77777| 欧美成人观看视频在线| 国产成人精品综合在线观看| 69国产成人精品午夜福中文| 成人免费乱码大片A毛片| 久久久久99精品成人片欧美| 国产精品成人99久久久久| 久久久久亚洲av成人无码| 在线成人播放毛片| 成人看片app| 51影院成人影院| 国产成人av一区二区三区不卡 | 国产成人8X视频网站入口| 欧美成人www在线观看网页| 亚洲国产精品成人综合久久久 | 欧美成人午夜视频| 久久亚洲国产成人精品无码区| 国产成人无码区免费A∨视频网站 国产成人无码区免费内射一片色欲 | 欧美成人免费观看| 亚洲AV午夜成人片| 亚洲国产成人久久综合一区| 四虎影视永久地址www成人| 国产免费69成人精品视频| 亚洲精品无码乱码成人| 国产成人一区二区三区| 国产成人精品久久一区二区小说| 成人Av无码一区二区三区| 国产成人综合久久亚洲精品 | 成人毛片视频免费网站观看| 成人午夜免费福利| 国产成人无码网站|