在本次学习中,主要通过外部中断来控制LED的亮灭。
首先,先查看相关电路图。由图可知,当CC2530端口1的0号引脚输出低电平时,LED1将被点亮,当按键S1按下时,端口0的1号引脚将为低电平,抬起时为高电平。在接下来的实验过程中,将通过配置使按键按下时产生中断。

接下来,先查看与LED(P1_0)配置相关的寄存器。

  1. 端口1功能选择寄存器(P1SEL)。这是一个8位的寄存器,对应端口1的8个引脚,将相应位设为0,表示将相应引脚设置为普通的I/O口,若设置为1,则将相关引脚设为外设I/O,默认值都为0。

  2. 端口1方向选择寄存器(P1DIR)。这是一个8位的寄存器,对应端口1的8个引脚,将相应位设为0,表示将相应引脚设置为输入引脚,若设置为1,则将相关引脚设为输出引脚,默认值都为0。

  3. 端口1输入模式寄存器(P1INP)。这是一个8位的寄存器,对应端口1的8个引脚,将相应位设为0,表示将相应引脚设置为上拉/下拉模式,若设置为1,则将相关引脚设为三态模式,其中P1_0和P1_1没有上拉/下拉功能,可以不用配置,默认值都为0。

再来看看与中断相关的寄存器

  1. 端口中断控制寄存器(PICTL)。该寄存器的最低位控制端口0输入模式下的中断配置,当该位为0时,表示输入的上升沿引起中断,该位为1时,表示输入的下降沿引起中断。

  2. 端口0中断屏蔽寄存器(P0IEN)。该寄存器控制端口0下8位引脚的中断使能,将相应位设置为0,表示禁用相应引脚的中断;将相应位设置为1,表示使能相应引脚的中断.

  3. 端口0中断状态标志寄存器(P0IFG)。当发生中断时,相应位将被置1.

  4. 中断使能寄存器1(IEN1)。该寄存器的bit5位为端口0的中断使能位,将该位设置为1,表示打开端口0中断,设置为0,表示禁用端口0中断。

  5. 中断使能寄存器0(IEN0)。该寄存器的最高位为中断总开关,将该位设置为1,表示打开总中断,设为0,表示禁用所有中断。

/*
按下按键S1,使LED发生翻转
*/
#include <ioCC2530.h>typedef unsigned char uchar;
typedef unsigned int uint;#define LED1 P1_0
#define KEY1 P0_1void delay_ms(uint ms)
{uint i,j;for(i=0;i<ms;i++)for(j=0;j<555;j++);
}void initLed(void)
{P1SEL &= ~0x01;   //设置P1_0为普通IOP1DIR |= 0X01;   //设置P1_0为输出模式
}void initKey(void)
{P0IEN |= 0X02;  //P0.1中断使能 PICTL |= 0X01;  //P0口下降沿触发IEN1 |= 0x20;   //允许P0口中断P0IFG = 0X00;   //初始化中断标志位 EA = 1;    //总中断使能
}/*
在IAR编译器里用__interrupt来定义一个中断函数。
用#pragma vector = P0INT_VECTOR来提供中断函数的入口地址
P0_ISR为函数名,可以修改。
*/
#pragma vector = P0INT_VECTOR
__interrupt void P0_ISR(void)
{delay_ms(10);LED1 = !LED1;P0IFG = 0;P0IF = 0;
}void main(void)
{initLed();initKey();while(1);
}

