cc2530芯片使用51增强型的内核,跟51单片机还是有一些区别的,例如:51单片机不需要对IO口进行配置,而cc2530芯片却需要对IO口进行配置,才能对它进行赋值。
cc2530具有21个数字输入/输出引脚, 可以配置为通用数字I/O或外设I/O信号, 配置为连接到ADC、 定时器或USART外设。这些I/O口的用途可以通过一系列寄存器配置,由用户软件加以实现。
I/O端口具备如下重要特性:
1.21个数字I/O引脚
2. 可以配置为通用 I/O或外部设备I/O
3. 输入口具备上拉或下拉能力
4.具有外部中断能力。
21 个I/O引脚都可以用作于外部中断源输入口。因此如果需要外部设备可以产生中断。外部中断功能也可
以从睡眠模式唤醒设备
实验原理图:(我们的LED是P1_1和P1_0口)
实验中需要配置的寄存器
PXSEL:设置端口功能,这里设置为通用I/o
PXDIR:设置端口数据的方向
x可以代表任意IO口,如P1SEL。
代码设置:
1.配置I/O端口属性
P1SEL &= ~0x02;//设置P1_1为通用IO
P1DIR |= 0x02;//设置P1_1数据传输方向为输出
2.点亮LED函数实现(led.c)
void LEDxSet( unsigned char LEDx, unsigned char state )
{
if ( LEDx ==LED0 )
{
if ( state == ON )
LED_0=1;
else
LED_0=0;
}
else if ( LEDx == LED1)
{
if ( state == ON )
LED_1= 1;
else
LED_1= 0;
}
}
3.main函数
include
include “leds.h”
void Delayms( unsigned int ms )
{
unsigned int i, j;
for ( i = 0; i< ms; i++ )
for ( j = 0; j < 578; j++ );
}
void main()
{
LEDxInit( LED0 );
LEDxInit( LED1 );
while(1)
{
LEDxSet( LED0,OFF );
LEDxSet( LED1,ON );
Delayms(1000);
LEDxSet( LED0,ON );
LEDxSet( LED1,OFF );
Delayms(1000);
}
工程的创建与设置参照上一篇博客。