cc2530 點亮LED

在此之前,請先新建工程和添加配置,請參考
cc2530 工程創建

1)我們先來看原理圖,對應的LED1和LED2對應的是P0_0,和P2_0,我們只需要配置與這兩個 端口有關的寄存器即可(每一種硬件都不盡相同,對應的端口也可能不一樣,僅供參考,您需要對自己的代碼進行一些修改,運行成功)

在這裏插入圖片描述

查看相關數據手冊,由於我們只是簡單的LED燈,也只有輸出功能,所以並沒有輸入,也沒有用到中斷,所以只需配置PxSEL,PxDIR,而PxINP,PxIFG,PxIEN,並不需要配置.
在這裏插入圖片描述
2)接下來就是對端口進行配置
先設置PxSEL
選擇通用I/O,由於LED1是P0_0,
所以 應該是 0000 0001 即 P0SEL &= ~0x01;
在這裏插入圖片描述
再設置PxDIR,設置輸出
在這裏插入圖片描述

LED1就設置完了,LED2也用同樣的方法進行設置。

上代碼,這裏提供了三種模式,更多模式請自己創造

#include<iocc2530.h>

//注意自己的端口號
#define LED1 P0_0
#define LED2 P2_0

#define LED_OFF 1 // 1表示關
#define LED_ON  0 //0表示開

void Delay(void);
void led_init(void);

void Mode_01(void);  //同時閃爍
void Mode_02(void);  //交替閃爍
void Mode_03(void);  //閃爍三次再交替



void main(void)
{
  //配置led1 通用io 輸出
  P0SEL &= ~0x01;
  P0DIR |= 0x01;
  
  P2SEL &= ~0x01;
  P2DIR |= 0x01;
  
  led_init();
  
  while(1)
  {
   //Mode_01();
   // Mode_02();
   Mode_03();
  }
}

void Delay(void)
{
  unsigned int i,j;
  for(i=0;i<1000;i++)
  {
    for(j=0;j<200;j++)
      {
        //asm("NOP");
        //asm("NOP");
        //asm("NOP");
      }
   }
}


void led_init(void)
{
  LED1 = LED_OFF;
  LED2 = LED_OFF;
}

void Mode_01(void)
{
    Delay();
    LED1=LED_ON;
    LED2=LED_ON;
    Delay();
    LED1=LED_OFF;
    LED2=LED_OFF;
}

void Mode_02(void)
{
    Delay();
    LED1=LED_ON;
    LED2=LED_OFF;
    Delay();
    LED1=LED_OFF;
    LED2=LED_ON;
}

void Mode_03(void)//
{
  for(int i = 0;i <6; i++) //閃爍包括兩個動作,一亮一滅,所以閃爍三次需要循環6次
  {
     Delay();
     LED1=~LED1;
     LED2=LED_OFF;
  }
   for(int i = 0;i <6; i++)
  {
     Delay();
     LED1=LED_OFF;
     LED2=~LED2;
  }
  
  
}

有錯誤歡迎指出,有問題歡迎諮詢

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章