在此之前,請先新建工程和添加配置,請參考
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;
}
}
有錯誤歡迎指出,有問題歡迎諮詢