串口通信
計算機通信:是指計算機與外部設備或計算機與計算機之間的信息交換。
通信方式:通信有並行通信和串行通信兩種方式。在多微機系統以及現代測控系統中信息的交換多采用串行通信方式。
並行通信通常是將數據字節的各位用多條數據線同時進行傳送。
並行通信控制簡單、傳輸速度快;由於傳輸線較多,長距離傳送時成本高且接收方的各位同時接收存在困難。
串行通信是指 使用一條數據線,將數據一位一位地依次傳輸,每一位數據佔據一個固定的時間長度。其只需要少數幾條線就可以在系統間交換信息,特別適用於計算機與計算機、計算機與外設之間的遠距離通信。
串行通信的特點:傳輸線少,長距離傳送時成本低,但數據的傳送控制比並行通信複雜。
串行通信又可分爲異步通信和同步通信。
異步通信是指通信的發送與接收設備使用各自的時鐘控制數據的發送和接收過程。爲使雙方的收發協調,要求發送和接收設備的時鐘儘可能一致。
例如:同步就是你叫我去吃飯,我聽到了就和你去吃飯,如果沒有聽到,你就不停的叫,直到我告訴你聽到了,才一起去吃飯。異步就是你叫我,然後自己去吃飯,我得到消息後可能立即走,也可能等到下班後纔去吃飯。
異步通信是以字符(構成的幀)爲單位進行傳輸,字符與字符之間的間隙(時間間隔)是任意的,但每個字符中的各位是以固定的時間傳送的,即字符之間不一定有“位間隔”的整數倍的關係,但同一字符內的各位之間的距離均爲“位間隔”的整數倍。
異步通信是以字符(構成的幀)爲單位進行傳輸,字符與字符之間的間隙(時間間隔)是任意的,但每個字符中的各位是以固定的時間傳送的,即字符之間不一定有“位間隔”的整數倍的關係,但同一字符內的各位之間的距離均爲“位間隔”的整數倍。
同步通信:
同步通信時要建立發送方時鐘對接收方時鐘的直接控制,使雙方達到完全同步。此時,傳輸數據的位之間的距離均爲“位間隔”的整數倍,同時傳送的字符間不留間隙,即保持位同步關係,也保持字符同步關係。發送方對接收方的同步可以通過兩種方法實現。
串行通信常見的錯誤校驗
1、奇偶校驗
在發送數據時,數據位尾隨的1位爲奇偶校驗位(1或0)。奇校驗時,數據中“1”的個數與校驗位“1”的個數之和應爲奇數;偶校驗時,數據中“1”的個數與校驗位“1”的個數之和應爲偶數。接收字符時,對“1”的個數進行校驗,若發現不一致,則說明傳輸數據過程中出現了差錯。
2、代碼和校驗
代碼和校驗是發送方將所發數據塊求和(或各字節異或),產生一個字節的校驗字符(校驗和)附加到數據塊末尾。接收方接收數據同時對數據塊(除校驗字節外)求和(或各字節異或),將所得的結果與發送方的“校驗和”進行比較,相符則無差錯,否則即認爲傳送過程中出現了差錯。
3、循環冗餘校驗
這種校驗是通過某種數學運算實現有效信息與校驗位之間的循環校驗,常用於對磁盤信息的傳輸、存儲區的完整性校驗等。這種校驗方法糾錯能力強,廣泛應用於同步通信中。
傳輸速率:
比特率是每秒鐘傳輸二進制代碼的位數,單位是:位/秒(bps)。如每秒鐘傳送240個字符,而每個字符格式包含10位(1個起始位、1個停止位、8個數據位),這時的比特率爲:10位×240個/秒 = 2400 bps
串行通信接口標準:
一、RS-232C接口:
RS-232C是EIA(美國電子工業協會)1969年修訂RS-232C標準。RS-232C定義了數據終端設備(DTE)與數據通信設備(DCE)之間的物理接口標準。
1、機械特性
RS-232C接口規定使用25針連接器,連接器的尺寸及每個插針的排列位置都有明確的定義。(陽頭)
傳輸速率與傳輸距離的關係
串行接口或終端直接傳送串行信息位流的最大距離與傳輸速率及傳輸線的電氣特性有關。當傳輸線使用每0.3m(約1英尺)有50PF電容的非平衡屏蔽雙絞線時,傳輸距離隨傳輸速率的增加而減小。當比特率超過1000 bps 時,最大傳輸距離迅速下降,如9600 bps 時最大距離下降到只有76m(約250英尺)。
採用RS-232C接口存在的問題
1、傳輸距離短,傳輸速率低
RS-232C總線標準受電容允許值的約束,使用時傳輸距離一般不要超過15米(線路條件好時也不超過幾十米)。最高傳送速率爲20Kbps。
2、有電平偏移
RS-232C總線標準要求收發雙方共地。通信距離較大時,收發雙方的地電位差別較大,在信號地上將有比較大的地電流併產生壓降。
3、抗干擾能力差
RS-232C在電平轉換時採用單端輸入輸出,在傳輸過程中當干擾和噪聲混在正常的信號中。爲了提高信噪比,RS-232C總線標準不得不採用比較大的電壓擺幅。
串行接口的結構
有兩個物理上獨立的接收、發送緩衝器SBUF,它們佔用同一地址99H
在物理結構上,則有兩個完全獨立的SBUF,一個是發送緩衝寄存器SBUF,另一個是接收緩衝寄存器SBUF。如果CPU寫SBUF,數據就會被送入發送寄存器準備發送;如果CPU讀SBUF,則讀入的數據一定來自接收緩衝器。即CPU對SBUF的讀寫,實際上是分別訪問上述兩個不同的寄存器。 a = SBUF; SBUF = a;
串行口工作前配置寄存器,設置工作模式
相關寄存器
串行口控制寄存器SCON(可位尋址)
當T1作爲波特率發生器時,最典型的用法是使T1工作在自動再裝入的8位定時器方式(即方式2,且TCON的TR1=1,以啓動定時器)。這時溢出率取決於TH1中的計數值。
T1 溢出率 = fosc /{12×[256 -(TH1)]}
常用串口波特率:
300、600、1200、2400、4800、9600、19200 ……115200;
定時器相關寄存器
單片機同優先級中內部查詢順序
**內部查詢順序:**在同時收到幾個同一優先級的中斷請求時,哪一個中斷請求能優先得到響應,取決於內部的查詢順序。這相當於在同一優先級內,還同時存在另一輔助優先級結構,其查詢順序如下:
void UART() interrupt 4 //串口中斷處理函數,加關鍵字interrupt和入口號
{
中斷處理語句
}