首页 > 学院 > 开发设计 > 正文

02单片机IO口操作

2019-11-08 20:19:35
字体:
来源:转载
供稿:网友
 其实真的不能再简单了哦,就是三个寄存器。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;    }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表