在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用雙數據指針實現串行端口FIFO

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-02-21 16:06 ? 次閱讀

Dallas Semiconductor高速微控制器系列允許系統設計人員通過內部UART優化串行通信。本應用筆記演示了如何利用這些增強型8051微控制器中的雙數據指針使用循環緩沖器。提供的示例匯編代碼用于顯示簡單的 256 字節串行端口循環緩沖區的實現。

介紹

原始 8051 微處理器的架構包括一個標準的通用 同步/異步接收器/發射器(USART,通常稱為UART)。這 外設允許器件通過RS-232接口以各種波特率進行通信。其中之一 8051 UART實現的缺點是其接收和發送緩沖區 只有一個深度,即軟件必須從接收緩沖區中檢索一個字節,然后才能被 下一個收到的字符。可以在許多達拉斯半導體公司中實現快速軟件FIFO 和Maxim微控制器,增加了串行端口的實用性。

本應用筆記演示了一個簡單的256字節循環緩沖器,但原理可以擴展到 緩沖長度可達 64kB。數據由串行端口接收并存儲在緩沖區中,直到對其采取行動 通過用戶提供的例程。當緩沖區變滿時,接收器通過軟件流控制將 向主機發出停止傳輸的信號。當用戶提供的例程清除緩沖區中的空間時,它將 向主機發出信號以恢復傳輸。本應用筆記中的示例足夠通用,可以 適用于各種用戶應用。示例隨附的匯編源代碼是 在網站上的文件AN603_SW中提供。回答 51.

支持先進先出構建的硬件增強功能

高速和超高速微控制器系列具有許多功能,大大簡化了 軟件先進先出的實施。所有這些功能都旨在最大限度地減少軟件開銷 與存儲和檢索數據相關聯。其中第一個功能是極高速 達拉斯半導體和Maxim微控制器的性質。他們增強的 4 時鐘和 1 時鐘 機器循環型芯最大限度地減少了維護緩沖區所花費的時間,并且通過擴展允許 應用程序運行得更快。

另一個重要功能是雙數據指針。最初的 8051 只有一個數據指針,它 使得同時實現輸入和輸出指針變得困難。每次系統需要 在指針之間切換,它必須保存當前值并加載另一個的值 指針。在嘗試將數據快速移入和移出緩沖區時,這會引入明顯的延遲。 使用兩個數據指針,一個可以分配給輸入(插入)指針,另一個分配給輸出 (刪除)緩沖區的指針,消除與處理指針相關的延遲。另外 一些微控制器集成了增強的數據指針,可以自動遞增數據 執行某些數據指針相關指令后的指針。這節省了額外的機器 每個緩沖區訪問的周期。

通過使用內部 1kB MOVX SRAM(其數據可用),可以進一步提高速度 可以在單個機器周期內訪問。在此內存中定位循環緩沖區允許 實現非常快速的緩沖區。

軟件說明

此示例介紹串行端口的循環 FIFO 緩沖區的基本體系結構。接收數據 通過串行端口 0 并存儲在 MOVX 存儲器中的循環緩沖區中,直到提取為止 并由用戶定義的算法操作。此示例使用達拉斯和 Maxim 微控制器 雙數據指針。DPTR(也稱為 DPTR0)用作輸入指針,并始終指定 應存儲通過串行端口接收的新信息的位置。DPTR1 是輸出指針, 顯示應用程序軟件將檢索下一個未處理字節的位置。伴隨的 軟件應該被認為是這樣一個例子的骨架。

做了一些假設來簡化軟件并減小其大小:

緩沖區長度為 256 字節,從 0000h 開始,到 00FFh 結束。軟件可以快速檢查 表示非零數據指針高字節,以指示翻轉。

輸入和輸出指針僅遞增,盡管軟件可以很容易地修改為 支持雙向指針。

收到字符后對緩沖區狀態的反饋限制為剩余 1 個字節 警告和 0 字節剩余關機方法。這種通過/不通過的方法允許非常快的錯誤 檢查,可最大限度地減少緩沖區輸入和輸出例程中花費的時間。緩沖區狀態 從緩沖區讀取字符后,用戶提供的算法負責。

主機的錯誤通知通過軟件流控制執行。這是一個常見的 傳輸協議易于實現,占用的處理器開銷很小。

