CC2530控制LED闪烁
CC2530 控制LED闪烁
CC2530拥有21个数字I/O(输入/输出)引脚,可以配置为通用数字I/O。
除了两个高驱动输出口P1.0和P1.1各具备20 mA的输出驱动能力之外,所有的输出口均具备4 mA的驱动能力。
寄存器PxSEL(其中x为端口的标号0~2)用来设置每个端口引脚为通用I/O或者是外部设备I/O信号。作为缺省的情况,每当复位之后,所有的数字输入/输出引脚都设置为通用输入引脚
电路图
根据官方的开发板,这里也采用同样的IO口:
知识点
CC2530有两个高频时钟
16MHz RC和32MHz晶体振荡器,默认情况下使用内部的16MHz RC振荡器。
输入输出配置
在任何时候,要改变一个端口引脚的方向,使用寄存器PxDIR来设置每个端口引脚为输入或输出即可。只要设置PxDIR中的指定位为1,其对应的引脚口就被设置为输出了。
程序及注释
/*******************************************************************************
* OSC = Default (reset) 16MHz RC
********************************************************************************
* 编译器:
* IAR Assembler for 8051 10.01A/W32
* IAR C/C++ Compiler for 8051 10.01A/W32
*
* 文 件 名: main.c
* 目标器件: cc2530
* 编 写: Luke
* 修 订: 2021年9月7日
* 版 本: 1.0
* 描 述:
* DTD253_EMK. 开发板例程。
* 让开发板上的两个LED闪烁。
*
*******************************************************************************/
#include "ioCC2530.h" // 申明该文件中用到的头文件
void delay(void);
/******************************************************************************
* @fn main
*
* @brief
* Main function of application example. Flash 2 LEDs
*
* Parameters:
* @param void
* @return void
******************************************************************************/
void main( void )
{
P0DIR |= 0x01; // 设置P1.0为输出方式
P2DIR |= 0x01; // 设置P2.0为输出方式
while(1)
{
P0_0 = 0; // 点亮LED
P2_0 = 0;
delay(); // 延时
P0_0 = 1; // 熄灭LED
P2_0 = 1;
delay();
}
} // end of main()
/******************************************************************************
* @fn delay
*
* @brief
* 延时函数.
*
* Parameters:
*
* @param void
*
* @return void
*
******************************************************************************/
void delay(void) //延时时间约400ms
{
unsigned int i;
unsigned char j;
for(i=0;i<1500;i++)
{
for(j=0;j<200;j++)
{
asm("NOP");
asm("NOP");
asm("NOP");
}
}
}
// the end