zigbee学习之路(四):按键控制(中断方式)

发布者:nu23最新更新时间:2021-07-02 来源: eefocus关键字:zigbee  按键控制  中断方式 手机看文章 扫描二维码
随时随地手机看文章

一.前言

通过上次的学习,我们学习了如何用按键控制led,但是在实际应用中,这种查询方式占用了cpu的时间,如果通过中断控制就可以解决这个问题,我们今天就来学习按键控制的中断方式。


二.原理分析

传统的51单片机如果要使用中断,也要对相应的寄存器进行控制,cc2530芯片也不例外,而且相对复杂。需要配置多个中断寄存器,下面来一一介绍。

这个寄存器是来控制端口0中断使能的,要开启中断,应设为1.

这个是配置各种中断使能的,我们只需要配置P0IE.

这个是配置中断触发方式的,根据上次的按键原理图,我们应该选择低下降沿触发模式。

中断状态标志位,当中断没有发生或者结束时,应将标志位置0.

三.程序代码

#include CC2530.h>

#define uint unsigned int

#define uchar unsigned char

#define LED1 P1_0      //LED1为P1_0端口控制

#define LED2 P1_1      //LED2为P1_1端口控制

#define LED3 P1_4      //LED3为P1_4端口控制

//函数声明 void Delayms(uint);    

//延时函数 void InitLed(void); 

//LED_IO初始化 void KeyInit(void);    

//KEY_IO初始化

/************** 函 数 名  : Delayms  功能描述  : 毫秒延时  输入参数  : xms:延时时间,如 i=xms 即延时i毫秒  输出参数  : none  返 回 值  : none **/

void Delayms(uint xms)

{     uint i,j;   

  for(i=xms;i>0;i--)      

for(j=587;j>0;j--);

}

/******************* 函 数 名  : InitLed  功能描述  : LED_IO初始化  输入参数  : none  输出参数  : none  返 回 值  : none *********************************/

void InitLed(void)

