Zigbee-GPIO编程(一)


一基本知识

image-20210329211907489

一. 管脚

  1. 21个管脚分成了3组

    (1)P0组:8个管脚分别是P0_0——-P0_7;

    (2)P1组:8个管脚分别是P1_0——-P1_7;

    (3)P2组:5个管脚分别是P2_0——-P2_4

  2. GPIO口用作普通IO口的应用场合
    (1)外部设备所要求的通信速率较低低;
    (2)通信协议简单,例如和发光二极管、按键、继电器等简单设备的通信

二.SFR寄存器

一个再复杂的IO接口电路面向CPU的一面都是一组特殊功能寄存器SFR

普通的输入、输出管脚的编程,主要涉及如下几个sfr(8位):

​ PxSEL:每位所对应的管脚时普通IO还是外围设备IO;

​ Px: 每位的值和对应管脚的电平一致;

​ PxDIR:每位对应管脚是输入还是输出;

​ PxINP:管脚拉电阻选择

​ 这里x可以为0,1,2

三. 编程步骤

管脚设置

  1. 普通IO”还是“片上外设”,设置PxSEL,选择管脚功能;

            0—--普通IO(默认值),1—--外设
                                            外设
    单片机的外设可分为两类:1.内部外设;  2.外设;
    
    1.单片机内部的外设一般包括:串口控制模块,SPI模块,I2C模块,A/D模块,PWM模块,CAN模块,EEPROM,比较器模块,等等,它们都集成在单片机内部,有相对应的内部控制寄存器,可通过单片机指令直接控制。
    
    2.外设指的是单片机外部的外围功能模块,比如键盘控制芯片,液晶,A/D转换芯片,等等。外设可通过单片机的I/O,SPI,I2C等总线控制。
  1. “输入”还是“输出”设置PxDIR,选择管脚方向;

            0-输入,1-输出。
  2. 如果“输入”模式,设置该IO口 “上/下拉输入”模式, “三态输入”模式,设置Px为管脚的初始状态;

            0-上/下拉输入,1-三态输入。
  3. 如果是配置为“上/下拉输入”,还需要选择到底是“上拉输入”还是“下拉输入”。
    P2INP的7、6、5三位依次决定P2、P1、P0组整体上下拉:0-上拉输入,1-下拉输入;

    所有IO上电默认为:普通IO、输入、上拉。

二.GPIO编程

image-20210329214411782
P0: 0x80
P1: 0x90
P2: 0xA0
都可被位寻址
---------------------------
P0SEL:0xF3
P1SEL:0XF4
P2SEL:0xF5
---------------------------
P0DIR: 0xFD
P1DIR: 0xFE
P2DIR: 0xFF
---------------------------
P0INP: 0x8F
P1INP: 0xF6
P2INP: 0xF7

三.编程练习

image-20210329214738257
#define LED1 P1_0       //定义P1.0口为LED1控制端
#define LED2 P1_1       //定义P1.1口为LED2控制端
#define LED3 P1_4       //定义P1.4口为LED3控制端

void InitLed(void)
{
    P1DIR |= (1<<0) | (1<<1) | (1<<4) ; //P1DIR |= 0x13;   P1.0、P1.1、P1.4定义为输出
    LedOnOrOff(1);      //使所有LED灯默认为熄灭状态
}

void main(void)
{
  InitLed();
  while(1)
    {  
        LED1 = !LED1;        
        DelayMS(200);         
        LED2 = !LED2;         
        DelayMS(200);            
        LED3 = !LED3;        
        DelayMS(200);     
  }

文章作者: 梵星
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 梵星 !
  目录