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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)串行通信奇偶校驗(yàn)的設(shè)置方法

          51單片機(jī)串行通信奇偶校驗(yàn)的設(shè)置方法

          作者: 時(shí)間:2016-11-22 來源:網(wǎng)絡(luò) 收藏
          通常,串行通信的一幀的格式是8-n-1,即8位數(shù)據(jù)、無校驗(yàn)、1個(gè)停止位。

          有時(shí)為了提高準(zhǔn)確度,需要增加一個(gè)“奇”校驗(yàn)位或者“偶”校驗(yàn)位。
          對于高級語言的做法是很簡單的,只要把格式命令“8-n-1”,改為“8-P-1”或“8-O-1”即可。

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

          串行口在帶有校驗(yàn)位的通信方式中,是先發(fā)送8位數(shù)據(jù),然后再發(fā)送校驗(yàn)位。

          51單片機(jī)也可以按照帶有校驗(yàn)位的方式進(jìn)行串行通信,這在51單片機(jī)中稱為9位數(shù)據(jù)方式。
          51單片機(jī)中有兩個(gè)位,分別稱為TB8和RB8,它們在“無校驗(yàn)”的時(shí)候,并沒有用處。
          當(dāng)51單片機(jī)用9位數(shù)據(jù)方式進(jìn)行串行通信的時(shí)候,TB8和RB8的作用如下:
          51單片機(jī)在發(fā)送的時(shí)候,先發(fā)送8位數(shù)據(jù),然后發(fā)送TB8中的內(nèi)容;
          51單片機(jī)在接收的時(shí)候,先接收8位數(shù)據(jù),然后接收校驗(yàn)位,存到RB8中。

          編寫51單片機(jī)程序的時(shí)候,應(yīng)該在發(fā)送數(shù)據(jù)之前,在TB8中,寫好待發(fā)送的校驗(yàn)位。

          8位數(shù)據(jù)的校驗(yàn)位,可以利用單片機(jī)中奇偶標(biāo)志位P來自動(dòng)生成,程序如下。

          MOV A, #待發(fā)數(shù)據(jù) ;數(shù)據(jù)進(jìn)了A,即刻生成奇偶標(biāo)志位P
          MOV C, P
          MOV TB8, C ;校驗(yàn)位送到TB8
          MOV SBUF, A ;發(fā)送數(shù)據(jù),以及P

          由于P = 1則說明A中有奇數(shù)個(gè)1,所以上述程序是“偶”校驗(yàn)的形式。
          如果要求的是“奇”校驗(yàn),則需要增加一條取反指令,如下:

          MOV C, P
          CPL C
          MOV TB8, C ;校驗(yàn)位送到TB8

          接收方會(huì)把收到的8位數(shù)送到SBUF,第9位數(shù),送到RB8,然后自動(dòng)設(shè)立RI = 1。
          之后,就可以用RB8中的內(nèi)容,對剛才收到的8位數(shù)進(jìn)行正確性檢驗(yàn)。

          另一個(gè)問題:51單片機(jī)如何初始化成8-n-1(8數(shù)據(jù)位,無奇偶校驗(yàn)位,1停止位)波特率,是用串口的模式幾?
          本來想用串口的模式1,可是仔細(xì)一看,模式1是10異步通信方式,1起始位,8數(shù)據(jù)位,1停止位?
          懸賞分:20 - 解決時(shí)間:2009-12-1 13:26
          問題補(bǔ)充:首先感謝一樓的回答。我還有些疑問,剛才用示波器看了下,當(dāng)發(fā)送0xFF時(shí),示波器顯示一位低電平,其余為高電平,這點(diǎn)應(yīng)該是對的,因?yàn)槠鹗嘉皇?.可是為什么發(fā)送0xAA時(shí),示波器的(起始位+數(shù)據(jù)位+停止位)序列是:0 + 0101 0101 + 1,而0x55的序列為:0 +1010 1010 + 1,這兩個(gè)值好像不對,是相反了,要是調(diào)一下剛好對?
          ;-----------------------------------------------------------------
          最佳答案用串口的模式1,是10位異步通信方式。
          1起始位,8數(shù)據(jù)位,1停止位,沒有奇偶校驗(yàn)位。
          這種模式就是:8-n-1(8數(shù)據(jù)位,無奇偶校驗(yàn)位,1停止位)的模式。
          完全符合你的要求。
          --------------------
          帶奇偶校驗(yàn)位的,要用方式2或方式3。
          把奇偶校驗(yàn)位,放到TB8上,就可以發(fā)送了,這就是偶校驗(yàn)。
          接收的奇偶校驗(yàn)位,在RB8中。
          --------------------
          呵呵,你還用上了示波器,奢侈!
          你觀察的很正確。
          記住:串行通信,是“低位在前”。這就對了。
          你補(bǔ)充的提問太多了,都足夠再開一、二個(gè)問題了,這20分,真值!
          ;-----------------------------------------------------------------



          評論


          技術(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); })();