#include <ioCC2530.h>
#define uint unsigned int
#define uchar unsigned char
//定义控制灯的端口
#define LED1 P1_0 //定义LED1为P10口控制
#define LED2 P1_1 //定义LED2为P11口控制
//按键 S1
#define KEY1 P0_1 //定义按键为P01口控制
void Delay(uint n) {
uint i;
for (i = 0; i < n; i++);
for (i = 0; i < n; i++);
for (i = 0; i < n; i++);
for (i = 0; i < n; i++);
for (i = 0; i < n; i++);
}
//当按键松开时,p0_1 通过电阻上拉为高电平,当按键 S1 按下时,p0_1 为低电平。
void InitKey(void) {
P0SEL &= ~0X02; //设置 P01 为普通 IO 口
P0DIR &= ~0X02; //按键在P01口,设置为输入模式
P0INP |= 0x02; //默认硬件也有上拉 按下去是低电平
}
void InitIO(void) {
P1DIR |= 0x03; //P10、P11定义为输出 二进制定义端口1的I/O方向:P1.7到P1.0 输入 0000 0011(二进制) 0输入,1输出
LED1 = 1; // 1为高电平,初始化为熄灭
LED2 = 1;
// P1SEL &= ~0x13; // 二进制定义端口1的功能选择 0:通用I/O ,1:外设功能。默认为0,所以可不设
}
//按键动作记录函数
uchar KeyScan(void) {
if (KEY1 == 1) //默认高电平,如果按键按下是低电平 就不会再次进入了
{
Delay(100); //延时
if (KEY1 == 1) //继续高电平
{
while (KEY1); //直到松开按键 如果没有按键按下就卡这里,如果有按键按下 就跳出循环 反馈1
return 1;
}
}
return 0;
}
void main(void) {
InitIO(); // 初始化LED灯控制IO口
InitKey(); // 初始化按键控制IO口
while (1) {
if (KeyScan()) {
LED2 = !LED2;
Delay(50000);
LED1 = !LED1;
Delay(50000);
}
}
}
|