cc2530按键中断实现控制LED

news2024/9/22 5:25:48

1开启中断的步骤

1-1使能端口组的中断

IEN1

IEN2 

实例

IEN2 |= 0x10  //使能P1口中断

1-2 端口中断屏蔽

P0IENP1IEN

P2IEN

实例

P1IEN |=0x10;  //使能P1_2口中断

1-3设置触发方式

PICTL

实例

PICTL |=0X02  ;//P1_3到P1_2口下降沿触发 

1-4设置中断优先级

必要时更改,一般不动

1-5开启总中断

IEN0

 

实例
EA = 1    //使能总中断

1-1-1  编辑中断函数

1)中断处理函数的编写格式中断服务处理的编写格式具体如下。
 

#pragma vector=<中断向量>

__interrupt void <函数名称> (void){

/*编写中断处理程序*/

}

在每一个中断处理函数之前,都要加上一行起始语句:

#pragma vector = <中断向量><中断向量>

表示接下来要写的中断处理函数是为哪个中断源进行服务的。

该语句有两种写法,比如为任务所需的P1口中断编写中断处理函数时:

#pragma vector =0x78    或    #pragma vector =P1INT_VECTOR

前者是将<中断向量>用具体的值表示,后者是将<中断向量>用单片机头文件中的宏定义表示。

要查看单片机头文件中有关中断向量的宏定义,可打开“ioCC2530.h”头文件,查找“Interrupt Vectors”部分,便可以看到18个中断源所对应的中断向量定义,如图所示。

 1-1-2进入中断后要清除中断标志

(一片)

 P0、P1P2口分别使用P0IF、P1IFP2IF作为中断标志位,任何一个端口组的I/O口产生外部中断时,会将对应端口组的外部中断标志位自动置位。

(具体哪一个)

P0IFG和P1IFG寄存器的描述 

P2IFG寄存器的描述 

2代码实例(按键控制led) 

#include "ioCC2530.h"

int a=0;

void delay(int n){
    int i,j;
    for(i=0;i<n;i++){
      for(j=0;j<240;j++){
        asm("NOP");
        asm("NOP");
        asm("NOP");
      }
    }
}

void main(void){
    P1SEL &=~ 0x07;  //(00000111)  设置为通用io
    P1DIR |= 0x03;//(0000 0011)    设置为输出

    P1DIR &=~ 0x04;//(0000 0100)   设置为输入

//中断时,不用写(此是按键的输入模式设置)
//    P1INP &=~ 0x04;//(0000 0100)   设置输入模式
//    P2INP &=~ 0x40;//(0100 0000)
    
    IEN2 |= 0x10;//(0001 0000)   io端口组开启中断
    P1IEN |=0x04;//(0000 0100)   使能具体的io口中断
    PICTL &=~ 0x02;//(0000 0010)  中断触发模式
    EA =1;                        //开启总中断
    
      while(1){
        if(a==1){
            P1_0=~P1_0;
            P1_1=~P1_1;
            delay(500);
        }else{
            a=0;
        }
      }
}

