CC2530拥有21个数字I/O(输入/输出)引脚,可以配置为通用数字I/O。
除了两个高驱动输出口P1.0和P1.1各具备20 mA的输出驱动能力之外,所有的输出口均具备4 mA的驱动能力。
寄存器PxSEL(其中x为端口的标号0~2)用来设置每个端口引脚为通用I/O或者是外部设备I/O信号。作为缺省的情况,每当复位之后,所有的数字输入/输出引脚都设置为通用输入引脚
根据官方的开发板,这里也采用同样的IO口:
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