跳轉到內容

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 的除錯功能。傳送方和接收方可以使用不同的埠。

設定值

[編輯 | 編輯原始碼]

SERIN 和 SEROUT

[編輯 | 編輯原始碼]

要傳送序列輸出,我們使用 SEROUT 命令。如果我們想讀取序列資料,我們使用 SERIN 命令。由於序列可以將位逐個傳送,因此除了傳送單個數據位元組外,我們還可以一次傳送長的資料陣列。如果需要,我們可以傳送整個字串或陣列。

華夏公益教科書