跳转到内容

PBASIC 编程/输入和输出

来自维基教科书,开放的书籍,面向开放的世界

一个不与外部世界通信的计算机程序确实非常无聊。程序,包括 BasicStamp 上的程序,需要进行输入和生成输出

输入和输出

[编辑 | 编辑源代码]

BasicStamp 有 16 个基本的 I/O 引脚,所有引脚都可以用作输入或输出。为了指定引脚为输入,我们使用 INPUT 命令

INPUT 12

这将引脚 12 设为输入引脚。为了指定引脚用作输出,可以使用 OUTPUT 命令

OUTPUT 15

这将引脚 15 设为输出。

DIRS 寄存器

[编辑 | 编辑源代码]

INPUT 和 OUTPUT 命令会影响一个称为 DIRS 的特殊内存值。DIRS,即“方向”的缩写,是一个称为“三态缓冲器”的特殊内存位置。DIRS 包含 16 位,每一位对应一个 I/O 端口。如果 DIRS 中的引脚为 0,则相应的引脚为输入。如果 DIRS 中的引脚为 1,则相应的引脚为输出。

例如,如果我们要将最高字节设为输入,将最低字节设为输出,我们可以编写

DIRS = %1111111100000000

这比编写 16 个 INPUT 和 OUTPUT 命令更容易!

I/O 端口

[编辑 | 编辑源代码]

1 位端口

[编辑 | 编辑源代码]

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 的损坏风险。

华夏公益教科书