无线传感网络 --ZigBee1-1 硬件相关,IO操作


练习: ZigBee1-1 练习 IO控制Led亮灭

控制所有口子的输入输出

一共有21个通用IO口,其中这21个分为3组P0\P1\P2;
这些口子都可以作为普通或对应的片上外设控制。
在这里插入图片描述
在这里插入图片描述

IO口控制相关寄存器

PxSEL、PxDIR、PxINP Px(x分别对应0、1、2,用来控制对应的IO口组)3种寄存器,复位,默认都是0。

PxSEL寄存器

PxSEL寄存器作用: 有8位,每一位对应具体的IO组中的相应的一个IO,决定它是普通IO口还是片上外设,0表示普通IO口,1表示片上外设。

在这里插入图片描述
P2SEL寄存器 同样也是0表示普通IO、1表示片上外设 注意:其中P2组只有5个IO口,但是P2_1 P2_2是用于下载程序用的,所以,这两个IO不需要配置,因此P2SEL的低3位分别对应P2_0 P2_3 、P2_4.

在这里插入图片描述

PxDIR寄存器

PxDIR寄存器作用: 有8位,每一位对应具体的IO组中的相应的一个IO,决定它是输入还是输出,0表示输入,1表示输出。
在这里插入图片描述其中P2组只有5个IO口,低五位也对应
P2_0 … P2_4 后面的位不用管。
在这里插入图片描述

PxINP寄存器

PxINP寄存器作用: 在输入的时候,8位,每一位对应具体的IO组中的相应的一个IO,决定它是上下拉模式还是三态,0表示上下拉模式,1表示三态。
在这里插入图片描述
P2INP寄存器 功能也是一样。特别注意:其中后面的3位决定在配置为上下拉模式的时候,组为上拉,还是下拉,0表示上拉,1表示下拉

在这里插入图片描述

输出怎么配置:

eg: 需要让P1_0处于普通IO口模式,非是偏上外设的模式
P1SEL 的第0位 为0

管理所有IO处于普通IO还是偏上外设,由P0SEL P1SEL P2SEL 决定

eg:让P1_0处于输出状态,非输入状态
找到P1DIR 第0位 让它等于1

让所有IO口处于输入状态还是输出状态由P0DIR P1DIR P2DIR 决定

P1_0=1;

输入怎么配置:

eg: 让P0_6处于普通IO口,非偏上外设模式
P0SEL 的第6位为0
eg:让P0_6处于输入状态,非输出状态
P0DIR 的第6位为0
eg:让P0_6处于上拉、下拉或者三态中的一种状态
在这里插入图片描述

   if(1==P0_6)
{//检测到的是高电平

}
else
{//检测到的P0_6外部是低电平

}

例(附解析)

P1SEL第0位清零

不改变其他位上的数字将某一位清0用 与运算**&=**
不改变其他位上的数字将某一位置1用 或运算**|=**

一般情况下P1SEL&=0xFE;可以不写
PxSEL和PxDIR在默认情况下就是0,默认为普通IO口,输入状态

#include<iocc2530.h>

void main()
{
 /*  P1SEL &=0xFE;// 1111 1110 让P1_0处于普通IO,非偏上外设模式
   P1DIR |=0x01;//0000 0001 让P1_0处于输出状态非输入状态
   P1_0=0;//LED1灯亮
   */
  
    //以P0.4为例
    P0SEL &=0xEF;// 1110 1111
    P0DIR |=0x10;//0001 0000
    
    //P0.6
    P0SEL &=0xBF;// 1011 1111
    P0DIR &=0xBF;
    
    
    P0INP &=0xBF;//让P0_6处于上下拉模式;
    P2INP &=0xDF;//1101 1111 让P0组处于上拉模式
     while(1)
     {
          if(1==P0_6)
          {//检测到的是高电平
              P0_4=0;
          }
          else
          {//检测到的P0_6外部是低电平
              P0_4=1;
          }        
     }  
}
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值