{     P1DIR |= 0xff;       //P1端口定义为输出   

  LED1 = 1;            //LED1灯熄灭    

LED2 = 1;            //LED2灯熄灭    

LED3 = 1;            //LED3灯熄灭 }

/*********************  函 数 名  : InitKey  功能描述  : KEY_IO初始化(中断方式配置)  输入参数  : none  输出参数  : none  返 回 值  : none ******************/

void InitKey(void)

{     P0IEN |= 0x10;  //设置P0_4为中断方式    

IEN1 |= 0x20;   //允许P0口中断    

PICTL |= 0x01;  //下降沿触发    

P0IFG = 0x00;   //清中断标志位  

   EA = 1;         //开总中断 }

/**************  函 数 名  : P0_ISR  功能描述  : 中断处理函数  输入参数  : none  输出参数  : none  返 回 值  : none ***********/

#pragma vector = P0INT_VECTOR         //格式:#pragma vector = 中断向量

__interrupt void P0_ISR(void)     //接着是中断处理程序(函数名可以任意取)

{     LED1=~LED1;      //改变LED状态    

LED2=~LED2;    

LED3=~LED3;        

P0IFG = 0;       //清中断标志  

   P0IF = 0; }

/******************* 函 数 名  : main  功能描述  : KEY测试(通用IO中断的使用)  输入参数  : NONE   输出参数  : NONE  返 回 值  : NONE ************/

void main(void)

{     InitLed();  //调用初始化函数   

  InitKey();    

    while(1);     }


四.总结

led的控制函数和之前一样,大家要注意中断函数的定义,这是一种定义中断的格式,还有一定要使POIF=0,用来清除标志位,这样中断才能发生,还有大家学会用模块化的思想去写程序。

关键字:zigbee  按键控制  中断方式 引用地址:zigbee学习之路(四):按键控制(中断方式)

上一篇:zigbee学习之路(三):按键的控制
下一篇:zigbee学习之路(五):定时器1(查询方式)

推荐阅读最新更新时间:2024-11-13 06:08

QORVO联合HUMAX提供基于ZigBee的全套智能语音助理系统
集微网消息,实现互联世界的创新RF解决方案提供商Qorvo, Inc.今天宣布,其多堆栈、多协议GP712片上系统已应用于基于ZigBee®的全新 HUMAX Chorus语音助理。这种搭配可将网关、传感器设备、云平台和移动应用全部集成在一起,为运营商带来了全套智能家居系统,推动了物联网的(IoT)发展。 语音助理促进了智能家居市场的增长。据Gartner的报告指出,到2021年,全球终端用户对支持虚拟私人助理 (VPA)的无线扬声器市场的消费预计将从2016年的7.2亿美元增加至35.2亿美元。 GP712可在不同RF通道中支持ZigBee和Thread,使设计人员能够为多个网关产品使用单个收发器,从而同时服务两个协议。这样可以
[手机便携]
基于ZigBee的无线胎压监测系统的设计
  本文主要提出了基于一种新的无线技术 ZigBee的新型的胎压监测系统(TPMS)的设计方案。鉴于ZigBee低成本、低功耗等特点,适用于胎压监测系统,目前业界还没有出现类似的设计方案。本设计为直接式胎压监测系统,即在车辆轮胎上安装压力和温度传感器,通过ZigBee无线方式将胎压的信息传送给车内显示模块,并显示在液晶显示屏上。由此可实时监测车辆的胎压情况,并在胎压异常情况下发出报警。   引言   随着商业用车和家庭用车的日益增多,汽车安全越来越受到人们的重视。美国汽车工程师协会的调查统计表明,美国每年有26万起交通事故是由于汽车轮胎气压低或渗漏造成的,美国运输部国家公路交通安全管理委员会(NHTSA)制定的法规中规定:2003
[单片机]
基于<font color='red'>ZigBee</font>的无线胎压监测系统的设计
51单片机C编程(二、按键控制数码管显示)
#include reg51.h sbit k1=P3^0; //p30定义为第一个按键 sbit k2=P3^1; //p31定义为第二个按键 char tab ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x02,0xf8,0x00,0x10}; void delay(int x) { int i,j; for(i=x;i 0l;i--) {for(j=255;j 0;j--);} } void main() { int n=0; P0=0xc0; // 初始显示0 while(1) { if(k1==0) //如果
[单片机]
中国电子技术标准化研究院获授权成为ZigBee联盟首个在华检测服务供应商
为本地快速发展的市场提供兼容性检测服务 北京,2013年10月28日——为能源管理、商业及消费者产品应用创建无线解决方案的全球企业联盟ZigBee联盟(The ZigBee® Alliance)今天宣布,正式授权中国电子技术标准化研究院(简称CESI)成为其首个在华检测服务供应商,为ZigBee认证项目提供专业检测服务。中国电子技术标准化研究院是中国工业和信息化部(简称MIIT)辖下的政府机构,此次与ZigBee携手,将为本地快速发展的ZigBee技术应用提供有力支持。 中国电子技术标准化研究院将为ZigBee的专业兼容平台(ZigBee PRO Compliant Platforms)和ZigBee光链技术(ZigBee L
[网络通信]
按键控制51单片机上面硬件的功能
按键一二三对应51单片机上不同的功能 例如跑马灯,蜂鸣器,呼吸灯,中断之类的 #define FSCLK 11059200 //晶振频率为 11.0592MHz #include STC12C5A60S2.h #include key_scan.h #include intrins.h #define LED_PORT P0 sbit BEEP=P1^4; unsigned int n = 0; unsigned int t = 0; unsigned char xx = 127; unsigned char p; unsigned char m; #define uchar unsig
[单片机]
QORVO®联合HUMAX提供基于ZigBee®的全套智能语音助理系统
实现互联世界的创新RF解决方案提供商Qorvo, Inc.(纳斯达克代码:QRVO)今天宣布,其多堆栈、多协议GP712片上系统已应用于基于ZigBee®的全新 HUMAX Chorus语音助理。这种搭配可将网关、传感器设备、云平台和移动应用全部集成在一起,为运营商带来了全套智能家居系统,推动了物联网的(IoT)发展。 语音助理促进了智能家居市场的增长。据Gartner的报告指出,到2021年,全球终端用户对支持虚拟私人助理 (VPA)的无线扬声器市场的消费预计将从2016年的7.2亿美元增加至35.2亿美元。 GP712可在不同RF通道中支持ZigBee和Thread,使设计人员能够为多个网关产品使用单个收发器,从而同时
[物联网]
基于ZigBee技术的远程医疗监护系统设计方案
引 言 远程医疗是信息技术与医学相结合的产物,它使用远程通信和计算机多媒体技术为患者提供医学信息和医疗服务。在信息技术高速发展的今天,它已经成为医学交流中一道亮丽的风景线。 远程医疗主要应用在临床会诊、检查、诊断、监护、指导治疗、医学研究、交流、医学教育和手术观摩等方面。远程医疗监护系统作为远程医疗系统中的一部分,是将采集的被监护者的生理参数与视频、音频以及影像等资料通过通信网络实时传送到社区监护中心,用于动态跟踪病态发展,以保障及时诊断、治疗。随着当今社会老年人口的剧增,医疗资源中监护的作用更加突出。 医疗监护仪器目前可分为两类,一类是指在医院内由职业医生或专业技术人员使用的专门仪器,对病人进行生理指标的监护
[单片机]
基于<font color='red'>ZigBee</font>技术的远程医疗监护系统设计方案
【跟着江科大学Stm32】GPIO_按键控制LED_光敏传感器控制蜂鸣器
一、按键控制LED 用两个按键来分别控制两个LED的状态,初始状态两灯均熄灭,按下1次点亮,再按下熄灭 因为江科大的套餐抢不到 我就自己看着图和利用现有的东西配了一套,结果是一样的,会比较乱 LED.H #ifndef __LED_H #define __LED_H void LED_Init(void); void LED1_ON(void); void LED1_OFF(void); void LED2_ON(void); void LED2_OFF(void); #endif LED.c #include stm32f10x.h // Device header void LED_
[单片机]
【跟着江科大学Stm32】GPIO_<font color='red'>按键</font><font color='red'>控制</font>LED_光敏传感器<font color='red'>控制</font>蜂鸣器
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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