日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
基于80C196KC微處理器的高速串行通訊
基于80C196KC微處理器的高速串行通訊
 更新時(shí)間:2008-8-16 21:02:24  點(diǎn)擊數(shù):20
【字體: 字體顏色
表1列出的是XTAL作為時(shí)鐘源時(shí)異步模式常用波特率對應(yīng)的波特率寄存器的值。

       當(dāng)采用12MHz頻率時(shí),異步模式的最大波特率為750kbps,同步模式為3Mbps。

      2 串行通訊的軟件設(shè)計(jì)

       80C196KC串行通訊的軟件設(shè)計(jì)可以采用查詢和中斷兩種不同的方式。查詢方式通過訪問串行口控制/狀態(tài)寄存器的標(biāo)志位TI和RI,檢查發(fā)送寄存器SBUF(TR)是否空或者接收寄存器SBUF(RX)已經(jīng)接收了一幀數(shù)據(jù)。

       下面的程序采用查詢方式接收和發(fā)送N個(gè)字節(jié)數(shù)據(jù),其中串行口設(shè)置為工作模式1,波特率57600,不設(shè)奇偶校驗(yàn),12MHz晶振。

      初始化程序:

     ldb  sp .#offfoh  ;設(shè)置堆棧指針

     ldb  r_buf, #0e000h   ;設(shè)置接收數(shù)據(jù)區(qū)地址指針

     ldb     t _b u f #2300h   ;設(shè)置發(fā)送數(shù)據(jù)區(qū)地址指針

    orb  ioc 1,   #20h  ;選通TXD引腳功能

      ldb  temp,    #20h    ;設(shè)置臨時(shí)寄存器

     ldb  baud _rate ,  #och    ;設(shè)置波特率57600

     ldb  baud _rate,   #80h

    ldb  sp_con,# 19h   ;設(shè)置串行通訊方式1,不設(shè)奇偶校驗(yàn)

   ldb  count, # N ;設(shè)置通訊數(shù)據(jù)塊大小

      ………

      接收程序:

      read : ldb  temp , sp _stat ;查詢狀態(tài)寄存器Ri標(biāo)志

      jbs  temp , 6 , read 

      ldb  dl ,  sbuf   ;接收并保存數(shù)據(jù)

      stb  dl,[  r _buf]+ ;將數(shù)據(jù)存入接收數(shù)據(jù)緩沖區(qū)

      djnz  count,  read   ;未接收完數(shù)據(jù),繼續(xù)跳轉(zhuǎn)查詢狀態(tài)寄存器RI

      ………

      發(fā)送程序:

      send : ldb  temp,  sp _stat ;檢查狀態(tài)寄存器TI標(biāo)志

      jbc  temp,  5,  send

      ldb  dl,  [ t _buf]+ ;發(fā)送寄存器空,取數(shù)據(jù)

      ldb  sbuf , dl ;發(fā)送數(shù)據(jù)

      djnz  count,  read    ;未發(fā)完數(shù)據(jù),繼續(xù)跳轉(zhuǎn)查詢狀態(tài)寄存器TI

      ………

       查詢方式設(shè)計(jì)程序簡單,但由于CPU不斷查詢標(biāo)志位,不能做其它工作,因此,程序效率不高,不能用于對實(shí)時(shí)性要求高的場合,利用串行中斷設(shè)計(jì)程序可以有效克服這些缺點(diǎn)。在96系列微處理器中,8098和8096只有一種中斷方式,而80C196KB以后的產(chǎn)品又增設(shè)了發(fā)送中斷和接收中斷,分別設(shè)置了獨(dú)立的中斷向量。下面的程序采用中斷方式接收和發(fā)送N個(gè)字節(jié)數(shù)據(jù),其中串行口設(shè)置為工作模式1,波特率57600,不設(shè)奇偶校驗(yàn),1MHz晶振。

      初始化程序:

      1db  sp ,#lfffoh ;設(shè)置堆棧指針

      ld   bx,  #2200h ;設(shè)置接收中斷向量地址

      l d  ax,  #2032h

      st   bx,  [ax]

      ld  bx,   #2250h   ;設(shè)置發(fā)送中斷向量地址

      ld  ax,  #2030h

      st  bx , [ax]

      orb  ioc1,  #20h   ;選通TXD引腳功能

      ldb  temp,   #20h ;設(shè)置臨時(shí)寄存器

      1db   baud _rate,  #0  ch ;設(shè)置串行通訊波特率56700

      1db  baud _rate,  #80h

      1db  sp  _con,  #19h ;設(shè)置串行通訊方式1,不設(shè)奇偶校驗(yàn)

      clrb  int  _mask ;清除中斷屏蔽寄存器和中斷懸掛寄存器

      clrb  int  _pend 

      clrb  int _mask 1

      clrb  int  _pend 1

      orb  int  _mask 1,#03h ;置中斷屏蔽寄存器1,容許發(fā)送和接收中斷

      1d  count,   #N ;設(shè)置通訊數(shù)據(jù)塊大小

      ei ;開中斷

      ………

      1db    d1,   [ t_buf] +

      1db  sbuf,   dl

      ………

      接收中斷子程序 :org  2200h

      pushf ;保護(hù)現(xiàn)場

      1db  d1,   sbuf   ;接收并保存數(shù)據(jù)

      stb  d1,   [ r_buf]+

      djnz  count,  exit  1 ;未接收完數(shù)據(jù),退出等待下一次接收中斷

        ………

      exit 1:   popf   ;出棧

      ret

      發(fā)送中斷子程序:org  2250h

      pushf ;保護(hù)現(xiàn)場

      orb  int  _mask1,#01h  ;置中斷屏蔽寄存器1,容許發(fā)送中斷

      1db  d1,   [ t _buf]+ ;發(fā)送數(shù)據(jù)

      1db  sbuf,  d1

      djnz  count,  exit2

       ………

      exit2:  pop ;恢復(fù)現(xiàn)場出棧

      ret

      3 串行通訊應(yīng)注意的幾個(gè)問題

       用戶在串行通訊設(shè)計(jì)時(shí)應(yīng)注意,串行口中斷不要與接收中斷、發(fā)送中斷同時(shí)打開,只能開放二者中的一個(gè),設(shè)計(jì)中通常采用接收中斷和發(fā)送中斷,實(shí)現(xiàn)全雙工串行口的功能;由于訪問狀態(tài)寄存器SP_STAT后,其中內(nèi)容即被清除,因此,必須用其它寄存器保存SP_STAT的內(nèi)容;另外,當(dāng)利用發(fā)送器的雙緩沖器特點(diǎn)發(fā)送數(shù)據(jù)時(shí),不應(yīng)把串行口中斷屏蔽掉,否則可能會漏記被發(fā)送的字節(jié)數(shù);此外,當(dāng)串行口兩端采用不同的晶振頻率或鏈路的一端是80C196KC串行口,另一端為其他系統(tǒng)時(shí),應(yīng)認(rèn)真考慮兩者的匹配問題,若發(fā)送端和接收端的波特率完全一致,則接收端對每一數(shù)據(jù)位的采樣都發(fā)生在位周期的中點(diǎn),能夠可靠通訊;若發(fā)送端和接收端的波特率不一致,則在數(shù)據(jù)的連續(xù)傳輸過程中,接收端對數(shù)據(jù)位的采樣點(diǎn)將愈來愈偏離位周期的中點(diǎn),產(chǎn)生累積誤差,最終導(dǎo)致通訊紊亂。所以,用戶在串行口設(shè)計(jì)中,必須考慮波特率誤差帶來的影響。通訊方式,通訊數(shù)據(jù)量,握手方式等通訊協(xié)議的內(nèi)容,必須通過實(shí)驗(yàn)測試加以驗(yàn)證。

       4 80C196KC串行通訊的應(yīng)用

        某雷達(dá)仿真平臺的控制電路中采用了80C196KC微處理器作為核心芯片,利用串行口完成目標(biāo)坐標(biāo)諸元數(shù)據(jù)和命令的交換。其中,80C196KC微處理器的串行口采用通訊模式1,波特率為57600,接收采用中斷方式,發(fā)送采用查詢方式。串行通訊內(nèi)容分為數(shù)據(jù)和命令兩類,各由HEAD和BODY兩部分組成,80C196KC每次接收到串行口上的信息時(shí),產(chǎn)生接收中斷。在中斷服務(wù)程序中,完成對接收到的信息的識別和處理,檢查標(biāo)志并提取其中的有效部分,若為指令,則執(zhí)行;若為數(shù)據(jù),則存入接收數(shù)據(jù)緩沖區(qū)。若從串口發(fā)送數(shù)據(jù)時(shí),按照通信協(xié)議的格式,將發(fā)送數(shù)據(jù)送入發(fā)送緩沖區(qū),以查詢方式將數(shù)據(jù)寫入SBUF,直至發(fā)完全部數(shù)據(jù)。 目前,該串行口運(yùn)行良好,實(shí)現(xiàn)了計(jì)算機(jī)同微處理器之間的高速(57600和115200兩種波特率)通訊,達(dá)到了系統(tǒng)的設(shè)計(jì)要求。

       參考文獻(xiàn)

     1 涂時(shí)亮姚志石.單片微機(jī)MCS—96/98實(shí)用子程序.上海復(fù)旦大學(xué)出版社1991年9月

      2 張幽彤陳寶江.MCS8098系統(tǒng)實(shí)用大全.北京:清華大學(xué)出版社1993年9月

      3  朱曉強(qiáng)姚志石 .8096/8098單片機(jī)原理及應(yīng)用.上海:復(fù)旦大學(xué)出版社 .1993年5月

      4 孫涵芳 .lntel  16位單片機(jī).北京:北京航空航天大學(xué)出版社1995年11月

      5 鮑可進(jìn).一種實(shí)用的單片機(jī)系統(tǒng)的RS—232接口.

        實(shí)驗(yàn)室研究與探索.1997;(5):75~78

      (收稿日期:1999-06-21)

 

 

 

 

   

 

 

 

  • 上一篇: 三一重工CIMS網(wǎng)絡(luò)系統(tǒng)的設(shè)計(jì)
  • 下一篇: 基于TCP/IP的多線程通信及其在遠(yuǎn)程監(jiān)控系統(tǒng)中的應(yīng)用
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1