一基本知识

一. 管脚
21个管脚分成了3组
(1)P0组:8个管脚分别是P0_0——-P0_7;
(2)P1组:8个管脚分别是P1_0——-P1_7;
(3)P2组:5个管脚分别是P2_0——-P2_4
GPIO口用作普通IO口的应用场合
(1)外部设备所要求的通信速率较低低;
(2)通信协议简单,例如和发光二极管、按键、继电器等简单设备的通信
二.SFR寄存器
一个再复杂的IO接口电路面向CPU的一面都是一组特殊功能寄存器SFR
普通的输入、输出管脚的编程,主要涉及如下几个sfr(8位):
PxSEL:每位所对应的管脚时普通IO还是外围设备IO;
Px: 每位的值和对应管脚的电平一致;
PxDIR:每位对应管脚是输入还是输出;
PxINP:管脚拉电阻选择
这里x可以为0,1,2
三. 编程步骤
管脚设置
普通IO”还是“片上外设”,设置PxSEL,选择管脚功能;
0—--普通IO(默认值),1—--外设
外设 单片机的外设可分为两类:1.内部外设; 2.外设; 1.单片机内部的外设一般包括:串口控制模块,SPI模块,I2C模块,A/D模块,PWM模块,CAN模块,EEPROM,比较器模块,等等,它们都集成在单片机内部,有相对应的内部控制寄存器,可通过单片机指令直接控制。 2.外设指的是单片机外部的外围功能模块,比如键盘控制芯片,液晶,A/D转换芯片,等等。外设可通过单片机的I/O,SPI,I2C等总线控制。
“输入”还是“输出”设置PxDIR,选择管脚方向;
0-输入,1-输出。
如果“输入”模式,设置该IO口 “上/下拉输入”模式, “三态输入”模式,设置Px为管脚的初始状态;
0-上/下拉输入,1-三态输入。
如果是配置为“上/下拉输入”,还需要选择到底是“上拉输入”还是“下拉输入”。
P2INP的7、6、5三位依次决定P2、P1、P0组整体上下拉:0-上拉输入,1-下拉输入;所有IO上电默认为:普通IO、输入、上拉。
二.GPIO编程

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

#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);
}