04 基本 IO 口操作
CC2530 端口资源:三个端口,表示为 P0、P1 和 P2。P0 和 P1 是完全的 8 位端口,而 P2 仅有 5 位可用
CC2530 的 IO 口的一些功能:
通用 IO 口、外设 IO 口(定时器、USART、ADC)
输入引脚、输出引脚
当输入时,上拉、下拉、高阻态(三态)
寄存器简略介绍:
PxSEL 置 0 为通用 I/O 口,置 1 为专用功能
PxDIR 置 0 为输入模式,置 1 为输出模式
PxINP 置 0 为上 / 下拉模式,置 1 位三态模式(高阻态)
1. 对应 P1INP 和 P0INP 来说,0~7 位均满足上述规则
2. 对于 P2INP 来说,0 ~ 4 位满足上述规则,5 ~ 7 为专用功能,即 5、6、7 分别用来控制 P0、P1、P2 组端口的上下拉模式(0 上拉、1 下拉)
端口配置寄存器
PxSEL 寄存器
寄存器 PxSEL,其中 x 为端口的标号 0~2,用来设置端口的每个引脚为通用 I/O(0) 或者是外部设备 I/O(1)。
默认上电后为普通 IO 口上拉输入
P2 组只有 5 个 IO 口,但是 P2_1 和 P2_2 是用于下载程序用的,所以这两个 IO 不需要配置
因此 P2SEL 的低 3 位分别对应 P2_0、P2_3 、P2_4
PxDIR 寄存器
在任何时候,要改变一个端口引脚的方向,就使用寄存器 PxDIR 来设置每个端口引脚为输入或输出
如果使用输出功能,则不需要使用 PxINP 寄存器
PxINP 寄存器
设置通用 IO 端口的输入模式:上拉、下拉或三态(高阻态)
-
选择输入端口是否为高阻态
-
使用 P0INP、P1INP 以及 P2INP 的 0~4 位
-
需要注意的是,P1_0 和 P1_1 没有上拉 / 下拉功能
-
-
如果选择了上下拉模式,使用 P2INP 的 5~7 位确定到底为上拉还是下拉
-
P2_5:确定 P0 口
-
P2_6:确定 P1 口
-
P2_7:确定 P2 口
-
寄存器使用
对某一位置 1,使用或运算【|】
对某一位置 0,使用与运算【&】
例 1:设置 P1_0 口为通用输出 IO 口
1 | P1SEL &= ~0x01; //P1.0设置为通用I/O口 |
例 2:设置 P0_6 口为通用上拉输入 IO 口
1 | P0SEL &= ~0x40;//P0.6设置为通用I/O口 |
例 3:结合例 1 和例 2 来实现监测外部 P0_6 口的高低电平,高电平点亮 LED 灯(P1_0)
实验现象:拔出跳线帽灯亮,插上跳线帽灯灭
1 |
|