PBASIC 程式設計/序列通訊
外觀
如果我們想傳送 16 位的資料,就像我們在上一章中所做的那樣,我們需要定義 16 個輸出埠,然後將資料寫入這些引腳。以下是一個將每個埠輸出 1 的示例
DIRS = %1111111111111111 OUTS = 255
不幸的是,這個系統沒有給我們留下任何額外的引腳。我們沒有可用的引腳用於輸入或其他輸出。在這樣的情況下,我們想要使用序列通訊。
並行通訊,我們到目前為止一直在做的,使用許多平行排列的電線。每個資料位都在自己的電線上傳輸,因此要傳送x位,我們需要使用x條電線。在序列系統中,我們不是使用 16 根電線,而是隻使用一根電線,並將所有資料位按順序傳送到那根電線上。目標計算機,接收資料的計算機,會逐個讀取每個位,並將其儲存在一個變數中。
要使用序列 I/O,我們使用 SERIN 和 SEROUT 函式
序列 I/O 比並行資料明顯複雜一些。例如,我們需要知道資料傳送的速度,以便目標計算機能夠以相同的速度讀取資料。我們還需要知道一些其他資訊
- 奇偶校驗
- 奇偶校驗為我們傳輸的每個位元組新增一個額外的位。這個額外的位可以用來確定傳輸中是否存在錯誤。奇偶校驗可以設定為“奇數”、“偶數”或“無”。
- 波特率
- “波特率”是每秒傳輸的脈衝數。傳送方和接收方都需要使用相同的波特率。
- 資料位
- 資料位是指每“塊”資訊的位數。通常有 8 位資料,但在某些硬體上也可能為 7 位。
傳送方和接收方都需要對奇偶校驗、波特率和資料位具有相同的值。如果這些不匹配,通訊將無法正常工作。
- 埠
- 這是用於傳送或接收資料的埠號。可以是任何常規資料埠 0 - 15,也可以是專用序列埠 16。埠 16 是用於程式設計 BasicStamp 的埠。如果您使用埠 16,您將有一個漂亮的序列插頭可以使用,但您將無法使用 BasicStamp 的除錯功能。傳送方和接收方可以使用不同的埠。
要傳送序列輸出,我們使用 SEROUT 命令。如果我們想讀取序列資料,我們使用 SERIN 命令。由於序列可以將位逐個傳送,因此除了傳送單個數據位元組外,我們還可以一次傳送長的資料陣列。如果需要,我們可以傳送整個字串或陣列。