PIC16F877A单片机 (外部中断)

  • 1 基本原理
  • 2 实现代码

1 基本原理



2 实现代码


/*----------------函数功能:外部中断RB0/INT按下按键(即产生一个中断),此时LED灯亮
--------------------------*/
#include<pic.h>// 调用PIC16f87XA单片机的头文件//#include"delay.h"//调用延时子函数的头文件__CONFIG(0xFF32);//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关
//__CONFIG(HS&WDTDIS&LVPDIS);/*-----------宏定义--------------*/
#define  uint  unsigned int
#define  uchar unsigned char
#define  V0     RD0         // led灯/*-----------子函数声明--------------*//*-----------主函数--------------*/
void main()
{// The corresponding data direction register is TRISA. // Setting  a TRISA bit (= 1) will make the corresponding PORTA pi an input. // Clearing a TRISA bit (= 0) will make the corresponding PORTA pin an output.// The RB0/INT pin interrupt, the RB port change interrupt// RB0口是外部中断。要设置该端口的方向为输入,从而接收外部数据。TRISB=0xff;               // 设置数据方向 RB7-RB0为输入//TRISB0=1;                // 对于中断而言,和上一条语句等价// 控制LED灯的端口的数据方向为输出TRISD0=0;             // 设置数据方向 RD0为输出    // 1 = Port pin is > VIH,即高电平  ;  0 = Port pin is < VIL,即低电平PORTB=0x00;              // 端口赋初值  这一句可以不要,因为设置为输入,如果是输出,则必须要赋初值//PORTB0=0;                // 对于中断而言,和上一条语句等价// LED灯的初值为灭V0=0;                 // 端口赋初值/************外部中断初始化************/// External interrupt on the RB0/INT pin is edge triggered,// either rising if bit INTEDG (OPTION_REG<6>) is set or falling if the INTEDG bit is clear.INTEDG=1;                // 设置RB0/INT为上升沿触发INTF=0;                  // RB0/INT的中断标志位清零// This interrupt can be disabled by clearing enable bit, INTEINTE=1;                    // RB0/INT的溢出中断标志允许位置一//*********开全局中断设置************/// A global interrupt enable bit, GIE (INTCON<7>),enables (if set) all unmasked interrupts// or disables (if cleared) all interrupts// 外部中断RB0/INT设置了中断允许,此处要开全局中断GIE=1;                 //总中断允许// 外部中断RB0/INT设置了中断允许,此处要允许外设中断PEIE=1;                   // 允许外设中断while(1)               // 死循环,单片机初始化后,就一直运行这个死循环{//V0=1;//delay(500);//V0=0;}}/*************中断服务程序***************/
void interrupt ISR(void)//PIC单片机的所有中断都是这样一个入口
{// When a valid edge appears on the RB0/INT pin, flag bit, INTF(INTCON<1>), is set.if(INTF==1)             // 需要进一步判断是否为定时器1的溢出中断标志位    {// The interrupt flag bit(s) must be cleared in software before // re-enabling interrupts to avoid recursive interrupts//溢出中断标志位清零     如果INTF出现上升沿,则产生中断,所以中断发生之后要清零。INTF=0;           // 执行中断处理程序,执行中断产生时想要执行的功能V0=1;             // 外部中断发生时,LED灯亮}
}

PIC16F877A单片机 (外部中断)相关推荐

  1. PIC16F877A单片机 (中断与定时器Timer1)

    PIC16F877A单片机 (中断与定时器Timer1) 1 基本原理 2 实现代码 1 基本原理 上图中,如果RC0左边外接了外部的晶振,那么T1OSCEN必须置一.这个外部的晶振频率一般都比较低. ...

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

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

  3. 51单片机按键控制数码管0~9_51单片机外部中断

    前面为大家介绍的点亮LED灯.数码管.按键只用到了51单片机的IO资源,我们要是仅仅用单片机点灯.操作数码管,那可真是大才小用了.这些都只是51单片机资源的冰山一角,51单片机还有好多的功能,我后面将 ...

  4. 单片机外部中断实验C语言程序,STC89C52单片机外部中断0实验

    原标题:STC89C52单片机外部中断0实验 / 实现功能: 设置,然后通过点亮与P1口第一个引脚相连的D1来 显示系统进入了外部中断0 实验板型号:BS-XYD-C52 实验名称: 外部中断0测试 ...

  5. PIC16F877A单片机 (中断与定时器Timer2)

    PIC16F877A单片机 (中断与定时器Timer2) 1 基本原理 2 实现代码 1 基本原理 2 实现代码 主要根据定时器2的逻辑框图和中断的逻辑框图来编写代码,这样代码的可读性强,也便于理解. ...

  6. 单片机外部中断触发方式:电平触发和边沿触发两者说明

    单片机外部中断触发方式:电平触发和边沿触发两者说明 51单片机的外部中断有两种触发方式可选:电平触发和边沿触发.选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向 ...

  7. STM32单片机---外部中断

    外部中断 一.ARM Cortex-M3 的中断体系 二.代码思路 函数接口 1.为引脚选择使用哪个中断 2.配置外部中断 3.中断优先级配置 4.获取外部中断状态 5.清空外部中断标志位 中断优先级 ...

  8. 51单片机 | 外部中断实验

    文章目录 一.外部中断介绍 二.外部中断配置 三.硬件设计 四.软件设计 五.实验现象    51 单片机外部中断有 2 个,外部中断 0 和外部中断 1,它们的使用方法是一样的,所以只要学会一个即可 ...

  9. 51单片机外部中断的C51编程

    51单片机外部中断的C51编程 相关知识: 1.51单片机的5大中断源:串行口中断.定时中断1.外部中断1.定时中断0.外部中断0: 2.中断源的编号: 串行口中断为4.定时中断1为3.外部中断1为2 ...

  10. STC15单片机——外部中断

    STC15单片机拥有5路外部中断,分别为外部中断0.1.2.3.4.本文章将其分为外部中断0.1和外部中断2.3.4介绍,分别介绍其相关的寄存器以及注意事项. 由于STC15单片机外部中断的使用于传统 ...

最新文章

  1. HDU2034(set的应用)
  2. hasnMap的基本操作 源码(三)
  3. html的表单图形验证码怎么做,form表单验证加验证码.html
  4. 【Java代码】道格拉斯-普克 Douglas-Peucker 抽稀算法(算法流程图解+使用JDK8方法实现+详细注解源码)
  5. Faster R-CNN改进篇(二): RFCN ● RON
  6. 路径规划算法_自动驾驶汽车路径规划算法浅析
  7. 【转】医疗业务学习笔记--DICOM协议的基础内容!!!!!!!!!!
  8. 学习Scala:使用try-catch表达式处理异常
  9. C++ 控制对象的创建方式和数量
  10. javascript中隐藏显示的样式表属性
  11. 群色散 matlab,科学网—MATLAB软件绘制一维双原子晶格的格波色散曲线 - 李金磊的博文...
  12. Java文件上传之断点续传解决方案
  13. 【C语言】猜灯谜问题
  14. 微信客户聊天做到这四点,有效提高成单量
  15. css安卓手机位置偏差,完美解决移动端使用rem单位时CSSSprites错位问题_html/css_WEB-ITnose...
  16. wireshark插件 - 添加UI子树, 向子树上添加分析后的文本
  17. 【读书笔记】【More Effective C++】异常(Exceptions)
  18. Web网页如何实现QQ好友,QQ空间,微博分享
  19. 阿里云学生机 部署JavaWeb项目
  20. 东京奥运会能如期举办吗?带你用数据看120年奥运变迁史

热门文章

  1. samba 移除_树莓派samba卸载删除、samba重新安装的方法
  2. 阅读全文 html,看看纽约时报是怎么用HTML 5设计在线阅读产品的
  3. AdBlock屏蔽CSDN博客搜索框中自动切换的关键词
  4. 如何使用jmeter测试app端口的md5加密接口
  5. 河北建筑工程学院计算机考研资料汇总
  6. Web前端开发 table标签相关用法和属性
  7. 计算机机房灯管烧毁,常见的8大荧光灯故障(原因分析和故障排除)
  8. ubuntu 在线听音乐软件
  9. Matlab语言实现模糊洗衣机控制器的设计
  10. gitlab markdown 修改 字体颜色