C/C++教程

CC2530控制LED闪烁

本文主要是介绍CC2530控制LED闪烁,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

CC2530控制LED闪烁

  • CC2530 控制LED闪烁
    • 电路图
    • 知识点
      • CC2530有两个高频时钟
      • 输入输出配置
    • 程序及注释

CC2530 控制LED闪烁

CC2530拥有21个数字I/O(输入/输出)引脚,可以配置为通用数字I/O。
除了两个高驱动输出口P1.0和P1.1各具备20 mA的输出驱动能力之外,所有的输出口均具备4 mA的驱动能力。
寄存器PxSEL(其中x为端口的标号0~2)用来设置每个端口引脚为通用I/O或者是外部设备I/O信号。作为缺省的情况,每当复位之后,所有的数字输入/输出引脚都设置为通用输入引脚
CC2530

电路图

根据官方的开发板,这里也采用同样的IO口:
这里采用官方推荐的IO口控制两个LED

知识点

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


这篇关于CC2530控制LED闪烁的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!