【哈爾濱工業大學】《單片機原理》(建議收藏) P17 - 17. 7.3-AT89S51單片機的串行口(3)

长安书院_
146 位粉絲
2026年7月7日
AI 生成·可能包含錯誤
好
我們接着上一次課的內容
接着講
我們這一節呢
介紹串口的應用
大家知道5.1單片機裏面集成的UART
就異步的串口呢
在實際當中特別有用啊
那麼利用這個異步串口呢
可以實現點對點
就兩個單片機之間點對點的通訊
也可以實現的多級通訊
也可以實現單片機和PC機之間的串煙通訊
大家知道串煙通訊的接口呢
非常簡單
就兩根線
所以呢
採用串口的話
這個連線非常少啊
可以方便的進行數據通訊
大家首先要看一下
如果就兩個單片機的串口直接相連
那麼大家知道單片機的串口的輸出電瓶
輸入輸出電瓶是TTL電瓶
那麼TTL電瓶的它抗干擾性比較差
再一個傳輸距離比較短
所以兩個單片機直接相連進行串煙通訊呢
大概也就是1.5米左右啊
1.5米左右
好
那麼我們這一節裏面
要介紹爲了增大串煙通訊距離
而採用的一些標準串煙接口
並且給出實際電路
所以同學呢
學完這部分內容以後呢
以後就可以能夠利用232 422 485來進行串煙通訊啊
如果直接串煙通訊
我剛纔已經講了
就1.5米左右啊
但是呢
有時候通訊距離要求比較遠
通訊距離要求比較遠
那麼還要求呢
它的抗干擾性要好
那麼這時候呢
就必須得采用這些標準的串煙接口啊
好
根據通訊距離和抗干擾性要求
可以選擇TTL電瓶傳輸
就兩個單片機直接連
也可以採用22
也可以採用42
也可以採用485串口來進行數據傳輸啊
TTL這個電瓶通訊接口呢
實際上就兩個單片機串口直接連就可以了啊
那麼甲基的TXD連到乙基的RXD
乙基的RXD呢
與甲基的TXD相連啊
相連好
下面我們看一看
如果要增加到十幾米傳輸距離的話
這時候採用TTL電瓶就不行了
就採用RS232這個串煙通訊接口啊
那麼這時候呢
這個電路圖大家看一眼啊
這是甲基啊
這是乙基
大家知道啊
他們之間這個出來的電瓶呢
輸出輸入電瓶都是TTL的
但是直接傳發距離太短
抗干擾性也不行
那怎麼辦呢
我可以採用RS232標準接口
那麼採用RS232標準接口的話呢
那麼串行傳輸線上傳的是
就是那信號電瓶啊
是RS232
那麼出來的是TTL電瓶
那怎麼辦呢
必須經過一個RS232轉換芯片
就是把TTL轉到RS232電瓶
這樣的芯片最常見
最典型的芯片設計方案就是採用Maximum RS232A
大家注意啊
甲基和乙基之間
這個經過RS232出來的電瓶
那麼要經過Maximum RS232這個芯片的轉換
那麼大家注意這個芯片呢
我們甲基串口連一個
乙基串口連一個
他倆之間的距離呢
一般說來十幾米
最遠的距離十幾米
大家還要注意一個問題啊
這個距離通訊距離和你傳輸的波特率有關
傳輸的串流數據速率有關
那麼經過這個電瓶轉換以後
這出來的大家注意這個地方啊
是RS22電瓶
這個芯片呢
我們到電子市場可以買到啊
很便宜
那麼要進行22數據傳輸
那麼使用Maximum 22這個芯片就可以
這是一個現成的電路啊
也是現成的22通訊
串流通訊方案
好
如果距離再遠的話
這個RS22呢
也有問題了
你比如說我距離幾百米
甚至達到一千米
這時候用22根本就不行
那怎麼辦呢
我們可以採用42
那麼22存在什麼缺點呢
要採用42
原因就是他的傳輸速率比較低
通訊距離比較短
另外接口信號呢
那個地方容易產生串擾
什麼叫串擾呢
什麼叫串擾
我這根信號線可能對另一根信號線呢
要產生干擾啊
那麼後來呢
又推出RS42標準
那麼
42標準和22C這個兩個串流接口標準的主要區別在哪呢
對於42標準接口來說
收發雙方就不再供遞了
那麼大家看一下剛纔那22
22這個地方要供遞的啊
要供遞
那麼採用42以後呢
就不用供遞
另外大家注意啊
42他採用的是平衡驅動和差分接收
正由於他是平衡驅動
差分接收
那麼他才能夠傳輸的距離比較遠
原因是什麼呢
由於採用差分接收
我們在前面的模擬電路里面都學過差分接收
那麼我們現場當中的好多幹擾信號都是以共模的形式加到信號線上
那麼你要採用差分接收的話
就能夠很好地把信號當中混入的干擾和噪聲呢
給他消除掉啊
因爲這干擾和噪聲都是共模形式
所以他採用的是差分接收兩根線
就說我甲基向乙基傳輸的話
是兩根平衡的導線兩根線
反過來乙基向甲基進行串線傳輸的時候也是兩根平衡線
那麼他是屬於採用差分接收的方式
所以採用差分接收的方式的話呢
實際上是共模形式
那麼幹擾信號加到這兩根線上呢
很容易被抵消啊
很容易被抵消
所以呢
這樣的話就可以使串行傳輸當中的干擾和噪聲呢
相互抵消
大家一定要注意
以後你進行串行接口設計的時候
最大的問題是什麼呢
抗干擾問題抗干擾問題
這個是確實得需要經驗啊
那麼我們這個42信號42標準接口就解決了RS22的缺點啊
那麼
抗噪聲干擾呢
這個能力比較強
42最大的傳輸速率是多少呢
是10兆
就是他的波測率10兆
那麼這時候大家一定要注意啊
電纜長度是12米
我一再強調一個問題
傳輸速率和你傳輸的電纜長度是成反比
你要這個速率比較高的話
這個距離比較短
傳輸的距離比較短
如果你採用比較低的傳輸速率
這時候最大傳輸距離可以達到1200多米
那麼在工業現場呢
有時候經常是那樣
傳輸距離比較遠
那麼這時候抗干擾問題呢
就是一個最大的問題啊
最大問題
所以爲了增加這個通訊距離呢
還可以考慮加入光電隔離器啊
那麼下面大家看一個電路
這個電路呢
實際上就是測控水呢
給當初給哈爾濱菸廠做的一個溫度溼度檢測
這個串行數據傳輸
大家知道一個菸草生產當中呢
要求生產菸草
這個菸草呢
它的環境溫度和溼度要求都比較嚴
那需要對各個點,這個車間比較大
對好多點進行溫溼度檢測
檢測完了
那前面檢測端呢
都是單片機
最後都通過窗口呢
發送到PC機上
所以大家看這個電路是一個實際電路
是一個實際電路
這裏面大家注意
這是光電隔離器
大家先看啊
甲級網乙級進行傳輸的話呢
大家注意
這是一個飛門
這是一個光電隔離器
大家看一看SN75174
這個是TTL電瓶到R42電瓶的轉換的
這麼一個轉換器就是SN75174
這邊呢
是SN75175
這個是R42電瓶到TTL電瓶轉換
因爲單片機接收的只能是TTL
也就是他發他收的話呢
要進行電瓶轉換
那麼中間這兩根線
剛纔已經是平衡插分線
具有很好的抗干擾特性
當然你要傳輸速率高的話呢
這個線就不能太長
你要要求傳1200多米的時候
他傳輸速率就不會那麼高
波特率就不會那麼高
所以呢
大家注意到這邊也採用光電隔離
這種措施對於現場當中
尤其工業現場干擾比較嚴重的時候
這個措施非常好用
所以這是一個光電隔離
另外採用了42接口
大家注意是往陰方向傳是兩根線平衡插分線
那麼這邊就收了
反過來
以及他發送的時候呢
也要經過SN75174
那麼這個是TTL電瓶轉換成42電瓶的這麼一個轉換芯片
然後呢
這時候這個線路點點點
這個地方表示距離根據你波特率
這個距離呢
有可能幾百米
有可能最遠是一千多米
1200米
然後這邊SN75175
然後呢
進到這邊有個光電隔離
光電隔離
然後進到單片機的串行接收數據端
把數據接收
那麼大家注意啊
這個數據傳輸一去一回就是一發一收
這是四根線
這是四根線呢
實際上距離比較遠的話
這個成本還是比較高的啊
比較高的
所以這個呢
是42A雙極通訊接口電路
我們給大家這個電路呢
是一個實際電路
當然實現42接口的方案不止這一個
但是這個方案呢
是經過現場驗證的
同學將來如果進行42通訊的話呢
你可以採用這個方案
當然你也可以採用別的方案
另外現在在軍用測試設備
就是軍用的一些測試設備當中呢
他的42接口用的比較多
42、485
所以呢
這個是有實際意義的啊
實際意義的
那麼當初這裏面電路里面有三個電阻
它的作用呢
我們在書裏面已經介紹了
大家要掌握的是什麼
我們可以採用42標準接口
42標準接口
大家注意每一個方向
這個數據傳輸
它都是兩根的插孔鍵
另外呢
還可以採用光電隔離
單片機應用系統一個比較大的
大家應用當中感覺一個比較大的應用難題
什麼呢
抗干擾問題
你要能把抗干擾問題解決了
那麼在工業的測試系統裏面
你就會把單片機用的得心應手啊
得心應手
好
這是42標準啊
這個距離最遠是一千二百多米
那麼這時候它的傳輸速率呢
就要受到限制
你看最遠到一千二百一十九米的時候
就是傳輸速率比較低
如果比較高的傳輸速率
你比如說十兆
波特率十兆
這時候電纜這個42電纜長度最長允許12米
這個大家一定要注意
好
那麼這兩個芯片
大家也要注意
一個是42電瓶到TTL電瓶的轉換芯片
一個是TTL電瓶到42的電瓶轉換芯片
單片機
串行口輸出輸入都是TTL電瓶
但是在串行傳輸的這個線路都採用的
由於採用42標準
所以呢
採用的是42電瓶啊
另外大家還要注意
這個抗干擾設計
對於這個串行數據傳輸是非常重要的
注意其中當中的一個細節
就是收發雙方各用自己的一組獨立電源
這個在抗干擾設計當中呢
是非常非常重要啊
好
這是42
那麼剛纔已經講了
42一個是串行輸出
一個串行輸入
這就需要四芯的傳輸線
對於長距離來說
這個成本還是比較高的
那麼現在只要不是要求全雙公的串行工具
一般都採用485這個串行通訊接口啊
來實現了一對N的通訊
大家注意42標準是點對點
一對一
但485呢
是一對N一對N
422接口呢
它是全雙公的收發
雙方可以同時進行數據傳輸
485呢
是半雙公的什麼意思呢
那麼進行數據傳輸呢
不能同時啊
只能往一個方向
這個叫半雙公
那麼他就採用一對平衡查分線啊
一會兒我們看電路
那麼485這個接口對多站互聯是非常方便的
這樣非常容易實現多機通訊
在工業現場控制當中經常出現什麼情況呢
一個PC機作爲主機
前面很多溫度溼度產量點那個地方
傳感器加單片機
那麼要實現一對N的串行通訊
這樣的話
用485這個標準串行接口是十分有效的
那麼485這個標準串行接口
最多允許並聯32臺驅動器和32臺接收器啊
下面大家看一下那個具體電路
同樣他和42一樣
他的最大傳輸距離1219米
大家一定要注意這個指標很重要
將來你要設計一個測控系統的時候
距離比較遠
這個只能用串行通訊
這道理很簡單嘛
用線少
但是能傳多遠呢
我們42
485他的最大傳輸距離都是1200多米
那麼他的最大傳輸速率呢
和42一樣可以達到十兆
但是大家注意42
如果串行傳輸是十兆的話
波特率
那麼他只能傳十幾米
那麼在工業現場當中呢
這個方案是非常非常重要的啊
下面我們看一下485
485這個地方
這個是雙極之間的RS485雙極通訊電路
那麼大家注意啊
這是甲單片機
這是乙單片機
那麼這是那兩根串行接口輸入輸出線
這有個PE1.0引腳來控制什麼呢
控制的收發器
大家注意這個是收
這個是發
由PE1.0引腳呢
來控制這個是收還是發
這邊也是對稱的
那麼中間連呢
就是一個雙芯電纜
雙芯電纜的話呢
這個距離剛纔已經說了
最遠1200多米
這個指標其實大家一定要記住
你將來設計的話
拿方案的話
你比如說要求你傳輸500米
你這時候顯然用22
標準接口根本就不行
要採用485 42
但是你要1對N的話
只能採用485
而42呢
只能是1對1
點對點
那麼同學就會說了
我現在還有一個單片機
假設這是主單片機
這是從單片機
我還有一個單片機
怎麼辦呢
我主機要和它通訊
你就把那個單片機
那兩個線也往身上並聯就可以了
這樣就可以實現了
一個主機和多個單片機進行串流通訊
但是是半雙功能
那麼最多可以連多少單片機呢
多少個單片機
1對N
這N是多少呢
最多是32
所以你將來設計系統的話
你前面點有100個點
那你管用這485接口就有問題了
所以這個道理
大家一定要清楚啊
SN75176啊
這個就是TTL電瓶到485電瓶的一個轉換芯片
轉換芯片
好
那麼大家注意
這個時候那個電就是這個串煙線呢
就連接雙方串煙通訊呢
要採用平衡的雙腳線
那平衡雙腳線的長度和傳輸速率肯定要成團比
大家一定要知道這個事實
當傳送的波特率很高的時候
傳輸距離是短的
如果波特率不是太高的話
距離可以很遠
但是最多是1200多
1200
那麼如果在100K以下
這時候你可以使用規定的最長電纜
最長電纜多少
1219米
那麼你要想獲得最大的傳輸速率
那你這個傳輸距離就很短
對於100米的長的雙腳線
最大的傳輸速率
串煙的波特率啊
就是一兆
一兆
像這些呢
大家都要知道啊
那麼剛纔講這幾部分呢
都是測控所呢
在菸廠的一個項目當中呢
實際上在處理這個串煙數據傳輸的時候
是很遇到很多問題
當然這些都是調試通過了以後呢
就是把這些線路和一些經驗體會呢
告訴大家啊
好
那麼大家注意剛纔有個P1.0引腳
是用來控制發送門和接收門是否打開
控制信號
誰是發送門接收門呢
就是那75176啊
就是大家看一下的
就SN75176啊
就這個
那麼這P1.0引腳呢
如果給他加控制信號
這個數據就可以進來
如果給他加信號的話
數據就把這通過這三臺門出去了
那麼這個你用軟件來控制P1.0
這個引腳的電頻高和低啊
好
這是485重慶
那剛纔我已經說了
他一對n
那麼其他的n-1個怎麼辦呢
他的那兩根線都掛到這兩根線上
大家都是並聯的就可以了
有一個主機
其他都是重機啊
好
那麼我們介紹完
422
232
422
485
一定要注意什麼呢
首先是通訊距離
其次
如果通訊距離比較短的話
那麼他的最高數據傳輸率是多少
你在平常設計的時候
這些問題要統一考慮
一定要統一考慮啊
好
那麼大家注意
剛纔那是SN75176啊
現在像我們還可以找到這個芯片
MAXIM485
剛纔是MAXIM23
那麼在MAXIM485呢
MAXIM公司是一個生產
各種各樣
這些單品
就是這些器件芯片的公司
他的芯片品種比較全
尤其是這些標準串線接口
他都有對應的相應芯片配套啊
這個大家要注意
我們以後進行串型通信接口設計
需要考慮哪些問題呢
我們不僅僅是
學完串口的工作原理
大家看到真正用在工業現場
進行串型數據傳輸的時候
還要有很多問題
所以進行串型接口設計的時候
要考慮下面這些問題
第一個
首先根據這系統設計要求
確定串型通訊雙方的數據傳輸速率
大家知道啊
有時候的數據傳輸速率量是很大的
你比如說我在前沿踩那些溫度溼度
要數據要求更新快的話呢
那麼這個數據傳輸速率肯定是要高的
另外呢
數據傳輸速率定了以後
你要決定你採用哪種串型接口標準
這個大家一定要清楚
這個是比較重要的一個問題
一個方案拿來讓你用單片機進行雙擊通訊
但是距離比較遠
你能不能就採用我們通常的TTL電瓶進行串型通訊
能不能採用RS232
這都不行
一定要正確的選擇
我選42
還有一種串型接口
我們沒有介紹
423
它類似於42
還有485
你要選哪種
一定要整明白啊
第二個問題要確定採用的串型通訊接口標準
好
另外呢
接口確定以後
你要確定波特率
串型通訊的波特率
這裏大家一定要注意
由於進行串型通訊
我們上一次課已經講了
爲了保證用定時器產生的波特率沒有誤差
我們的競爭最好一定選用11.0592這個競爭
大家一定要注意
我們的競爭呢
有人不考慮串型通訊
直接選個12兆6兆
你要採用串口進行串型通訊的話
一定要採用這個競爭
11.0592正當品
另外呢
根據任務需要呢
確定收發雙方使用的通訊協議
什麼叫通訊協議
就是咱倆進行串型傳輸的時候的一些規定啊
好
另外大家不可忽視的一個重要因素
這個串型通訊線呢
一般採用雙腳線
腳在一起的那樣
雙腳線啊
另外呢
可以根據傳輸句句來選擇
這個傳輸線裏面的就是這個芯的它的直徑
這裏最
令人頭疼的問題
我們工業現場一般有什麼電焊機
電動機
有很多強電干擾設備
如果這種空間干擾比較多
你要選擇什麼呢
這個雙腳線的外邊有個屏蔽層
有一層金屬屏蔽層
一定要注意這個問題啊
這些問題呢
都是工程實際當中的問題
我們在應用接口串型接口進行串型通訊的時候要注意的啊
好
下面我們就來看一下雙擊通訊
雙擊串型通訊這個軟件面積
串型口有四種工作方式
方式零
方式一
方式二
方式三
其中方式零不是用來進行串型通訊的
而是外接同步移位計算器的
那麼方式一方式三是用來進行串型通訊的
這個概念一定要清楚啊
下面我們介紹最常見的是
這個軟件編程
這個軟件編程呢
希望大家一定要認真掌握啊
這裏有一個問題
我要強調一下啊
大家一定要注意
我前面介紹了23242423485這些串型接口標準
但是我們編軟件的話呢
其實與這個你採用的接口標準沒有關係
沒有關係
與這硬件沒有關係
連接這些硬件的目的是爲了什麼
是爲了保證雙擊串型通訊要達到一定距離
要有一定的傳輸速率
要有抗干擾特性
我們編軟件實際上不管你採用哪種接口
這道理都是一樣
這一條一定要注意啊
一定要注意
你不能這麼說
我雙擊進行TTL電評通訊了
那我這軟件是一樣
我在用RS485進行雙擊通訊的話
那軟件能和那個一樣嗎
那麼這裏我們就告訴大家
它與硬件沒有關係
好
下面我們就看第一個例子
最常見的是串口方式一
這個通訊編程
那麼大家注意
我現在用雙擊兩個代表性機
採用方式一雙擊串型通訊
收發雙方均採用六兆精針
波特率爲2400
大家注意
你們發現這裏有一個什麼問題了嗎
如果雙擊進行串型通訊
其實這個精針應當最好選多少
選11.0592
你要選六兆的話
這就容易帶來波特率的誤差
一幀信息方式一的一幀信息爲十位
發坊是把這單面積片內RAM7877H單元的內容作爲首地址
以7675H單元內容簡易爲末地址的數據塊
通過串口發給
接收法
那麼發坊發送的數據塊的地址是多少
是從2000H到203FH
203FH
那麼我發的話呢
大家一定要注意
2000就是他的首地址要裝到7877H
末地址
實際上是2040H要裝到7675H單元
先發地址針
再發數據針
然後收坊在接收的時候
要使用一個標誌位來區分接收的是地址還是數據
然後是地址就把它存到地址的那些單元裏面
是數據要存放到數據的那些單元裏面
大家看啊
要把前提一定要整明白
我們這個串行通訊程序怎麼變
好
下面我們看這個例子
發坊呢
可以採用查詢方式或者中斷方式來發送數據
收坊呢
可以採用中斷或查詢方式接收
我已經講了
串口有兩個標誌位
一個RI一個TI
它既可以引起中斷
也可以你用戶採用查詢方式
查這位是不是
你比如說我發完數據了
TI指1
我接收完數據了
RI指1
我可以用未檢測指令檢測這標誌位是否爲1
這種叫查詢
也可以呢
採用中斷方式
中斷方式
我前幾次課都講到TIRI
它是怎麼中斷
它的作用是什麼
好
下面我們看一下甲基發送程序
大家呢
也課後一定要把這段程序認真讀一下
這個它實際上是先發地址
是採用的查詢方式
然後呢
又採用中斷方式把那數據塊發佈起來
2000H到203FH這個單元
這個數據塊存到
下面我們看一下程序
發放的程序
發送程序
ORG002H
然後這個放一個跳轉指令
這沒什麼講的
同學都明白
ORG0023H
大家注意
這個是串口中斷入口
0023H
不有五個中斷
也有五個中斷入口
那麼串口的中斷入口呢
是0023
那麼大家注意啊
COMNT這個表示就通訊中斷
這個就是串口的中斷服務製程序的標號
一旦串口發生中斷
那麼大家知道學過中斷系統的原理
跳向0023
然後這裏面放的是一條跳向串口中斷的服務製程序的這麼一個長跳轉指令
ORG1000H表示什麼呢
我們下面的主程序要從1000H開始存放
這個主程序在這呢
所以依附位的時候先跳向min
那麼下面我們就看主程序
它怎麼編的
MOV50H放到SP
把對戰指針初始化
大家一定很奇怪
前面我們講對對戰初始化
你不都是60H嗎
你這個地方怎麼又變成53呢
它主要是根據這道題啊
要用到78777675這四個單元
所以它這個對戰的站點呢
設在53H
當然你根據實際情況
你來選擇這個SP指針的站點
好
這裏我們採用的是53
MOV20H送到78
00H送到77
大家注意內部RAM裏面
7877裝的是這數據塊的首地址
首地址啊
那麼20H送到76
40H送到75
那麼這倆單元裝的是這數據塊的末地址
數據塊的末地址就是你要往外發的這些數據塊啊
它就位於什麼呢
2000H單元開始的
一直到2040H-1是203F
這些單元裏的數據要通過轉口往外發啊
好
然後大家注意
Account這就是調用這麼一個子程序
這個子程序標號在這兒
從這開始調用
這個子程序幹嘛的呢
實際上是一些初始化的發送子程序
我們再往下讀
TMOD裏面
20H送到TMOD裏
給定時器設它的工作方式
串行通訊
一定要佔用一個定時器作爲波特率發生器
一般都佔用T1作爲波特率發生器
所以20H
這是一個控制字寫到TMOD裏面
大家注意這個是高智慧有效嗎
管T1的
對吧
大家還想到這個TMOD的格式
那麼它是設置定時器T1爲方剎定時
大家知道方剎是時間長度自動裝入
因爲你要用定時器來控制波特率
那麼這個控制波特率呢
一定要儘量要特別準
那麼你要是採用方剎的話
它硬件你這一次溢出寄滿以後
它時間長度自動用硬件往裏裝
這樣誤差
很小很小
非常多
所以這個呢
採用方剎定時
高把位低把位
這是定時器T1的
把計數器初值往裏放
這初值呢
它倆肯定是一樣的
因爲時間長度自動裝入送的是F3
大家可以查一些表
一些表這個都是計算出來的
你也可以自己算
它倆裝的肯定是一樣
因爲時間長
那麼這個就是給設波特率
波特率是多少呢
就2400
那麼這個有一個改進的地方
就這個晶振
其實可以換成11.0592
但是呢
這個數就要變
這採用6兆
但是6兆的話帶來的問題是波特率要有點小誤差
這個好
下面再看這個
摩80H送到PCON
這個實際上就是S-model位置之一
大家知道
S-model位決定什麼呢
波特率啊
就是那個S-model位
倍增位
波特率倍增位送到這個PCON特殊功能集成器
這些都是初始化操作
SETB T21
這什麼意思呢
啓動定時器T1
T1幹嘛
做波特率發生器啊
好
再往下看
摩40H送到SCON
這個是串口控制集成器
往裏寫個40什麼意思啊
是把穿行口設置爲方式1
另外R1 N類等於0
他要發送
發放嗎
這不是嗎
然後大家注意
再往下看
IE集成器裏面寫個00
IE集成器是我們中段講過的一個特殊功能集成器
這樣的話就把所有的中段都關掉
爲什麼要關掉呢
他先採用查詢方式發送這個地址證
地址證啊
地址證就是地址數據
一共都有哪些呢
2000H這是倆字節
2040H這是倆字節
那麼你要發四個字節的地址證
所以他是採用
查詢方式
一會我們就會看到
而不採用中段
所以先把中段關掉
然後CLEARF0
F0是帶什麼用的呢
是數據發送完畢的標準
我不先發地址證
再發2000到203F那些單元裏的數據嗎
當這個數據都發完了
我把這個F0指移
這個大家一定要清楚啊
這是一個標誌位
這是用戶可以使用的
位於PSW集成器裏面的標誌位
然後大家注意看這個地方
某78H裏的內容送到SBOF
這個大家注意
這是串引口發送緩衝器
78裏的內容是多少
20
77是00
所以呢
就把20送到SBOF
大家一定要注意
這個時候串引口開始往外發這個數據
好
然後這個地方採用查詢方式往外發
而不是採用中段
剛纔已經把中段關了
JNB判TI
TI如果這一個字節發完了
TI是不是值1
沒發完
他還是爲0
那麼這條指令是判
他如果爲0的話
就在這兜圈了
循環
他就判TI如果爲0
就在這這條指令循環
對吧
那說明什麼
他正在發呢
如果TI變1了
意味着什麼
這一個字節
最後一位發完了
那就往下執行
那就把這個標誌位清零
這個就是查詢方式往外發
查詢方式往外發
查誰呢
查發送中段表
那麼這是一個最經典的應用
查詢方式
大家要掌握這幾條指令
實際上將來大家如果用灰邊語言編的話
好多都是把一個這個現成程序讀懂以後
然後呢
你修改就行了
好
這是78H裏面的內容
發的是20
下面再往下看
77裏面往外發
某77H送SBOF
大家注意又開始下一個字節
地址針吧
77裏面裝的是什麼
00H對吧
這個地方內部又啓動了
又開始往外發
然後同樣採用查詢方式
查TI是否爲1
不爲1就在這兜圈子
爲1的話往下執行
就把它清零
再發76H
同樣這三條指令呢
是發76H裏面內容
76H裏面內容是多少呢
20
好
76發完了
再發75
這三條指令
再發75H裏面裝的什麼呢
40H
這是要發的數據塊的那個地址針
地址
好
然後大家注意發到這兒
你要clear TI
這說明這四個字節
地址針全發完了
這是查詢方式往外發的
下面大家注意就要採用中斷方式
往外發數據
往中斷方式什麼呢
大家注意看
某IE裏面送上90H
大家注意90H是1001
最高那位1是EA位吧
就是總中斷允許對吧
然後呢
這就允許中斷了
然後下面我們就可能要用串引口的中斷方式發數據
因爲地址針我剛纔發了四次都發完了
用中斷方式發
然後大家注意看啊
某78送到DPTR的高把位
77裏面送到DPL
就是DPTR裏面低把位叫DPL
那麼他送禮的這個DPTR裏面是什麼東西呢
是2000對吧
然後大家注意看這條指令
某VX這有個X
把DPTR座位間接尋指
這裏面裝的是什麼呢
DPTR裝的是2000H
找到2000H的單元
那是數據塊的第一個數據
把它送到A裏面
大家注意從這塊開始發數據
然後某A裏的東西送到SPOF裏面
就啓動數據塊的傳送啊
數據塊傳送
好
這個地方就開始判了
F0是如果爲零在這兜圈的
如果爲一的話呢
說明整個的數據塊都發完了
很顯然
剛纔我們已經把F0籤零了