#pragma vector=P1INT_VECTOR
__interrupt void P1_int(void){
  if(P1IFG & 0x04){
      
      a++;
      P1IFG &=~ 0x04;//清理具体的中断标志为
      P1IF = 0;      //清理io端口的总中断
  }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2139429.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决:Vue 中 debugger 不生效

目录 1&#xff0c;问题2&#xff0c;解决2.1&#xff0c;修改 webpack 配置2.2&#xff0c;修改浏览器设置 1&#xff0c;问题 在 Vue 项目中&#xff0c;可以使用 debugger 在浏览器中开启调试。但有时却不生效。 2&#xff0c;解决 2.1&#xff0c;修改 webpack 配置 通…

【webpack4系列】webpack构建速度和体积优化策略(五)

文章目录 速度分析&#xff1a;使用 speed-measure-webpack-plugin体积分析&#xff1a;使用webpack-bundle-analyzer使用高版本的 webpack 和 Node.js多进程/多实例构建资源并行解析可选方案使用 HappyPack 解析资源使用 thread-loader 解析资源 多进程并行压缩代码方法一&…

掌握远程管理的艺术:揭秘Python的pywinrm库

文章目录 &#x1f525; 掌握远程管理的艺术&#xff1a;揭秘Python的pywinrm库 &#x1f525;背景&#xff1a;为何选择pywinrm&#xff1f;pywinrm库简介安装pywinrm库简单库函数使用方法场景应用常见问题与解决方案总结 &#x1f525; 掌握远程管理的艺术&#xff1a;揭秘Py…

gingivitis

gingivitis 牙龈炎 1&#xff09;这个是啥不知道 2&#xff09;七叶莲片 3&#xff09;甲硝唑芬布芬胶囊 4&#xff09;盐酸左氧氟沙星胶囊 5&#xff09;纳珍 开始学习记录医生开的药。日常备药记录一下。【不要乱吃药哈】

C++ | Leetcode C++题解之第409题最长回文串

题目&#xff1a; 题解&#xff1a; class Solution { public:int longestPalindrome(string s) {unordered_map<char, int> count;int ans 0;for (char c : s)count[c];for (auto p : count) {int v p.second;ans v / 2 * 2;if (v % 2 1 and ans % 2 0)ans;}retur…

C语言进阶版第10课—qsort函数排序

文章目录 1. 回调函数2. qsort排序函数&#xff08;定义&#xff09;3. bubble冒泡函数4. qsort函数对整型数组排序5. qsort函数对字符指针数组排序6. qsort函数对结构体数组排序7. 模拟实现qsort排序函数7.1 模拟实现排序整型数组7.2 模拟实现排序结构体数组 8. 结构体访问 1.…

数据库事务中的四大问题:脏读、脏写、不可重复读与幻读详解

数据库事务中的四大问题&#xff1a;脏读、脏写、不可重复读与幻读详解 什么是脏读 定义 事务B读取数据时&#xff0c;读取到的是事务A更新之后&#xff0c;但还未提交的数据。 事务A修改了一条数据&#xff0c;但是还没有提交时&#xff0c;事务B查询到了这条未提交的数据…

火语言RPA流程组件介绍--下拉框选择

&#x1f6a9;【组件功能】&#xff1a;勾选下拉框选项 配置预览 配置说明 丨目标元素 支持T或# 默认FLOW输入项 通过自动捕获工具捕获(选择元素工具使用方法)或手动填写网页元素的css,xpath&#xff0c;指定对应网页元素作为操作目标 丨值 支持T或# 选中目标的值&#xf…

Leetcode 第 413 场周赛题解

Leetcode 第 413 场周赛题解 Leetcode 第 413 场周赛题解题目1&#xff1a;3274. 检查棋盘方格颜色是否相同思路代码复杂度分析 题目2&#xff1a;3275. 第 K 近障碍物查询思路代码复杂度分析 题目3&#xff1a;3276. 选择矩阵中单元格的最大得分思路代码复杂度分析 题目4&…

【SpringCloud】Spring Cloud 开发环境搭建与基础工程构建

目录 环境和工程搭建开发环境安装JDKJDK版本介绍JDK17安装WindowsLinux - UbuntuLinux - CentOs MySQL安装UbuntuCentOS 案例介绍需求服务拆分服务拆分原则服务拆分示例 数据准备工程搭建构建父子工程创建父工程DependencyManagement 和 DependenciesSpring Cloud版本 创建子项…

【生日视频制作】奔驰梅赛德斯大奔提车交车仪式感视频拍照AE模板修改文字软件一键生成器教程特效素材【AE模板】

生日视频制作教程奔驰梅赛德斯大奔提车交车仪式感视频拍照AE模板修改文字特效广告生成神器素材祝福玩法AE模板工程 AE模板套用改图文教程↓↓&#xff1a; 怎么如何做的【生日视频制作】奔驰梅赛德斯大奔提车交车仪式感视频拍照AE模板修改文字软件一键生成器教程特效素材【AE模…

下一代 AI 搜索:多智能体 + 系统2,解决 AI 搜索在复杂信息性能下降问题

下一代 AI 搜索&#xff1a;多智能体 系统2&#xff0c;解决 AI 搜索在复杂信息性能下降问题 AI 搜索&#xff1a;从搜索引擎到答案引擎① AI 搜索市场现状&#xff08;可跳过&#xff09;② 巨好用的 AI 工具推荐程序员的垂直搜索引擎 devv.ai ③ 多智能体 系统2&#xff0c…

易扫功能介绍

背景 之前开发扫描工具&#xff0c;在大家使用过程中提出了很多改进建议&#xff0c;其中最多的就是&#xff0c;IP地址变动&#xff0c;导致无法扫描。易扫软件系统解决了这个问题&#xff0c;同时易扫服务端&#xff0c;支持多操作系统平台安装。 系统架构 主要功能介绍 支…

字典+泛型的栈与队列+委托

字典 在System.Collections.Generic下&#xff0c;对应HashTable,添加了泛型的特性&#xff0c;性能更高更安全&#xff0c;在内存中散列排布&#xff0c;存储也是键值对。 Dictionary<键的数据类型&#xff0c;值的数据类型> 字典名new Dictionary<键的数据类型&am…

18063 圈中的游戏

### 思路 1. 创建一个循环链表表示围成一圈的 n 个人。 2. 从第一个人开始报数&#xff0c;每报到 3 的人退出圈子。 3. 重复上述过程&#xff0c;直到只剩下一个人。 4. 输出最后留下的人的编号。 ### 伪代码 1. 创建一个循环链表&#xff0c;节点表示每个人的编号。 2. 初始…

【视觉中国-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

TCP Analysis Flags 之 TCP ZeroWindow

前言 默认情况下&#xff0c;Wireshark 的 TCP 解析器会跟踪每个 TCP 会话的状态&#xff0c;并在检测到问题或潜在问题时提供额外的信息。在第一次打开捕获文件时&#xff0c;会对每个 TCP 数据包进行一次分析&#xff0c;数据包按照它们在数据包列表中出现的顺序进行处理。可…

9. 什么是 Beam Search?深入理解模型生成策略

是不是总感觉很熟悉&#xff1f; 在之前第5&#xff0c;7&#xff0c;8篇文章中&#xff0c;我们都曾经用到过与它相关的参数&#xff0c;而对于早就有着实操经验的同学们&#xff0c;想必见到的更多。这篇文章将从示例到数学原理和代码带你进行理解。 Beam Search 对应的中文翻…

工厂模式(一):简单工厂模式

一、概念 顾名思义&#xff0c;带着工厂&#xff0c;两字肯定就是有标准、快速、统一等等一些工厂独有的特点。 那么什么是简单工厂模式呢&#xff1f; 定义&#xff1a;简单工厂模式是一种创建对象的设计模式&#xff0c;它定义了一个工厂类通过某个静态方法来生成不同类型的…

基于AutoDL部署langchain-chatchat-0.3.1实战

一、租用AutoDL云服务器&#xff0c;配置环境 1.1 配置AutoDL环境 注册好autodl账户之后&#xff0c;开始在上面租服务器&#xff0c;GPU我选择的是RTX4090*2&#xff0c;西北B区&#xff0c;基础镜像选择的是Pytorch-2.3.0-python-3.12&#xff08;ubuntu22.04&#xff09;-…