有关CC2530的GPIO基本知识、普通GPIO操作有关寄存器的介绍、IAR Embedded Workbench IDE软件使用:TI CC2530基础实验(普通GPIO操作——点亮led灯)
电路原理图:
分析:需要按一下按键亮一下灯,并且不采用中断方式,即我们需要实时去监测按下是否被按下(P0_4为低电平表示按下,高电平表示松开)。
设置:
- 灯LED1对应的P1_0引脚为普通I/O、方向为输出
- 按键S1对应的P0_4引脚为普通I/O、方向为输入
程序:
/**************************************
* 基础实验只需要添加以下这个头文件即可
*************************************/
#include <ioCC2530.h>
/***********************************
* 程序描述:按一下按键亮一下灯
**********************************/
#define LED1 P1_0
#define KEY1 P0_4
/***********************************
* 函数描述:初始化LED1
**********************************/
void LED1Init(void)
{
P1SEL &= ~0x01; //功能:普通I/O
P1DIR |= 0x01; //方向:输出
LED1 = 1; //使其属于灭状态
}
/***********************************
* 函数描述:初始化按键S1
**********************************/
void KEY1Init(void)
{
P0SEL &= ~0x10; //功能:普通I/O
P0DIR &= ~0x10; //方向:输入
}
/***********************************
* 函数描述:毫秒级延迟函数
**********************************/
void Delayms(unsigned int ms)
{
unsigned int i,j;
for (i = ms; i > 0; i--)
{
for (j = 587; j > 0; j--);
}
}
/***********************************
* 函数描述:扫描KEY1的状态并修过LED1
**********************************/
void KEY1Scan(void)
{
if (0 == KEY1)//表示按下
{
LED1 = 0; //给低电平使其LED1亮
Delayms(10);//去抖
for (;1 == KEY1;) //判断是否松开
{
LED1 = 1; //给高电平使其LED1亮
}
}
}
void main()
{
LED1Init();
KEY1Init();
for (;;)
{
KEY1Scan();
}
}