zoukankan      html  css  js  c++  java
  • 团队博客7

          中断是单片机实时地处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。

      中断分外部中断和内部中断,CC2430共包含18个中断源。

      开发板的电路图:

      开发板上已把S1按键与P0.1相连,本实验想要达到的效果就是,通过按键S1触发P0.1的中断,进而在中断服务子程序中控制LED1的亮/灭。

         实验原理及流程图

      实验流程图如下:

      

    我们需要对单字节的SFR中的某一位赋值(0或1),以精确控制硬件设备。

      有的SFR支持位寻址,比如说TCON、P0等,此时,对位的赋值非常简单,只需查询 ioCC2430.h 头文件中 SFR Bit Access 部分的位定义即可:

      P0_0 = 0; //对P0第一位赋值0

      P0_0 = 1; //对P0第一位赋值1  

      但有的SFR并不支持位寻址,就如本实验中的 PICTL,此时想要对其中的某一位赋值,语法如下:

      PICTL &= ~0x01;   //对第1位赋值0

      PICTL |= 0x01;     //对第1位赋值1

    在一个程序中使用中断,一般包括、两个部分:中断服务子程序的编写、中断使能的开启。中断使能已在上面介绍过,下面简单介绍一下中断服务子程序的编写:

      首先指定中断向量,可以在 ioCC2430.h 头文件中的 Interrupt Vectors 部分查询,语法如下:

      #pragma vector = 中断向量

       然后紧跟着编写中断处理程序,结构如下:

      __interrupt void 函数名(void)

      {

        //开中断

        //中断处理

        //中断标志清0

        //关中断

      }

     
  • 相关阅读:
    C/C++取出变量的每一位的值(第一次知道还有QBitArray)
    什么样的程序员适合去创业公司
    VC2008如何生成及使用DLL(图文并茂,完整版)
    Qt浅谈之二十六图片滑动效果
    Qt 学习之路 2(75):线程总结
    Big Data Ingestion and streaming product introduction
    Qt学习之路(24): QPainter(改写paintEvent)
    Qt学习之路(54): 自定义拖放数据对象
    Qt学习之路(49): 通用算法
    Qt核心剖析: moc
  • 原文地址:https://www.cnblogs.com/421a/p/5844345.html
Copyright © 2011-2022 走看看