當程序啟動時,兩個數據指針都初始化到緩沖區的開頭。串口 也被初始化,然后軟件流控制“就緒”字符(XON:11h)被發送到 主機以允許傳輸數據。然后,軟件會等待,直到收到新字符或 應用程序需要從緩沖區讀取一個字節。此示例僅顯示例程的外殼,該 緩沖區中的字節;實際代碼將由應用程序定義。

當串口收到字符時,調用串口0中斷服務例程(ISR)。第一 例程從串行端口檢索字節,并存儲在緩沖區中由 輸入指針 (DPTR)。然后調用子例程Increment_DPTx,這將遞增所選數據 指針,然后執行兩個操作。首先,它確保遞增的值不超過 緩沖區的上限。如果是這樣,它將指針值重置為緩沖區的開頭。二、它 檢查輸入指針是否有覆蓋輸出指針的危險,這種情況可能是 如果主機清空緩沖區的速度不夠快,則會遇到此問題。

溢出檢測和處理

溢出檢測和處理例程如圖 1 所示。它在輸入或 輸出指針遞增。首先,溢出例程確定輸入和 輸出指針。如果距離為一個字節,則軟件會聲明溢出警告。這將設置 溢出標志,并且還向另一個單元發送XOFF以停止傳輸,直到緩沖區 再次清空。串行端口接收器保持啟用狀態,以允許發送單元 在收到 XOFF 時的傳輸過程中。聲明警告狀態比 緩沖區已滿狀態允許接收這最后一個字符。

如果距離為零字節,則軟件聲明溢出關閉。這將設置溢出標志, 傳輸 XOFF,并禁用串行端口接收器以防止 緩沖區。退出溢出警告或關閉狀態的唯一方法是讓緩沖區輸出例程 刪除數據,直到距離增加到 2。

如果距離不是單個字節也不是零字節,則未檢測到溢出。然后例程檢查 溢出標志的狀態。如果未設置該標志,則例程將退出。如果設置了溢出標志,則 當前狀態指示緩沖區剛剛從溢出警告狀態轉換為否 警告。如果是這種情況,則緩沖區已準備好再次開始接收數據,因此例程將清除 溢出標志,重新啟用串行端口接收器,并傳輸 XON 字符。

pYYBAGP0e5-AO7q0AAAusCS5RV4257.gif?imgver=1

圖1.溢出處理程序流程圖。

程序集代碼示例

