1.CC2530基本工作电路图:
注意点:
- CPU芯片背面焊盘必须接地
- CC2530的外部时钟源晶振为CPU提供了32MHZ时钟
2.下面是cc2530的核心板原理图
相较于基本工作电路多了
- 一块复位电路
- 从CC2530芯片直接引出下载程序相关的5根线
3.共有40个引脚,其中21为通用IO口P0_0-P0_7、P1_0-P1_7、P2_0-P2_4
4.输出功能的配置:
比如想要配置P1_0为输出功能
- 第一步需要将P1_0设置为普通IO口模式,而不能是片上外设的模式(配置P1SEL第0位为0)
- 第二步让P1_0处于输出状态,而不是输入状态(配置P1DIR的第0位为1)
- 第三步给P1_0赋值,P1_0=1或P1_0=0
(1)PxSEL寄存器介绍:P0SEL、P1SEL、P2SEL,负责管理所有IO处于普通IO还是片上外设
(2)PxDIR寄存器介绍:P0DIR、P1DIR、P2DIR,负责管理所有IO口处于输入状态还是输出状态
(3)代码实现
#include<iocc2530.h>
void main()
{
P1SEL &= 0xFE;//让P1_0处于普通IO口,非片上外设模式
//由于上电时,所有寄存器状态都是0,所以上电时PxSEL默认为普通IO口
P1DIR |= 0x01;//让P1_0处于输出状态,非输入状态
P1_0=1;
while(1);
}
5.输入功能的配置
比如配置P0_1
- 第一步配置P0_1处于普通IO口,而不是片上外设模式(P0SEL中第1位为1)
- 第二步配置P0_1处于输入状态,而不是输出状态(P0DIR中第一位为0)
- 第三步配置P0_1处于上拉、下拉或者三态(接入无穷大电阻、高阻态,用于直接读取外面电平的状态)中的一种状态(P0INP的第1位配置为1表示三态;第1位配置为0,表示上下拉,当P2INP的第6位为0表示上拉,1表示下拉)
PxINP寄存器
6.按键点灯,实现效果按下K2,LED1点亮,松开熄灭
#include<iocc2530.h>
void main()
{
P1SEL &= 0xFE;//让P1_0处于普通IO口,非片上外设模式
//由于上电时,所有寄存器状态都是0,所以上电时PxSEL默认为普通IO口
P1DIR |= 0x01;//让P1_0处于输出状态,非输入状态
// P1_0=1;
P0SEL &= 0xFD; //1111 1101
P0DIR &= 0xFD;
P0INP &= 0xFD; //让P0_1处于上下拉模式
P2INP &= 0xDF; //1101 1111 让P0组处于上拉模式
while(1)
{
if(P0_1 == 1)//检测到输入为高电平
{
P1_0=0;
}
else //检测到输入为低电平
{
P1_0=1;
}
}
}
7.口诀总结:
关于位赋值操作
- &操作可以在不影响其它位的情况下对某一位赋0
- |操作可以在不影响其它位的情况下对某一位赋1
- ^操作搭配某位为1可以在不影响其它位的情况下对某一位取反
配置IO状态,同一组状态,谁在前谁为0,在后则为1
- 普通IO模式、片上外设模式:普通IO为0,片上外设为1
- 输入输出:输入为0,输出为1
- 上下拉、三态:上下拉为0,三态为1
- 上、下拉:上拉为0,下拉为1
8.操作IO口时,CC2530与51单片机的区别:
CC2530芯片可以直接操作IO口,不需要像51单片机那样使用之前先定义引脚sbit xxx=Px^x;