其实真的不能再简单了哦,就是三个寄存器。1.PxSEL:设置某一个的IO口是作为基本的IO口还是作为第二功能的接口来使用。(0:基本IO,1:外设功能)2.PxDIR:设置作为基本功能的IO口到底是作为输入还是输出使用。(0:输入,1:输出)3.PxINP:设置某一个IO口的输入模式,上下拉还是三态模式,如果要具体指明上拉还是下拉,需要配合P2INP【5:7】这三位分别对应P0---P2这三组。(0:上拉,1:下拉)ADC采集的时候用三态输入4.注意,P2.0---P2.2这三个IO口不区分基本IO还是外设功能。5.2530一共四十个IO,但是我们用到的只有21个,实质上中间还有一个大IO,所以是41个IO。这21个IO是P0和P1分别是8个,还有P2的5个。6.上电初始化以后默认所有寄存器都是0.
补充内容:1、掌握Zigbee无线模块基本工作电路。2、做Zigbee无线模块,和TI CC2530基本工作电路有什么不同。 多出了一块复位电路; 从CC2530芯片直接引出下载的相关5根线,为CC2530下载程序。3、学会随心所欲的控制所有口子的输入输出。 输出怎么配置: 需要让P1_0处于普通IO口模式,非是偏上外设的模式 P1SEL 的第0位 为0 //管理所有IO处于普通IO还是偏上外设,由P0SEL P1SEL P2SEL 决定 让P1_0处于输出状态,非输入状态 找到P1DIR 第0位 让它等于1//让所有IO口处于输入状态还是输出状态由P0DIR P1DIR P2DIR 决定 P1_0=1; 输入怎么配置: 让P0_6处于普通IO口,非偏上外设模式 P0SEL 的第6位为0 让P0_6处于输入状态,非输出状态 P0DIR 的第6位为0 让P0_6处于上拉、下拉或者三态中的一种状态 if(1==P0_6){//检测到的是高电平}else{//检测到的P0_6外部是低电平}LED模块文件头文件:#ifndef __74LS164_8LED_H__#define __74LS164_8LED_H__#include<ioCC2530.h>#define LS164_DATA P1_3#define LS164_CLK P1_2#define UCHAR unsigned char void LS164_Cfg();void LS164_BYTE(UCHAR Data);//P1.3 DATA P1.2 CLK#endif实现文件:#include<ioCC2530.h>#include"74LS164_8LED.h"static UCHAR LED_Map[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x00,0xFF};void LS164_Cfg(){ P1SEL &=~0x0C;//xxxx 00xx 配置为普通IO模式 P1DIR |=0x0C;//xxxx 11xx 配置为输出模式}void LS164_BYTE(UCHAR Index) //P1.3 DATA P1.2 CLK{ UCHAR i=0; UCHAR Data=LED_Map[Index]; for(;i<8;i++) { if(0x80 & Data) { LS164_DATA=1; } else { LS164_DATA=0; } Data=Data << 1; LS164_CLK=0; LS164_CLK=1; }}