CC2530基于定时器1的长按与短按

发布者:美好的人生最新更新时间:2022-10-11 来源: csdn关键字:CC2530  定时器1  长按  短按 手机看文章 扫描二维码
随时随地手机看文章

实验要求

代码实现

#include "ioCC2530.h"

 

#define D4 P1_1

#define D6 P1_4

#define SW1 P1_2

 

unsigned int count = 0;

unsigned char K_Press = 0;

 

//延迟函数

void Delay(unsigned int t)

{

  while(t--);

}

 

 

//端口初始化函数

void Init_Prot()

{

//配置4个LED灯的引擎

  //选择端口的功能

  P1SEL &=~0x1B;//设置通用io端口

  //配置端口的方向

  P1DIR |=0x1B;

  //关闭LED灯

  P1 &=~0x1B;

  

  //按键

  P1SEL &=~0x04;//输入

  P1DIR &=0x04;

  P1INP &=0x04;//上拉模式

  P2INP &=0x40;

}

 

 

//定时器的初始化

void Init_Timer1()

{

  //1.设置最大计数值

  T1CCOL = 0xD4;//先低8位

  T1CCOH = 0x30;//再高8位

  //2.开启通道0的比较模式

  T1CCTL0 |=0x04;

  //3.使能定时器1的中断

  T1IE=1;

  //4.打开使能总中断

  EA=1;

  //5.设置定时器1的分频数和工作模式

  T1CTL=0x0E;

}

 

 

//定时器的中断服务函数

#pragma vector = T1_VECTOR //起始语句

//中断服务函数

__interrupt void Service_Timer1()

  

  if(K_Press==1)

  {

    count++;

  }

}

 

//按键扫描函数

 

void Scan_Keys()

 

{

  

  //按键1

 

  if(SW1 == 0)//可能有按键按下,那么进行去抖动操作

 

  {

    

    Delay(200);

     

    if(SW1 == 0)//那么就是按键触发的信号

    

    {

     

      K_Press==1;

      

      //按键处理程序

      

      while(SW1 == 0);

      //低电平、按下状态

 

      K_Press==0;       

 

      

      if(count>5)

      {

        D4=~D4;

      }

      else

      {

        D6=~D6;

      }

      

      count=0;

    }

  

  }

}

 

 

void main(void)

{

  //端口初始化

  Init_Prot();

  Init_Timer1();

  while(1)

  {

    Scan_Keys();

  }

}


关键字:CC2530  定时器1  长按  短按 引用地址:CC2530基于定时器1的长按与短按

上一篇:CC2530看门狗定时器实现1秒定时
下一篇:CC2530基于定时器1摸模式的秒闪灯

推荐阅读最新更新时间:2024-11-22 00:24

STM8SF903K3T6定时器1输入捕获
简介 最近接了个转速仪的项目,原理是计频率。最开始是用外部中断,然后根据定时器定时一秒来取值,转速是rpm,所以还要乘以60. 因为需要反映快所以后来改用定时捕捉。采用TIM1的通道一PC1来捕捉。 代码流程 1.开启系统时钟(可以选择内部或者外部) void CLK_Configuration(void) { CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //HSI = 16M (1分频) } 2.开启定时器设置,开启溢出中断,是因为在捕获两个信号时,时间大于定时器最大计数时间,算出溢出时间。 void TIM1_CAP_Configuration(void)
[单片机]
STM32实战3.定时器控制LED灯闪烁(定时器1
#include sys.h #include led.h #include delay.h #include TIM1.h int main(void) { NVIC_Configuration(); LED_Init(); delay_init(); TIM1_Init(); while(1) { } } void TIM1_UP_IRQHandler(void) { TIM_ClearFlag(TIM1,TIM_FLAG_Update); LED=~LED; } #include TIM1.h void TIM1_Init(voi
[单片机]
STM32实战3.<font color='red'>定时器</font>控制LED灯闪烁(<font color='red'>定时器</font><font color='red'>1</font>)
采用TIM1高级定时器产生PWM
简介 STM32 的定时器功能十分强大,有 TIME1 和 TIME8 等高级定时器,也有 TIME2~TIME5 等通用定时器,还有 TIME6 和 TIME7 等基本定时器。而每种定时器的使用方法略有不同,之前写产生pwm的程序使用的都是通用定时器,今天使用高级定时器TIM1时发现怎么也产生不了,后来才知道使用TIM1时,需要多添加两行代码 //重复计数器的值 TIM_TimeBaseInitStructure.TIM_RepetitionCounter=0; // 主输出使能,当使用的是通用定时器时,这句不需要 TIM_CtrlPWMOutputs(TIM1, ENABLE); 高级定时器TIM1的TIM1_T
[单片机]
采用TIM<font color='red'>1</font>高级<font color='red'>定时器</font>产生PWM
无线传感器网络的室内定位节点设计
引言     公共安全领域内,室内定位技术在羁押场所预警监控、取保候审、监视居住,以及紧急情况救援与救灾应急指挥调度等应用中具备良好的应用前景。ZigBee技术是一种基于IEEE 802.15.4标准的低复杂度、低功耗、低成本的无线通信技术,具有自组网、低延迟、可实现128位的AES加密和组网方式灵活等特性,非常适合用于室内定位技术的应用需求。基于ZigBee技术的室内定位系统,具有成本低、节点续航时间长、自组网方便灵活、便于快速部署和安全性较高等优点。 1 基于ZigBee的室内定位节点简述     基于ZigBee的定位网络是一个WSN网络(Wireless Sensor Network,无线传感器网络),为定位应用系统提供
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved