cc2530
采用中断方式。按KEY1,D9灯亮;按KEY3,D9灯灭
首先需要在cc2530芯片上配置KEY1和KEY3的引脚为中断引脚,然后编写中断处理函数。在中断处理函数中判断是哪个按键按下,然后根据按键的状态控制D9灯的亮灭。
以下是示例代码:
#include <ioCC2530.h>
#define LED P1_0
#define KEY1 P2_1
#define KEY3 P2_3
void init(void);
void key1_isr(void);
void key3_isr(void);
void main(void)
{
init();
while(1) {
// do nothing
}
}
void init(void)
{
// 配置P1_0为输出
P1SEL &= ~BIT0;
P1DIR |= BIT0;
// 配置P2_1和P2_3为中断引脚
P2SEL &= ~(BIT1 | BIT3);
P2DIR &= ~(BIT1 | BIT3);
// 配置P2_1和P2_3的中断触发方式为下降沿触发
P2IE |= BIT1 | BIT3;
P2IES |= BIT1 | BIT3;
// 注册中断处理函数
IEN2 |= BIT1 | BIT3;
PICTL |= 0x01;
}
#pragma vector = P2INT_VECTOR
__interrupt void port2_isr(void)
{
if (PIF & BIT1) {
// KEY1中断
key1_isr();
}
if (PIF & BIT3) {
// KEY3中断
key3_isr();
}
PIF = 0;
}
void key1_isr(void)
{
// 按下KEY1,D9灯亮
LED = 1;
}
void key3_isr(void)
{
// 按下KEY3,D9灯灭
LED = 0;
}
在代码中,使用P1_0控制D9灯的亮灭,使用P2_1和P2_3作为中断引脚,配置中断触发方式为下降沿触发。在中断处理函数中,判断是哪个按键按下,然后控制D9灯的亮灭。在main函数中,不断循环等待中断的发生。