A. 51串口發送數據的格式是什麼
串列口控制寄存器SCON
SCON的位元組地址是98H,其格式如下:
SM0、SM1:串列口工作方式控制位:
SM0、SM1 工作方式 功能 波特率
00 方式0 同步移位寄存器 fosc/12
01 方式1 8位UART 可變(T1溢出率)
10 方式2 9位UART fosc/64或fosc/32
11 方式3 9位UART 可變(T1溢出率)
其中,fosc為振盪器的頻率,UART為通用非同步接收和發送器的英文縮寫。
串列口工作方式0:
當設定SM0、SM1為00時,串列口工作於方式0,它又叫同步移位寄存器輸出方式。在方式0下,數據從RXD(P3.0)端串列輸出或輸入,同步信號從TXD(P3.1)端輸出,發送或接收的數據為8位,低位在前,高位在後,沒有起始位和停止位。數據傳輸率固定為振盪器的頻率1/12,也就是每個機器周期傳送一位數據。方式0可以外接移位寄存器,將串列口擴展為並行口,也可以外接同步輸入/輸出設備。
執行任何一條以SBUF為目的寄存器指令,就開始發送。
串列口工作方式1:
當設定SM0、SM1為01時,串列口工作於方式1,為數據傳輸率可變的8位非同步通信方式,由TXD發送,RXD接收,一幀數據為10位,1位起始位(低電平),8位數據位(低位在前),1位停止位(高電平)。數據傳輸率取決於定時器1或2的溢出速率(1/溢出周期)和數據傳輸率是否加倍的選擇位SMOD。
對於有定時器/計數器2的單片機,當T2CON寄存器中RCLK和TCLK置位時,用定時器2作為接收和發送數據傳輸率發生器,而RCLK=TCLK=0時,用定時器1作為接收和發送的數據傳輸率發生器。2個定時器/計數器可以交叉使用,即發送和接收採用不同的數據傳輸率。
發送過程是由執行任何一條以SBUF為目的的寄存器指令引起的。
串列口工作方式2:
當設定SM0、SM12位為10時,串列口工作於方式2,此時串列口被定義為9位非同步通信介面。採用這種方式可接收或發送11位數據,以11位為一幀,比方式1增加了一個數據位,其餘相同。第9個數據即D8位可用作奇偶校驗或地址/數據選擇,可以通過軟體來控制它,再加特殊功能寄存器SCON中的SM2位的配合,可使MCS-51單片機串列口適用於多機通信。發送時,第9位數據為TB8,接收時,第9位數據送入RB8。方式2數據傳輸率固定,只有2個選擇,為振盪器的1/64或1/32,可由PCON的最高位選擇。
串列口工作方式3:
當設定SM0、SM1二位為11時,串列口工作於方式3。方式3與方式2類似,唯一的區別是方式3的數據傳輸率是可變的,而幀格式與方式2一樣為11位一幀。方式3也適用於多機通信。
SM2:多機通信控制位多機通信時工作於方式2和方式3,SM2位主要用於方式2和方式3。接收狀態,當串列口工作於方式2或方式3,以及SM2=1時,只有當接收到第9位數據(RB8)為1時,才把接收到的前8位數據送入SBUF,且置位RI發出中斷請求,否則會將接收到的數據放棄。當SM2=0時,就不管第9位數據是0還是1,都將數據送入SBUF,並發出中斷請求。
工作於方式0,SM2必須為0。
REN:允許接收位
REN用於控制數據接收的允許和禁止,REN=1允許接收,REN=0禁止接收。
TB8:發送數據位8
在方式2和方式3中,TB8是要發送的第9位數據位,在多機通信中同樣需要傳輸這一位,TB8=0表示傳輸的為數據,TB8=1代表傳輸的為地址。
RB8:接收數據位8
在方式2和方式3中,RB8存放接收到的第9位數據,用以識別接收到的數據特徵。
TI:發送中斷標志位
可定址標志位。方式0時,發送完第8位數據後,由硬體置位,其他方式下,在發送或停止位之前由硬體置位,TI=1表示幀發送結束, 向CPU發中斷申請。在中斷服務程序中,必須用軟體將其清0,取消此中斷申請。
RI:接收中斷標志位
可定址標志位。方式0時,接收完第8位數據後,該位由硬體置位,在其他工作方式下,該位由硬體置位,RI=1表示幀接收完成,向CPU發中斷申請。在中斷服務程序中,必須用軟體將其清0,取消此中斷申請。