<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 用于ATmega128的軟件UART范例程序

          用于ATmega128的軟件UART范例程序

          作者: 時間:2012-10-29 來源:網(wǎng)絡 收藏

          這段由CVAVR生成器產(chǎn)生的接口代碼是一個非常好的、高效可靠,并且值得認真學習和體會的。其特點如下:

          l. 它采用兩個8字節(jié)的接收和發(fā)送緩沖器來提高MCU的效率,如當主調(diào)用Putchar()發(fā)送數(shù)據(jù)時,如果口不空閑,就將數(shù)據(jù)放入發(fā)送緩沖器中,MCU不必等待,可以繼續(xù)執(zhí)行其它的工作。而的硬件發(fā)送完一個數(shù)據(jù)后,產(chǎn)生中斷,由中斷服務負責將發(fā)送緩沖器中數(shù)據(jù)依次送出。

          2.數(shù)據(jù)緩沖器結(jié)構是一個線性的循環(huán)隊列,由讀、寫和隊列計數(shù)器3個指針控制,判斷隊列是否空、溢出,以及當前數(shù)據(jù)在隊列中的位置。

          3. 用編譯控制命令#pragma savereg-和#pragma savereg+,使得由CVAVR在生成的中斷服務程序中不進行中斷保護(CVAVR生成中斷保護會將比較多的寄存器壓入堆棧中),而在中斷中嵌入?yún)R編,只將5個在本中斷中必須要保護的寄存器壓棧。這樣提高了UART中斷處理的速度,也意味著提高了MCU的效率。

          4.由于在接口程序Putchar()、Getchar()和中斷服務程序中都要對數(shù)據(jù)緩沖器的讀、寫和隊列計數(shù)器3個指針判斷和操作,為了防止沖突,在Putchar()、Getchar()中對3個指針操作時臨時將中斷關閉,提高了程序的可靠性。

          建議讀者能逐字逐句地仔細分析該段代碼,真正理解和領會每一句語句(包括編譯控制命令的作用)的作用,從中體會和學習如何編寫效率高,可靠性好,結(jié)構優(yōu)良的系統(tǒng)代碼。這段程序使用的方法和技巧,對編寫SPI、I2C的串行通信接口程序都是非常好的借鑒。

          作為現(xiàn)在的單片機和嵌入式系統(tǒng)的工程師,不僅要深入全面的掌握芯片和各種器件的性能,具備豐富的硬件設計能力;同時也必須提高的設計能力。要學習和掌握有關數(shù)據(jù)結(jié)構、操作系統(tǒng)、工程、網(wǎng)絡協(xié)議等方面的知識,具有設計編寫大的復雜系統(tǒng)程序的能力。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();