CC2530之外部中断相关推荐

  1. cc2530之外部中断实验

    1. 查看原理图 图1.1 由图1.1,可以把端口P1_2设置为外部中断的输入引脚 2.查看芯片手册 图1.2 设置P1_2端口为普通io端口 P1SEL &= ~0x04; //设置P1_2 ...

  2. CC2530基础实验:(2)外部中断控制LED亮灭

    目录 前言 一.实验相关电路图 二.实验相关理论与寄存器 1.中断相关的基础概念 2.CC2530 的中断系统 3.CC2530 的中断处理函数编写方法 4.CC2530 的外部中断 三.源码分析 前 ...

  3. zigbee CC2530 系列教程 5 外部中断实验

    所有课程见此链接: zigbee CC2530 系列教程 0 课程介绍 4.4外部中断实验 4.4.1 实验目的 了解使用外部中断的方法,在中断处理函数中切换LED的状态. 4.4.2 实验讲解 首先 ...

  4. CC2530学习(四)休眠模式配置及外部中断/睡眠时钟唤醒

    文章目录 一.硬件连接 二.寄存器描述(外部中断) (一).睡眠模式设置 (二).电源模式控制设置 三.示例代码(外部中断) 四.实验现象(外部中断) 五.寄存器描述(睡眠时钟中断) (一).睡眠模式 ...

  5. CC2530/Zigbee协议栈外部中断配置详解

    CC2530/Zigbee协议栈配置外部中断 一.I/O端口 二.配置寄存器 三.中断处理函数 一.I/O端口 1.在CC2530芯片中,其I/O口用作通用 I/O 时,引脚可以组成 3 个 8 位端 ...

  6. CC2530外部中断相关

    CC2530有18个中断源,这些中断源在手册中如图, 我们一般说的I/O外部中断,一般是指序号 6.13.15外部输入中断,Port x inputs. 通用I/O 引脚设置为输入后,可以用于产生中断 ...

  7. CC2530学习(二)外部中断

    文章目录 一.硬件连接 二.寄存器描述 (一).引脚中断使能 (二).中断触发方式配置 (三).端口中断使能 (四).初始化中断标志位 (五).开启总中断 (六).中断服务函数 三.示例代码 四.实验 ...

  8. STM32单片机外部中断配置讲解

    2019独角兽企业重金招聘Python工程师标准>>> 单片机外部中断简介 所谓外部中断,就是通过外部信号所引起的中断,如单片机引脚上的电平变化(高电平.低电平).边沿变化(上升沿. ...

  9. hal库开启中断关中断_「正点原子NANO STM32开发板资料连载」第十章 外部中断实验...

    1)实验平台:ALIENTEK NANO STM32F411 V1开发板 2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第十章 外 ...

最新文章

  1. Ext JS 6正式版的GPL版本下载地址
  2. 《计算机图形学》2.2.2 光栅扫描显示处理器
  3. python最大分词_中文分词算法之最大正向匹配算法(Python版)
  4. java数据库程序实例_Java连接各种数据库的实例大全
  5. 简单高效地控制高亮度LED
  6. HTML5中的一些新特性
  7. windows/linux 查看端口占用
  8. 重置计算机网络设置路由器,路由器怎样重新设置_路由器重新设置怎么弄-系统城...
  9. SparkStreaming编程
  10. Mysql中删除语句delete、truncate、drop的区别
  11. 虚拟桌面的服务器,虚拟桌面与集合
  12. 阿里试用,女朋友逼着我给她排序
  13. 如何做好公众号内容运营?这三个步骤就够了
  14. EL表达式三目运算符
  15. JS实现AST抽象语法树问题
  16. 整车新产品研发的多项目管理分析
  17. Java方法的分类及使用
  18. 20天时间,一个人怎么搞定这个后台管理项目
  19. 数学物理方法·例题①数学物理方法简明教程_林福民(第一版)1.1复数与复平面例题
  20. vue + vtkJs + itkJs进行dcom影像预览

热门文章

  1. 娱乐项目————打豆豆
  2. 常系数非齐次线性微分方程通解的求法
  3. 小白神器 - 一篇博客学会HTML
  4. OK6410开发板Uboot学习总结----(一)Uboot启动分析
  5. 三星I9100/I9100G/I9250
  6. 【数电试题】西电通卓模拟卷三
  7. oschina为什么绑定手机号总是报错
  8. 求职招聘系统开发(APP、小程序、公众号)
  9. Linux内核4.14版本——mmc core(3)——host模块
  10. 计算机office考试题型,计算机二级考试office题型有哪些