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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 移動嵌入ARM7串口9位方式編程技術(shù)

          移動嵌入ARM7串口9位方式編程技術(shù)

          作者: 時間:2011-06-17 來源:網(wǎng)絡(luò) 收藏
          3 9位多機(jī)通信實(shí)現(xiàn)

          本文引用地址:http://www.ex-cimer.com/article/150590.htm

            上面已說明,9位多機(jī)通信的關(guān)鍵是第9位的發(fā)送和第9位的接收和判斷。

            對于發(fā)送端,利用UOLCR寄存器的設(shè)置便能實(shí)現(xiàn)第9位的發(fā)送。

            UOLCR=0x2B; //帶奇偶校驗(yàn),強(qiáng)制為l

            UOLCR=Ox3B; //帶奇偶校驗(yàn),強(qiáng)制為O

            通過以上設(shè)置,只要編程發(fā)送1字節(jié),arm就自動將第9位按程序設(shè)置的0或1發(fā)送出去。

            難點(diǎn)在于接收端,即接收端把接收到的第9位放到哪了,程序員又如何知道這第9位是0還是1。

            其實(shí),ARM并不像51單片機(jī)那樣把接收到的第9位數(shù)據(jù)自動裝入SCON的RB8。實(shí)際上,ARM并沒有這樣的寄存器SCON,也沒有RB8位。要實(shí)現(xiàn)判斷第9位為1或0,只能利用arm通信的奇偶校驗(yàn)功能!

            具體思路如下:

           ?、僭O(shè)置奇偶校驗(yàn)使能;

           ?、诰幊套x取UOLSR寄存器的PE位(具體含義見UOLSR寄存器的描述部分);

            ③編程判斷收到的l字節(jié)中有多少個“1”,并設(shè)置一標(biāo)志PP;

           ?、軐⑸鲜鰳?biāo)志與PE位比較處理;

           ?、荼容^的結(jié)果就正確表示了第9位是“O”,還是“1”。

            按照以上思路,可有效實(shí)現(xiàn)第9位的判斷。下面給出相應(yīng)的程序代碼:

            

            上述程序中變量u9就是得到的第9位標(biāo)志:

            當(dāng)u9=OxFF時,說明第9位為1;

            當(dāng)u9=OxFE時,說明第9位為O。

            還需注意的是,接收端奇偶校驗(yàn)設(shè)置成偶校驗(yàn)還是奇校驗(yàn),要根據(jù)后面程序中標(biāo)志pp的設(shè)置而定。

            4 總 結(jié)

            本設(shè)計方案巧妙地應(yīng)用arm通信奇偶校驗(yàn)功能,實(shí)現(xiàn)了9位的多機(jī)通信,并在相關(guān)課題中成功應(yīng)用,而且保證了通信的可靠性。


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();