CC2530 的 GPIO 口的使用与普通 51 单片机略有不同,主要体现在 IO 口在使用之前需要进行功能及方向的设定。功能的设置指的是把 IO 口设置为普通 IO 口还是当作特殊功能来使用。方向的设定指的是将 IO 口设为输入或输出。进行这两个设置使用的寄存器分别为 PxSEL 和 PxDIR。
CC2530 的 SFR 中有三类寄存器可用于配置这些 IO 口:
①PxSEL(x 为 0/1/2):P0/P1/P2 口功能选择
0:通用数字 IO,1:外设 IO,缺省默认为 0
②PxDIR(x 为 0/1/2):P0/P1/P2 口方向
0:输入,1:输出,缺省默认为 0
③PxINP(x 为 0/1):P0/P1 口输入模式
0:上拉 / 下拉,1:三态,缺省默认为 0
在使用 IO 口时需配置,若缺省,则取系统默认值。设置代码如下:
对开发板上的 LED 进行闪灯的操作,具体程序为:
- P1SEL = 0x00; //设置P1 为普通 I/O 口
- P1DIR |= 0x0F; //设置P1_0、P1_1 为输出
By:霜月孤鸟
- //引入头文件
- #include < ioCC2530.h > //引入CC2530 所对应的头文件(包含各SFR 的定义)
- //定义LED 引脚
- #define led1 P1_0 //定义LED1 为P1_0 口控制
- #define led2 P1_1 //定义LED2 为P1_1 口控制
- void Delay(unsigned char n) {
- unsigned char i;
- unsigned int j;
- for (i = 0; i < n; i++) for (j = 1; j; j++);
- }
- void main(void) {
- P1SEL = 0x00; //设置P1 为普通 I/O 口
- P1DIR |= 0x03; //设置P1_1,P1_1 为输出
- led1 = 1; //初始化,4 个led 灯全熄
- led2 = 1;
- while (1) //开始循环
- {
- led1 = 0; //led1 闪烁
- Delay(10);
- led1 = 1;
- Delay(10);
- led2 = 0; //led2 闪烁
- Delay(10);
- led2 = 1;
- Delay(10);
- }
- }
2015.12.6
来源: http://lib.csdn.net/article/embeddeddevelopment/37120