通用IO(一)

来源:互联网 发布:手机流程图中文软件 编辑:程序博客网 时间:2024/06/17 22:00

前言

学习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_1void IOinit(){    P0SEL&=~(1<<1);//配置通用IO    PODIR |=1<<1;//配置输出模式}void LEDinit(){    LED1=1;//LED初始化}void main(){    IOinit();    LEDinit();    while(1)    {        LED1=~LED1;//让灯闪烁        Delay(1000);    }}

通过上面的小例子是否很快明白呢?但我们还有一个寄存器没有讲,那就是配置寄存器,它有什么用呢?请继续关注我的博客,下期我们我们将了解它。

授人以鱼不如授人以渔,这里我就不发布全部源码了,大家明白思路就可以了。

0 0