PIC16F877A单片机 (外部中断)
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单片机 (外部中断)相关推荐
- PIC16F877A单片机 (中断与定时器Timer1)
PIC16F877A单片机 (中断与定时器Timer1) 1 基本原理 2 实现代码 1 基本原理 上图中,如果RC0左边外接了外部的晶振,那么T1OSCEN必须置一.这个外部的晶振频率一般都比较低. ...
- STM32单片机外部中断配置讲解
2019独角兽企业重金招聘Python工程师标准>>> 单片机外部中断简介 所谓外部中断,就是通过外部信号所引起的中断,如单片机引脚上的电平变化(高电平.低电平).边沿变化(上升沿. ...
- 51单片机按键控制数码管0~9_51单片机外部中断
前面为大家介绍的点亮LED灯.数码管.按键只用到了51单片机的IO资源,我们要是仅仅用单片机点灯.操作数码管,那可真是大才小用了.这些都只是51单片机资源的冰山一角,51单片机还有好多的功能,我后面将 ...
- 单片机外部中断实验C语言程序,STC89C52单片机外部中断0实验
原标题:STC89C52单片机外部中断0实验 / 实现功能: 设置,然后通过点亮与P1口第一个引脚相连的D1来 显示系统进入了外部中断0 实验板型号:BS-XYD-C52 实验名称: 外部中断0测试 ...
- PIC16F877A单片机 (中断与定时器Timer2)
PIC16F877A单片机 (中断与定时器Timer2) 1 基本原理 2 实现代码 1 基本原理 2 实现代码 主要根据定时器2的逻辑框图和中断的逻辑框图来编写代码,这样代码的可读性强,也便于理解. ...
- 单片机外部中断触发方式:电平触发和边沿触发两者说明
单片机外部中断触发方式:电平触发和边沿触发两者说明 51单片机的外部中断有两种触发方式可选:电平触发和边沿触发.选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向 ...
- STM32单片机---外部中断
外部中断 一.ARM Cortex-M3 的中断体系 二.代码思路 函数接口 1.为引脚选择使用哪个中断 2.配置外部中断 3.中断优先级配置 4.获取外部中断状态 5.清空外部中断标志位 中断优先级 ...
- 51单片机 | 外部中断实验
文章目录 一.外部中断介绍 二.外部中断配置 三.硬件设计 四.软件设计 五.实验现象 51 单片机外部中断有 2 个,外部中断 0 和外部中断 1,它们的使用方法是一样的,所以只要学会一个即可 ...
- 51单片机外部中断的C51编程
51单片机外部中断的C51编程 相关知识: 1.51单片机的5大中断源:串行口中断.定时中断1.外部中断1.定时中断0.外部中断0: 2.中断源的编号: 串行口中断为4.定时中断1为3.外部中断1为2 ...
- STC15单片机——外部中断
STC15单片机拥有5路外部中断,分别为外部中断0.1.2.3.4.本文章将其分为外部中断0.1和外部中断2.3.4介绍,分别介绍其相关的寄存器以及注意事项. 由于STC15单片机外部中断的使用于传统 ...
最新文章
- HDU2034(set的应用)
- hasnMap的基本操作 源码(三)
- html的表单图形验证码怎么做,form表单验证加验证码.html
- 【Java代码】道格拉斯-普克 Douglas-Peucker 抽稀算法(算法流程图解+使用JDK8方法实现+详细注解源码)
- Faster R-CNN改进篇(二): RFCN ● RON
- 路径规划算法_自动驾驶汽车路径规划算法浅析
- 【转】医疗业务学习笔记--DICOM协议的基础内容!!!!!!!!!!
- 学习Scala:使用try-catch表达式处理异常
- C++ 控制对象的创建方式和数量
- javascript中隐藏显示的样式表属性
- 群色散 matlab,科学网—MATLAB软件绘制一维双原子晶格的格波色散曲线 - 李金磊的博文...
- Java文件上传之断点续传解决方案
- 【C语言】猜灯谜问题
- 微信客户聊天做到这四点,有效提高成单量
- css安卓手机位置偏差,完美解决移动端使用rem单位时CSSSprites错位问题_html/css_WEB-ITnose...
- wireshark插件 - 添加UI子树, 向子树上添加分析后的文本
- 【读书笔记】【More Effective C++】异常(Exceptions)
- Web网页如何实现QQ好友,QQ空间,微博分享
- 阿里云学生机 部署JavaWeb项目
- 东京奥运会能如期举办吗?带你用数据看120年奥运变迁史