PBASIC 编程/输入和输出
一个不与外部世界通信的计算机程序确实非常无聊。程序,包括 BasicStamp 上的程序,需要进行输入和生成输出。
BasicStamp 有 16 个基本的 I/O 引脚,所有引脚都可以用作输入或输出。为了指定引脚为输入,我们使用 INPUT 命令
INPUT 12
这将引脚 12 设为输入引脚。为了指定引脚用作输出,可以使用 OUTPUT 命令
OUTPUT 15
这将引脚 15 设为输出。
INPUT 和 OUTPUT 命令会影响一个称为 DIRS 的特殊内存值。DIRS,即“方向”的缩写,是一个称为“三态缓冲器”的特殊内存位置。DIRS 包含 16 位,每一位对应一个 I/O 端口。如果 DIRS 中的引脚为 0,则相应的引脚为输入。如果 DIRS 中的引脚为 1,则相应的引脚为输出。
例如,如果我们要将最高字节设为输入,将最低字节设为输出,我们可以编写
DIRS = %1111111100000000
这比编写 16 个 INPUT 和 OUTPUT 命令更容易!
I/O 端口有一个特殊的名称,使用前缀“In”或“Out”,后跟引脚号。例如,如果我们有一个名为 MyVariable 的变量,并且所有端口都正确地指定为 INPUT 或 OUTPUT,我们可以编写以下所有内容
MyVariable = IN3
MyVariable = IN5 + 10
OUT12 = MyVariable
OUT15 = MyVariable - 10
我们可以将多个 I/O 引脚组合成多位 I/O 端口。每个端口都有一个特定的名称
方向 | 字 | 字节 | 半字节 | 位 |
---|---|---|---|---|
输入 | INS | INL, INH | INA, INB, INC, IND | IN0 - IN15 |
输出 | OUTS | OUTL, OUTH | OUTA, OUTB, OUTC, OUTD | OUT0 - OUT15 |
"S" 后缀用于表示整个 16 位字。"L" 用于最低字节,“H” 用于最高字节。“A”、"B"、"C" 和 "D" 用于 4 个可能的半字节,“A” 是最低位(引脚 0-3),“D” 是最高位(引脚 12-15)。
当我们想要将数据从 BasicStamp 发送到另一个设备时,我们会将该数据写入输出端口。我们试图与之通信的外部设备将从输入端口读取该值,并在内部使用该值。从 BasicStamp 读取和写入的数据值是 5 伏值。电压过高会导致电路损坏,电压过低无法读取。一般来说,我们可以将我们的 1 和 0 值与电压相关联
二进制 | 电压 |
---|---|
1 | +5V |
0 | 0V |
我们将在本书的主线叙述中稍作偏离,讨论一下电力方面的一些问题。由于 BasicStamp 的嵌入式特性,大多数涉及 BasicStamp 的项目也会涉及某种硬件集成。将 BasicStamp 不正确地连接到外部硬件会导致芯片损坏,甚至可能对您造成伤害。
电学的基本定律,也是本书中我们需要考虑的唯一定律,是欧姆定律。欧姆定律可以写成
v 是电压,单位为伏特。i 是电流,单位为安培。R 是电阻,单位为欧姆。
我们知道 BasicStamp 的输出端口提供 5V 电压。如果电流过大,芯片可能会发热甚至损坏。我们应该尽量将电流控制在 5 毫安以下(最好更低)。这意味着,根据欧姆定律
这意味着对于我们与 BasicStamp 一起使用的每个电路,我们应该至少有 1000Ω 的电阻。任何小于该值的电阻都会增加对 BasicStamp 的损坏风险。