什么是MCS 51 單片機(jī)的串行接口
串行通信的基本概念
CPU 與外部設(shè)備交換數(shù)據(jù)有并行和串行通信兩種方式。并行通信是指數(shù)據(jù)的各位同時(shí)進(jìn)行傳送的方式。其特點(diǎn)是傳送速度快、效率高,顯然并行傳送的數(shù)據(jù)有多少位,就需要有多少根傳輸線。當(dāng)傳送距離較遠(yuǎn)時(shí),位數(shù)較多就會導(dǎo)致通信線路成本的大幅度增加,因此它僅適合于短距離傳送。串行通信是指數(shù)據(jù)的各位按順序一位一位地傳送的通信方式。其特點(diǎn)是只要一對傳輸線就可實(shí)現(xiàn)通信,對傳輸?shù)臄?shù)據(jù)較多、距離很遠(yuǎn) 時(shí) ,它可以大量節(jié)約系統(tǒng)的硬件投資。因此,在遠(yuǎn)距離的數(shù)據(jù)通信系統(tǒng)中一般采用串行通信方式。
串行通信依據(jù)收發(fā)功能分為 3 種方式。① 單工方式:信息只能沿著一個(gè)方向傳輸,例 如甲設(shè)備只能發(fā)送而乙設(shè)備只能接收。② 半雙工方式:信息可以沿一條信號線的兩個(gè)方向 傳輸,但不能同時(shí)實(shí)現(xiàn)雙向傳輸,只能交替地收或發(fā)。③ 全雙工方式:使用兩條相互獨(dú)立的數(shù)據(jù)線,分別傳輸兩路方向相反的信息,使收和發(fā)能同時(shí)進(jìn)行。
在串行通信過程中,數(shù)據(jù)傳送方式有兩種:同步方式和異步方式。
(1) 同步方式是將一大批數(shù)據(jù)分成幾個(gè)數(shù)據(jù)塊,數(shù)據(jù)塊之間用同步字符予以隔開,而傳輸?shù)母魑欢M(jìn)制碼之間都沒有間隔。其基本特征是發(fā)送與接收時(shí)鐘始終保持嚴(yán)格同步。
(2) 異步通信是按幀傳送數(shù)據(jù),它利用每一幀的起、止信號來建立發(fā)送與接收之間的同步,每幀內(nèi)部各位均采用固定的時(shí)間間隔,但幀與幀之 間的時(shí)間間隔是隨機(jī)的。其基本特征是每個(gè)字符必須用起始位和停止位作為字符開始和結(jié)束的標(biāo)志,它是以字符為單位一個(gè)個(gè)地發(fā)送和接收的。
一個(gè)字符(一幀) 由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位組成。起始位表示一個(gè)字符的開始,接收方可用起始位使自己的接收時(shí)鐘與數(shù)據(jù)同步 。停止位則表示一個(gè)字符的結(jié)束。在傳送一個(gè)字符時(shí),由一位低電平的起始位開始,接著傳送數(shù)據(jù)位,數(shù)據(jù)位的位數(shù)為 5~8 。在傳輸時(shí),按低位在前 、高位在后的順序傳送。奇偶校驗(yàn)位用于檢驗(yàn)數(shù)據(jù)傳送的正確性,也可以沒有,可由程序來指定。最后傳送的是高電平的停止位,停止位可以是 1 位、 1.5 位或 2 位。停止位結(jié)束到下一個(gè)字符的起始位之間的空閑位要由高電平 1 來填充(只要不發(fā)送下一個(gè)字符,線路上就始終為空閑位), 異步傳送的 8 位字符格式如圖 6.8 所示。
圖 6.8 異步通信 的 8 位字符格式
MCS 51 單片機(jī)內(nèi)部有一個(gè)全雙工異步串行 I/O 口 ,占用 P3.0 和 P3.1 兩個(gè)引腳, 成為這兩個(gè)引腳的第二功能:P3.0 是串行數(shù)據(jù)接收端 RXD ,P3.1 是串行數(shù)據(jù)發(fā)送端 TXD 。
介紹與串行口有關(guān)的幾個(gè)特殊功能寄存器,然后再敘述串行口的 4 種工作模式 及其應(yīng)用。
與串行口有關(guān)的特殊功能寄存器
使用串行口時(shí),要使用特殊功能寄存器 SBUF 作傳送和接收數(shù)據(jù)的緩沖器 ,則要用 SCON 作串行口控制,要用到 SP 、IE 和 IP 作串行口 中斷控制,必要時(shí)還可能用到 T1 和 PCON 以設(shè)定波特率。
1.數(shù)據(jù)緩沖器 SBUF
串行口緩沖器 SBUF 是可直接尋址的特殊功能寄存器 ,其內(nèi)部 RAM 字節(jié)地址是99H 。在物理上,它對應(yīng)著兩個(gè)獨(dú)立的寄存器,一個(gè)發(fā)送寄存器,一個(gè)接收寄存器。發(fā)送時(shí),就是 CPU 寫入 SBUF 的時(shí)候,51 系列單片機(jī)沒有專門的啟動發(fā)送狀態(tài)的指令;接收時(shí),就是讀取 SBUF 的過程,接收寄存器是雙緩沖的,以避免在接收下一幀數(shù)據(jù)之前,CPU 未能及時(shí)響應(yīng)接收器的中斷,沒有把上一幀數(shù)據(jù)讀走,而產(chǎn)生兩幀數(shù)據(jù)重疊的問題。
2. 串行口控制寄存器 SCON
SCON 用于控制和監(jiān)視串行口的工作狀態(tài),其各位定義如 圖 5.3 所示。相應(yīng)的各位功能介紹如下:
SM0 、SM1 :用于定義串行口的操作模式,兩個(gè)選擇位對應(yīng) 4 種模式,見表 6.2。其中 fOSC 是振蕩器頻率,UART 為通用異步接收和發(fā)送器的英文縮寫。
SM2 :多機(jī)通信時(shí)的接收允許標(biāo)志位。在模式 2 和 3 中,若 SM2 = 1 ,且接收到的第 9 位數(shù)據(jù)(RB8)是 0 ,則接收中斷標(biāo)志(RI)不會被激活。在模式 1 中,若 SM2=1 且沒有接收到有效的停止位,則 RI 不會被激活。在模式 0 中,SM2 必須是 0 。
REN:允許接收位 。由軟件置位或清零,REN=1 時(shí) ,串行口允許接收數(shù)據(jù);REN=0時(shí),禁止接收。
TB8:發(fā)送數(shù)據(jù)位 8 。在模式 2 和 3 中,它是要發(fā)送的第 9 位數(shù)據(jù),在許多通信協(xié)議中,該位是奇偶位,可以由軟件置位或清除。在多機(jī)通信中,這一位用于表示是地址幀還是數(shù)據(jù)幀。
RB8:接收數(shù)據(jù)位 8 。在模式 2 和 3 中是接收的第 9 位數(shù)據(jù)。在模式 1 中,若 SM2= 0 ,則 RB8 是接收的停止位。在模式 0 中,該位未使用。
3. 電源控制寄存器 PCON
電源控制寄存器 PCON 的各位定義如圖 6.9 所示 。PCON 的地址為 87H ,不可位尋址,初始化時(shí)需要進(jìn)行字節(jié)傳送。
最高位 SMOD 與串行口的工作有關(guān),該位是波特率倍增位。SMOD=1 時(shí),波特率加倍,否則不加倍。
GF1 、GF0:通用標(biāo)志位,由軟件置位、復(fù)位。
PD:掉電方式控制位,PD=0 為正常方式,PD=1 為掉電方式。
IDL:空閑方式控制位,IDL=0 為正常方式,IDL=1 為空閑方式。
由軟件將 PD 位置 1 ,單片機(jī)進(jìn)入掉電保護(hù)狀態(tài),內(nèi)部 RAM 和專用寄存器的內(nèi)容被保存,單片機(jī)停止一切工作,掉電保護(hù)時(shí)的備用電源可通過 VCC 引腳接入。當(dāng)電源恢復(fù)后,系統(tǒng)要維持 10ms 的復(fù)位時(shí)間后才能退出掉電保護(hù)狀態(tài) ,復(fù)位操作將重新定義專用寄存器,但內(nèi)部 RAM 的內(nèi)容不變。