在此之前,请先新建工程和添加配置,请参考
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;
}
}
有错误欢迎指出,有问题欢迎咨询