热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CC2530之外部中断

在本次学习中,主要通过外部中断来控制LED的亮灭。首先,先查看相关电路图。由图可知,当CC2530端口1的0号引脚输出低电平时࿰

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

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


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

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

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

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


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

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

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

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

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

/*
按下按键S1,使LED发生翻转
*/

#include 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&#61;0;ifor(j&#61;0;j<555;j&#43;&#43;);
}void initLed(void)
{P1SEL &&#61; ~0x01; //设置P1_0为普通IOP1DIR |&#61; 0X01; //设置P1_0为输出模式
}void initKey(void)
{P0IEN |&#61; 0X02; //P0.1中断使能 PICTL |&#61; 0X01; //P0口下降沿触发IEN1 |&#61; 0x20; //允许P0口中断P0IFG &#61; 0X00; //初始化中断标志位 EA &#61; 1; //总中断使能
}/*
在IAR编译器里用__interrupt来定义一个中断函数。
用#pragma vector &#61; P0INT_VECTOR来提供中断函数的入口地址
P0_ISR为函数名&#xff0c;可以修改。
*/

#pragma vector &#61; P0INT_VECTOR
__interrupt void P0_ISR(void)
{delay_ms(10);LED1 &#61; !LED1;P0IFG &#61; 0;P0IF &#61; 0;
}void main(void)
{initLed();initKey();while(1);
}

推荐阅读
  • 本文介绍了如何在Linux和Windows环境中使用C语言中的beep函数来生成不同频率的声音,并提供了详细的代码示例和解释。 ... [详细]
  • PBO(PixelBufferObject),将像素数据存储在显存中。优点:1、快速的像素数据传递,它采用了一种叫DMA(DirectM ... [详细]
  • 第14周实践项目(4)-验证平衡二叉树
    问题**Copyright(c)2015,烟台大学计算机学院*Allrightsreserved.*文件名称:test.cpp*作者:王敏*完成日 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • 普通树(每个节点可以有任意数量的子节点)级序遍历 ... [详细]
  • malloc 是 C 语言中的一个标准库函数,全称为 memory allocation,即动态内存分配。它用于在程序运行时申请一块指定大小的连续内存区域,并返回该区域的起始地址。当无法预先确定内存的具体位置时,可以通过 malloc 动态分配内存。 ... [详细]
  • 【线段树】  本质是二叉树,每个节点表示一个区间[L,R],设m(R-L+1)2(该处结果向下取整)左孩子区间为[L,m],右孩子区间为[m ... [详细]
  • Java设计模式详解:解释器模式的应用与实现
    本文详细介绍了Java设计模式中的解释器模式,包括其定义、应用场景、优缺点以及具体的实现示例。通过音乐解释器的例子,帮助读者更好地理解和应用这一模式。 ... [详细]
  • C语言编写线程池的简单实现方法
    2019独角兽企业重金招聘Python工程师标准好文章,一起分享——有时我们会需要大量线程来处理一些相互独立的任务,为了避免频繁的申请释放线程所带 ... [详细]
  • iOS 不定参数 详解 ... [详细]
  • T15483.【清华集训2017模拟11.26】简单路径T25484.【清华集训2017模拟11.26】快乐树T35485.【清华集训2017模拟11.26】字符串T1结论题,结论很 ... [详细]
  • 【妙】bug称它为数组越界的妙用
    1、聊一聊首先跟大家推荐一首非常温柔的歌曲,跑步的常听。本文主要把自己对C语言中柔性数组、零数组等等的理解分享给大家,并聊聊如何构建一种统一化的学习思想 ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • 使用Tkinter构建51Ape无损音乐爬虫UI
    本文介绍了如何使用Python的内置模块Tkinter来构建一个简单的用户界面,用于爬取51Ape网站上的无损音乐百度云链接。虽然Tkinter入门相对简单,但在实际开发过程中由于文档不足可能会带来一些不便。 ... [详细]
  • MySQL初级篇——字符串、日期时间、流程控制函数的相关应用
    文章目录:1.字符串函数2.日期时间函数2.1获取日期时间2.2日期与时间戳的转换2.3获取年月日、时分秒、星期数、天数等函数2.4时间和秒钟的转换2. ... [详细]
author-avatar
EMBRACE-老王
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有