計算機(jī)串口通信的理解
1、串行接口
是指數(shù)據(jù)一位一位地順序傳送。其特點是通信線路簡單,只要一對傳輸線就可以實現(xiàn)雙向通信(可以直接利用電話線作為傳輸線),從而大大降低了成本,特別適用于遠(yuǎn)距離通信,但傳送速度較慢。
2、并行接口
簡稱并口。所謂“并行”,是指8位數(shù)據(jù)同時通過并行線進(jìn)行傳送,這樣數(shù)據(jù)傳送速度大大提高,但并行傳送的線路長度受到限制,因為長度增加,干擾就會增加,數(shù)據(jù)也就容易出錯,目前,并行接口主要作為打印機(jī)端口等。

圖1表示兩臺計算機(jī)的網(wǎng)絡(luò)通信連接示意圖。兩臺計算機(jī)的發(fā)送和接收都是通過網(wǎng)線中的單根導(dǎo)線連接,所以,不管是發(fā)送信息還是接收信息,都只能一位一位地進(jìn)行,也就是以串行的方式進(jìn)行,這也是串口名稱的由來。

圖2表示串口的內(nèi)部結(jié)構(gòu)圖。一臺計算機(jī)通過串口的TXD引腳發(fā)送數(shù)據(jù),通過RXD接收數(shù)據(jù)。

圖3是單片機(jī)中斷連接圖。如前文所示,串口發(fā)送中斷要發(fā)生的話,就必須TI開關(guān)、ES開關(guān)、EA開關(guān)以及優(yōu)先級開關(guān)都必須閉合。
現(xiàn)在我們想象一下,如果我們要將信息傳送出去,需要解決哪幾個問題呢?
1:我們要知道待發(fā)送的數(shù)據(jù)放在什么地方。
2:我們發(fā)送數(shù)據(jù)的速率是多少,如何控制這個發(fā)送速率。
圖3表示,當(dāng)CPU要發(fā)送數(shù)據(jù)時,即將數(shù)據(jù)并行寫入發(fā)送緩沖器SBUF中,同時啟動數(shù)據(jù)由
TXD(P3.1)引腳串行發(fā)送,當(dāng)一幀數(shù)據(jù)發(fā)送完畢即發(fā)送緩沖器空時,由硬件自動將發(fā)送中斷標(biāo)志位TI置位(TI開關(guān)閉合),向CPU發(fā)出中斷請求。CPU響應(yīng)中斷后,用軟件將TI位清除,同時又將下幀數(shù)據(jù)寫入SBUF中,重復(fù)上述過程直到所有數(shù)據(jù)發(fā)送完畢。
以上敘述說明了如下問題:
1:存儲發(fā)送數(shù)據(jù)的是緩沖寄存器SBUF.
2:當(dāng)SBUF中存滿8位數(shù)據(jù)時,自動觸發(fā)發(fā)送過程,將這8位數(shù)據(jù)一位一位串行發(fā)送出去。發(fā)送的速率(波特率)可以由定時器T1或者T2確定。
3:當(dāng)8位數(shù)據(jù)都發(fā)送完成以后,這個時候會自動硬件將TI置1。
4:為了進(jìn)行下一次發(fā)送,需要軟件清0.因為TI等于0是8位數(shù)據(jù)逐位串行發(fā)送進(jìn)行等待的條件
發(fā)送過程的程序主要就是下面幾條:
MOV SBUF, A ;數(shù)據(jù)寫入SBUF并啟動發(fā)送,發(fā)送方式是一位一位串行發(fā)送,發(fā)送速率由
定時器控制
WAIT: JNB TI, WAIT ;測試TI位,如果為0,則等待SBUF中8位數(shù)據(jù)發(fā)送完成。TI位為1
是跳出本條等待指令的條件
CLR TI ;如果TI為1,則表示SBUF中8位數(shù)據(jù)發(fā)送完畢,TI被硬件置1,從而跳出上一條等 待語句。為了進(jìn)行下一次發(fā)送,又要軟件清除TI標(biāo)志(置0)。
以上3條指令重復(fù)執(zhí)行就可以了。
所以,串口通信發(fā)送時主要解決的問題就是:
1:當(dāng)發(fā)送緩沖器里面SBUF有8位數(shù)據(jù)時,自動啟動串行發(fā)送過程,發(fā)送速率由定時器控制。
2:當(dāng)8位數(shù)據(jù)發(fā)送完畢時,觸發(fā)發(fā)送中斷,準(zhǔn)備下一次發(fā)送。
從以上敘述可以看出,TI置1觸發(fā)的串口發(fā)送中斷好像并沒有做出什么實質(zhì)性的操作,只是將發(fā)送過程從等待中跳出來。