A. 匯編語言實現兩台單片機並行通信
通信 是 並行的,不需要協議啥的,簡單收發就行。
這就太簡單了。
如果是單工的,用一個 8 位的並行口,互連即可。
比如甲機 P2 連接到乙機的 P1。
甲機的 P1 接上八個撥動開關,乙機的 P2 接上八個 LED。
兩台單片機,都是 P1 輸入、P2 輸出。程序是相同的,如下:
ORG 0000H
MOV P2, P1
SJMP 0000H
END
這就實現了《並行的、簡單收發》。
B. 單片機通信有三種,其中應用在對講機是採用
首先弄懂串列通信和並行通信以及串口通信和並口通信的概念。
串列通行:它是一個概念,它是指數據一位一位地順序傳送,其特點就是通信線路
簡單,只要一對傳輸線就可實現雙向通信,適用於遠距離通信,但傳輸速度慢。它
包括普通的串口通信,I2C,SPI,UART...
串口通信:是一種實際通信方式,但是我們可以幾乎看成一樣.
串列介面:簡稱串口,或串列通信介面,或串列通訊介面(通常指com口)。
並行通信:如果一組數據的各數據位在多條線上同時被傳輸,那麼就是並行通信。
並口介面:就是一種介面,各數據位同時被傳輸,傳輸速度快,效率高,一邊可用於MCU。
串列通信又可分為單工,半雙工和全雙工
單工:信息只能單向傳送。
半雙工:信息能雙向傳送但不能同時。
全雙工:信息能同時雙向傳送。
串列通信還可分為同步通信和非同步通信
同步通信(兩根線):是把許多字元組成一個信息組,這樣,字元可以一個接一個地傳輸,但是,
在每組信息(通常稱為信息幀)的開始要加上同步字元,在沒有信息要傳輸時,要填上空字元,
因為同步傳輸不允許有間隙。同步方式下,發送方除了發送數據,還要傳輸同步時鍾信號,
信息傳輸的雙方用同一個時鍾信號確定傳輸過程中每1位的位置
非同步通信(一根信號線,沒有時鍾線):是一種很常用的通信方式。非同步通信在發送字元時,所發送的字元之間的時間
間隔可以是任意的。當然,接收端必須時刻做好接收的准備。發送端可以在任意時刻開始發送字元,
因此必須在每一個字元的開始和結束的地方加上標志,即加上開始位和停止位,以便使接收端能夠
正確地將每一個字元接收下來。非同步通信的好處是通信設備簡單、便宜,但傳輸效率較低(因為開始位和停止位的開銷所佔比例較大)。
同步通信與非同步通信區別:
1.同步通信要求接收端時鍾頻率和發送端時鍾頻率一致,發送端發送連續的比特流;非同步通信時
不要求接收端時鍾和發送端時鍾同步,發送端發送 完一個位元組後,可經過任意長的時間間隔再發送下一個位元組。
2.同步通信效率高;非同步通信效率較低。
3.同步通信較復雜,雙方時鍾的允許誤差較小;非同步通信簡單,雙方時鍾可允許一定誤差。
4.同步通信可用於點對多點;非同步通信只適用於點對點。
單片機中的SPI、UART、I2C
1、SPI
SPI允許單片機和外圍設備或者單片機之間高速同步數據傳輸,SPI可以有主機和從機模式之選,通信的主從機之間通過移位寄存器同時交換數據。目前自己用的以主機模式居多。SPI需要四線:SS,MISO,MOSI,SCK。
通信過程:在設置好SPI的工作模式:包括SCK頻率(數據傳輸速率),工作速度,主從模式,以及數據接收發送對應的時鍾極性。在主模式下,將SS拉低表示通信的開始,然後通過向SPI數據寄存器中寫入一位元組的數據後自動啟動時鍾SCK開始進行一次通信,通信完成後會產生相應的中斷標志,標志一個位元組數據的傳送完成。通信完成後將SS腳拉高,表示通信過程已經結束。
注意SS引腳的設置:當設置為從機模式時,SS引腳應設置為輸入,拉低的時候SPI才能起作用,拉高的話是消極的SPI模式;在主機模式下,SS引腳可以設置,一般應設置為輸出,如果設置為輸入的話應保持為高,否則將不能進行正常的主機模式操作。
2、USART
USART的操作比較簡單,主要是設置波特率,數據格式,以及中斷允許位等,值得至於的是其USART IN SPI MODE,在SPI模式下的USART的操作跟SPI操作差不多,主要是Clock的設置,然後發送數據還是通過USART的中斷進行
3、I2C
I2C介面是簡單強大的通信介面,只需要兩根雙向匯流排(時鍾和數據線),SCL和SDA,即可實現一個主機和最多128個從機進行通信。模擬I2C介面的過程:啟動I2C,一般是在SCL為高時將SDA拉低啟動數據發送,SDA只有在SCL為低時才能拉高拉低有效,在SCL為高時拉高拉低SDA只是用於停止啟動I2C通信
I2C匯流排是 內部匯流排 ,用來連接內部系統內的晶元。
串口通信是用來和系統外部的設別通信的。比如設備和設備之間通信。
SPI,UAR,I2C都是串列通信方式,並行通信方式一般用的少,因為只適合
短距離,一般用於MCU比較多,因為MCU它對數據的傳輸速度有要求,而且
與塔相連的晶元一般會比較近。
MCU 他的屬性要比CPU(這里指單片機,其他地方應該也是) 強,它包括CPU的性能,
且還有CPU沒有的性能。
C. 怎樣實現兩片單片機之間的並行通信
1.直接使用一個8位口就可以實現。
2.使用8位口以及一個中斷和使能端,每個單片機使用10個埠
3.使用8位口以及一個時鍾輸出和使能端,每個單片機使用10個埠
你也可以參照一些ad/da的使用。
D. 單片機的幾種傳輸方式的總結
學習了51單片機以及STM32後總結下單片機與外設或者上位機通訊的幾種傳輸方式
串口、COM口是指的物理介面形式(硬體)。而TTL、RS-232、RS-485是指的電平標准(電信號)
串列通信:指數據一位一位順序傳送
串列介面:簡稱串口(COM口)
並行通信:一組數據的各數據位在多線上同時被傳輸
並行介面:一種介面,各數據位同時被傳輸,傳輸速度快,效率高,一般用於MCU
串列通信分為:
單工:數據單項傳送
半雙工:數據能雙向傳送但不能同時
全雙工:數據能同時雙向傳送
通用的、及支持同步也支持非同步的接收、發送「模塊」,在晶元內部,與SPI、I2C一起構成單片機的匯流排「枝幹」,對於串口,串口通信指串口按位(bit)發送和接收位元組,盡管比按位元組(byte)的並行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。
串列通信技術標准EIA-232/485也就是以前所稱的RS-232/485。
232是PC機與通信工業中應用最廣泛的一種串列介面,RS232單端通信,傳輸距離可達15米,最高速率20Kbps。
RS485傳輸速率為10Mbps,最大傳輸距離1219米,,採用二線制時可實現真正的多點雙向通信,而采
用四線連接時只能實現點對多點通信,無論四線還是二線連接方式匯流排上可接多達 32 個設備。
串列通信傳輸速率用於說明傳輸的快慢。在串列通信中,數據是按位進
行傳送的,因此傳輸速率用每秒鍾傳送格式位的數目來表示,稱之波特率
(band rate)。每秒傳送一個格式位就是 1 波特。常用的波特率有:4800、
9600、19200、115200 波特。
串口三個腳:TX、RX、GND
IIC匯流排是一種兩線式串列匯流排,支持多主控,其中任何能夠進行發送和接收的設備都可以成為主匯流排,一個主控能夠控制信號的傳輸和時鍾頻率,當然在任何時間點上只能有一個主控。IIC匯流排是由數據線SDA和時鍾SCl構成的串列匯流排,可發送和接收數據,在CPU與被控IC之間,IC與IC之間進行雙向傳送,最高傳送速率100Kbps,各種被控制電路均並聯在這條匯流排上,每個設備模塊都有唯一的地址,IIC匯流排上的每一個設備模塊既是主控器或被控器,又是發送器或接收器,這取決於你要實現的功能是怎樣的。
CPU發出的控制信號分為地址碼和控制量兩部分
IIC匯流排傳輸過程中有三種信號:起始信號,終止信號,應答信號。
起始信號:SCL 為高電平時,SDA 由高電平向低電平跳變,開始傳送數據;
終止信號:SCL 為低電平時,SDA 由低電平向高電平跳變,結束傳送數據;
應答信號:接收數據的 IC 在接收到 8bit 數據後,向發送數據的 IC 發出
特定的低電平脈沖,表示已收到數據。CPU 向受控單元發出一個信號後,
等待受控單元發出一個應答信號,CPU 接收到應答信號後,根據實際情
況作出是否繼續傳遞信號的判斷。若未收到應答信號,由判斷為受控單
元出現故障。
SPI允許單片機和外圍設備或者單片機之間高速同步數據傳輸,SPI可以有主機和從機模式之選,通信的主從機之間通過移位寄存器同時交換數據。目前自己用的以主機模式居多。SPI需要四線:SS,MISO,MOSI,SCK。
通信過程:在設置好SPI的工作模式:包括SCK頻率(數據傳輸速率),工作速度,主從模式,以及數據接收發送對應的時鍾極性。在主模式下,將SS拉低表示通信的開始,然後通過向SPI數據寄存器中寫入一位元組的數據後自動啟動時鍾SCK開始進行一次通信,通信完成後會產生相應的中斷標志,標志一個位元組數據的傳送完成。通信完成後將SS腳拉高,表示通信過程已經結束。
注意SS引腳的設置:當設置為從機模式時,SS引腳應設置為輸入,拉低的時候SPI才能起作用,拉高的話是消極的SPI模式;在主機模式下,SS引腳可以設置,一般應設置為輸出,如果設置為輸入的話應保持為高,否則將不能進行正常的主機模式操作。
單片機通訊方式
E. 單片機之間如何實現通信
兩個單片機之間串口通信,如果是用proteus模擬,最簡單了,兩個單片機的rxd,txd交叉連接就行了。要是實物最好用rs232連接通信,距離可以達到幾十米。再遠點距離,用rs485連接通信。總之,方法很多的,也很靈活的。
F. 單片機串列通訊與並行通訊區別
串列通訊是將一組數據按照位元組,一位一位的進行傳輸,並行通訊是按照通訊口的寬度(8b/16b)一次性傳輸8/16位進行傳輸。
通過上面描述應該能發現,串列通訊與並行通訊相比速度慢一些,但是節省埠。
G. 怎樣實現兩片單片機之間的並行通信
實際應用是不會這么做的,主要是浪費資源,包括硬體軟體的。一般都用串口通訊。
要實現並行通信也是可以的,可以給你一些方法,
硬體連接
px
並口(8個
io口)+
intx
外部中斷+
發送請求(2個io口),
發送端:
把要發送
的數據
寫入
並口,同時寫入
發送請求(如低電平有效
加一些延時後置高電平)
接收端:
產生
接收
外部中斷,把px
接收並口
寫入0xff
,
並讀取
數據,也可以發送
返回數據
與發送端相同。
H. 單片機不同串口同時工作有什麼好處
傳輸線少,長距離傳送時成本低,每個串口獨立工作,不定時和我的板子通信,可以提高單片機的工作效率。
單片機的數據通信有兩種方式:並行通信和串列通信.並行通信指數據位元組的各位同時發送或接收;而串列通信是數據字長距離傳輸數據節一位一位按順序發送或接收.並行通信傳輸線多,適用於短距離,快速度的通信;而串列通信僅需單線傳輸信息,適用於長距離傳輸數據,由於每次傳送一位,所以傳輸速度比較慢.串列通信又分非同步和同步兩種方式,其中非同步串列通信是最常用的方式。非同步通信傳輸的數據格式一般由1個起始位、7 個或8 個數據位、1 到2 個停止位和一個校驗位組成。它用一個起始位表示字元的開始,用停止位表示字元的結束。
在非同步通訊中,通信雙方採用獨立的時鍾,起始位觸發雙方同步時鍾。在非同步通信中CPU 與外設之間必須有幾項約定,即每一幀位數,字元格式和波特率。字元格式的規定是雙方能夠在對同一種0 和1 的數據串理解成同一種意義。原則上字元格式可以由通訊的雙方自由制定,但從通用、方便的角度出發,一般還是使用一些標准為好,如採用ASCII 標准。