以下匯編語言代碼示例是使用 Keil 軟件編譯和模擬的 μVision2 集成開發環境。頭文件 reg320.inc 是一個包含名稱的文件 目標微控制器(本例中為DS80C320)的寄存器和位,以及類似的文件 通常會隨您的匯編程序一起提供,以便與正在使用的特定微控制器一起使用。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7907

    瀏覽量

    153708
  • 接收器
    +關注

    關注

    15

    文章

    2563

    瀏覽量

    73396
  • fifo
    +關注

    關注

    3

    文章

    400

    瀏覽量

    44621
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    基于FPGA的異步FIFO實現

    大家好,又到了每日學習的時間了,今天我們來聊一聊基于FPGA的異步FIFO實現。 一、FIFO簡介 FIFO是英文First In First Out 的縮寫,是一種先進先出的
    的頭像 發表于 06-21 11:15 ?6797次閱讀
    基于FPGA的異步<b class='flag-5'>FIFO</b>的<b class='flag-5'>實現</b>

    Keil C51中對雙數據指針的直接利用

    在8051體系中,數據指針DPTR作為一個特殊的16位寄存器,用于尋址64 KB的XDATA或CODE空間,通常它被當作一個16位指針,指向一個常數表。雙數據
    發表于 11-30 17:30

    異步FIFO指針同步產生的問題

    如圖所示的異步FIFO,個人覺得在讀寫時鐘同步時會產生兩個時鐘周期的延時,如果讀寫時鐘頻率相差不大,某一時刻讀寫指針相等,當寫指針同步到讀模塊時會產生延時,實際同步到讀模塊的寫指針是兩
    發表于 08-29 18:30

    如何使用串行端口發送和接收數據

    你好,我必須發送3個長TIPE可變形式的PLC到CY8C KIT01,我應該使用這個工具包的串行端口,但我沒有任何線索如何開始。我應該使用哪些組件來編程它來使用串行端口發送和接收
    發表于 04-09 12:06

    如何重置fifo指針

    它不會產生額外的SLWR信號。在傳輸開始時,FIFI重置FIFO,第一個字是不確定的。我不知道為什么。所以我認為如果我能重置FIFO指針,問題就可以解決了。那么有人知道如何重置FIFO
    發表于 04-24 14:06

    輕松上手單片機編程軟件——keil單片機編程軟件雙數據指針+二進制

    keil對雙數據指針的支持情況以及其代碼生成機制,并為大家介紹keil c51直接使用二進制的方法。在8051體系中,數據指針DPTR作為一個特殊的16位寄存器,用于尋址64 KB的X
    發表于 12-28 08:00

    如何通過一個簡單的INC AUXR1指令來回切換兩個數據指針

    Keil C51對雙數據指針的支持情況Keil C中直接生成雙數據指針的代碼
    發表于 04-26 06:11

    串行端口工作原理

    串行端口工作原理 串行端口工作原理 9針連
    發表于 07-24 00:21 ?2008次閱讀

    Keil C51中對雙數據指針的支持情況及代碼生成

    在8051體系中,數據指針DPTR作為一個特殊的16位寄存器,用于尋址64 KB的XDATA或CODE空間,通常它被當作一個16位指針,指向一個常數表。雙數據
    發表于 07-20 17:36 ?1499次閱讀
    Keil C51中對<b class='flag-5'>雙數據</b><b class='flag-5'>指針</b>的支持情況及代碼生成

    使用mxtni的串行端口

    外部串行端口 在使用外部串行端口之前,必須添加必要的硬件。外部串行端口包括五個模塊:DUART、
    發表于 04-12 11:08 ?6次下載
    使用mxtni的<b class='flag-5'>串行</b><b class='flag-5'>端口</b>

    FPGA的FIFO實現過程

    FIFO隊列有兩個位置指示指針。一個是寫指針,指向隊列的第一個存儲單元。一個讀指針,指向隊列的最后一個存儲單元。當有寫命令的時候,數據寫入寫
    發表于 06-29 08:51 ?1.6w次閱讀

    Keil C51是如何支持雙數據指針,有哪些特別的要求

    在8051體系中,數據指針DPTR作為一個特殊的16位寄存器,用于尋址64 KB的XDATA或CODE空間,通常它被當作一個16位指針,指向一個常數表。雙數據
    的頭像 發表于 09-19 16:47 ?4066次閱讀
    Keil C51是如何支持<b class='flag-5'>雙數據</b><b class='flag-5'>指針</b>,有哪些特別的要求

    同步FIFO和異步FIFO的區別 同步FIFO和異步FIFO各在什么情況下應用

    簡單的一種,其特點是輸入和輸出都與時鐘信號同步,當時鐘到來時,數據總是處于穩定狀態,因此容易實現數據的傳輸和存儲。 而異步FIFO則是在波形的上升沿和下降沿上進行處理,在輸入輸出
    的頭像 發表于 10-18 15:23 ?2049次閱讀

    什么是串行端口?有哪幾種分類?

    什么是串行端口?有哪幾種分類? 串行端口是計算機中用于進行數據傳輸的一種接口類型,通過單一的數據
    的頭像 發表于 02-02 15:40 ?2839次閱讀

    Keil+C51中對雙數據指針的直接利用

    Keil+C51中對雙數據指針的直接利用
    發表于 06-18 10:15 ?0次下載
    主站蜘蛛池模板: 噜噜色噜噜色 | 午夜色综合 | 女人张开腿让男人捅爽 | h视频在线观看视频观看 | 性生交大片免费一级 | 欧美一级特黄啪啪片免费看 | 亚洲欧美一区二区三区图片 | 4hu影院最新地址www | 欧美xxxx性高清 | 午夜影院0606免费 | 婷婷 夜夜 | 日本黄色美女视频 | 美女被免网站在线视频 | 高清一级做a爱视频免费 | yiren22亚洲综合高清一区 | 美女被免费网站视频九色 | 天天干视频在线观看 | 日日添天天做天天爱 | 国内一级特黄女人精品毛片 | 在线免费黄 | 两人性潮高免费视频看 | 国产精品午夜久久 | 一级片免费在线观看视频 | 日本加勒比在线精品视频 | 亚洲伊人成人 | 亚洲第一页视频 | 女毛片 | 99热热热| 成人区精品一区二区毛片不卡 | 26uuu影院亚洲欧美综合 | 国产三级日本三级日产三 | 六月丁香激情网 | 福利久久 | 美女黄色在线 | 欧美丝袜一区 | 宅男lu66国产在线播放 | 女女同免费播放毛片 | 天天干天天干天天天天天天爽 | 在线视频91| 日本黄色免费电影 | 二级特黄绝大片免费视频大片 |