基础CC2530_流水灯实验

#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);
    }
  }
}


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值