前言
学习zigbee,就从最简单的开始。我是从cc2530这块单片机学起的。
废话不多说,我从最简单的io说起。
这块单片机的IO分为通用IO和外设IO。
什么是通用I/O呢?
我简单的理解为通用I/O是只有输入输出0和1之分的一种IO模式。而外设IO指能实现多,复杂的功能叫做外设IO。当然这种说法肯定是不标准的,具体的说法还请大家查相关手册。
我博客只教大家怎么用!
通用I/O的使用
I/O无非就是配置寄存器。首先我们查看得知通用I/O常用的有三个寄存器,分别是功能寄存器、方向寄存器、配置寄存器。
既然IO有分两种。那么我们就需要设置指定的IO引脚是什么类型的。
已知0为设置为通用IO,1为外设IO
功能寄存器PxSEL的配置
例如我们要设置P0_1口为通用IO,只需写以下代码
P0SEL &=~(1<<1);
如果是外设IO呢?我后面也会细讲,这里讲个大概的
P0SEL |=1<<1;
方向寄存器PxDIR的配置
这个是干嘛用呢?其实也非常简单,就是设置该IO口是输入还是输出用的。所以它的配置也相当简单
/*P0_1设置为输入IO引脚*/
P0DIR&=~(1<<1);
/*P0_1设置为输出IO引脚*/
P0DIR|=1<<1;
是不是很容易啊!
通过上面两个寄存器的设置就可以实现简单的LED灯闪烁的功能了。
大概思路是这样子的,如何控制灯亮呢?给它一个高电平/低电平,这里我假设是高电平,怎么给它高电平呢?首先配置IO口是通用IO还是外设IO,由于此灯不需要复杂的功能,所以我们只需要将它设置为通用IO即可。接着就是它为输出模式就好了
/*定义LED1*/
#define LED1 P0_1
void IOinit()
{
P0SEL&=~(1<<1);//配置通用IO
PODIR |=1<<1;//配置输出模式
}
void LEDinit()
{
LED1=1;//LED初始化
}
void main()
{
IOinit();
LEDinit();
while(1)
{
LED1=~LED1;//让灯闪烁
Delay(1000);
}
}
通过上面的小例子是否很快明白呢?但我们还有一个寄存器没有讲,那就是配置寄存器,它有什么用呢?请继续关注我的博客,下期我们我们将了解它。
授人以鱼不如授人以渔,这里我就不发布全部源码了,大家明白思路就可以了。