導航:首頁 > 操作系統 > 51單片機c語言奇偶校驗

51單片機c語言奇偶校驗

發布時間:2022-07-14 04:49:38

單片機奇偶校驗

通常,串列通信的一幀的格式是8-n-1,即8位數據、無校驗、1個停止位。
有時為了提高准確度,需要增加一個「奇」校驗位或者「偶」校驗位。
對於高級語言的做法是很簡單的,只要把格式命令「8-n-1」,改為「8-P-1」或「8-O-1」即可。
串列口在帶有校驗位的通信方式中,是先發送8位數據,然後再發送校驗位。
51單片機也可以按照帶有校驗位的方式進行串列通信,這在51單片機中稱為9位數據方式。
51單片機中有兩個位,分別稱為TB8和RB8,它們在「無校驗」的時候,並沒有用處。
當51單片機用9位數據方式進行串列通信的時候,TB8和RB8的作用如下:
51單片機在發送的時候,先發送8位數據,然後發送TB8中的內容;
51單片機在接收的時候,先接收8位數據,然後接收校驗位,存到RB8中。
編寫51單片機程序的時候,應該在發送數據之前,在TB8中,寫好待發送的校驗位。
8位數據的校驗位,可以利用單片機中奇偶標志位P來自動生成,程序如下。
MOV A, #待發數據 ;數據進了A,即刻生成奇偶標志位P
MOV C, P
MOV TB8, C ;校驗位送到TB8
MOV SBUF, A ;發送數據,以及P
由於P = 1則說明A中有奇數個1,所以上述程序是「偶」校驗的形式。
如果要求的是「奇」校驗,則需要增加一條取反指令,如下:
MOV C, P
CPL C
MOV TB8, C ;校驗位送到TB8
接收方會把收到的8位數送到SBUF,第9位數,送到RB8,然後自動設立RI = 1。
之後,就可以用RB8中的內容,對剛才收到的8位數進行正確性檢驗。

另一個問題:51單片機如何初始化成8-n-1(8數據位,無奇偶校驗位,1停止位)波特率,是用串口的模式幾?
本來想用串口的模式1,可是仔細一看,模式1是10非同步通信方式,1起始位,8數據位,1停止位?
懸賞分:20 - 解決時間:2009-12-1 13:26
問題補充:首先感謝一樓的回答。我還有些疑問,剛才用示波器看了下,當發送0xFF時,示波器顯示一位低電平,其餘為高電平,這點應該是對的,因為起始位是0.可是為什麼發送0xAA時,示波器的(起始位+數據位+停止位)序列是:0 + 0101 0101 + 1,而0x55的序列為:0 +1010 1010 + 1,這兩個值好像不對,是相反了,要是調一下剛好對?
;-----------------------------------------------------------------
最佳答案用串口的模式1,是10位非同步通信方式。
1起始位,8數據位,1停止位,沒有奇偶校驗位。
這種模式就是:8-n-1(8數據位,無奇偶校驗位,1停止位)的模式。
完全符合你的要求。

❷ 51單片機進行串口通信的時候,如何設置奇校驗還是偶校驗

首先你需要設置串口工作模式為2或3
其次,你將SCON中的TB8設置為1或0來確定是奇校驗或偶校驗。

❸ 51單片機中C語言奇偶校驗位如何設置

MOV
A,
#待發數據
;數據進了A,即刻生成校驗位P
MOV
C,
P
MOV
TB8,
C
;校驗位送到TB8
MOV
SBUF,
A
;發送數據,以及P
上述寫法,是偶校驗。奇校驗,需要增加一條取反指令,如下:
MOV
C,
P
CPL
C
MOV
TB8,
C
;校驗位送到TB8

❹ 51單片機中C語言奇偶校驗位如何設置

在51單片機中,只要將一個值傳送給累加器,這個數的奇偶校驗值就會影響P。一般而言,在串列通訊中為確保傳輸數的准確,用到校驗位的情況比較多。以下是程序代碼:

#include<reg51.h>

main()
{
char dat;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0xd0;
while(1)
{
dat++;
ACC=dat;
TB8=P; //校驗位送第九數據位TB8
SBUF=ACC;
while(TI==0);
TI=0;
}
}

❺ 51單片機奇偶校驗

呵呵,在這兩條指令的前後,你各忽略了一條指令。請看下列程序及說明:
MOVA,#待發數據;數據進了A,即刻生成校驗位P
MOVC,P
MOVTB8,C;校驗位送到TB8
MOVSBUF,A;發送數據,以及P
上述寫法,是偶校驗。奇校驗,需要增加一條取反指令,如下:
MOVC,P
CPLC
MOVTB8,C;校驗位送到TB8
就這些。

❻ C語言怎麼實現奇偶校驗啊(單片機串列通信)

http://blog.21ic.com/user1/2663/archives/2007/34881.html
這個可以參考一下

❼ 關於51單片機的奇偶校驗~~小弟菜鳥


呵呵,在這兩條指令的前後,你各忽略了一條指令。請看下列程序及說明:

MOV A, #待發數據 ;數據進了A,即刻生成校驗位P
MOV C, P
MOV TB8, C ;校驗位送到TB8
MOV SBUF, A ;發送數據,以及P

上述寫法,是偶校驗。奇校驗,需要增加一條取反指令,如下:

MOV C, P
CPL C
MOV TB8, C ;校驗位送到TB8

就這些。

❽ 51單片機串口通訊,奇偶校驗的問題

用匯編語言編程,好像是你自己講外文(如英文),必須按照單詞表來講,不可造詞。

用C語言編程,你就有了一個翻譯了,你就可以比較隨意的講。

為什麼不直接從P送到TB8?
匯編語言,一條一條的,都必須使用指令系統中的指令。不可瞎編。

❾ 51單片機 奇偶校驗

呵呵,在這兩條指令的前後,你各忽略了一條指令。請看下列程序及說明:

MOV A, #待發數據 ;數據進了A,即刻生成校驗位P
MOV C, P
MOV TB8, C ;校驗位送到TB8
MOV SBUF, A ;發送數據,以及P

上述寫法,是偶校驗。奇校驗,需要增加一條取反指令,如下:

MOV C, P
CPL C
MOV TB8, C ;校驗位送到TB8

就這些。

閱讀全文

與51單片機c語言奇偶校驗相關的資料

熱點內容
騰訊雲連接不上伺服器 瀏覽:221
不能用來表示演算法的是 瀏覽:859
6軸機器人演算法 瀏覽:890
手機主題照片在哪個文件夾 瀏覽:294
安卓手機後期用什麼軟體調色 瀏覽:628
cad修改快捷鍵的命令 瀏覽:242
好錢包app怎麼登錄不了 瀏覽:859
樹莓派都用python不用c 瀏覽:757
access文件夾樹的構造 瀏覽:662
安卓多指操作怎麼設置 瀏覽:658
linux樹形目錄 瀏覽:727
平方根的簡單演算法 瀏覽:898
千牛訂單頁面信息加密取消 瀏覽:558
單片機自製紅外遙控燈 瀏覽:719
伺服器最小配置怎麼弄 瀏覽:853
ibm伺服器硬體如何升級 瀏覽:923
全球程序員節點贊 瀏覽:986
php函數傳遞數組 瀏覽:632
人工峰群演算法的目標函數 瀏覽:469
如何刪加密文檔 瀏覽:105