一、准备工作

1、KEIL C51编译环境

2、CodeGen8 代码生成器

3、MC96F6332D 开发板

4、USB-OCD II仿真器

二、生成外部引脚中断的代码

1、在CodeGen8 代码生成器的外设窗口中选择内部RC时钟作为时钟源,设置时钟源的频率为8MHz,配置GPIO引脚P02和P52分别为外部的可中断输入引脚,使能MCU内部的上拉电阻和防抖动功能;具体配置如下图①、②所示,GPIO配置生成的代码如下图⑧所示:

2、配置外部中断引脚的中断方式为下降沿触发(因为有配置引脚内部的上拉电阻),使能引脚的中断功能;GUI的配置见下图⑤、⑥所示,在下图⑦中可以看到配置后的引脚高亮显示了当前的引脚复用功能;中断功能配置生产的代码如上图③所示;

3、点击CodeGen8 中的C 图标,自动打开KEIL C51软件;下一步进行代码的修改、编译和程序下载

4、在中断函数中添加代码,对外部中断进行状态标志,避免在中断函数中进行数据的处理(中断函数讲究快进快出);

//定义2个全局变量,用来表示外部中断的状态
unsigned char EXIT8_STA = 0;
unsigned char EXIT0_STA = 0;//======================================================
// interrupt routines
//======================================================void INT_Ext8() interrupt 6
{// External interrupt 8 EXIT8_STA = 1;        //外部中断8标志使能}void INT_Ext0_7() interrupt 5
{// External interrupt 0 ~ 7//判断外部引脚0是否被按下if(EIFLAG0 & 0x01){EIFLAG0 &= 0xFE;EXIT0_STA = 1;       //外部中断0标志使能}
}

特别注意:外部中断0-7中断后需要软件手动清除标志位;在规格书中也同样有体现:

5、关于引脚的方向和上拉寄存器在此不再赘述,之前的GPIO章节有详细讲解;

此处针对消抖做下介绍:现代单片机MCU内部可以对引脚进行消抖处理,所以引脚外部可以不增加滤波电容或电阻等硬件电路;关于消抖的使用:需要先配置消抖的时钟,然后对需要消抖的I/O口进行配置即可;消抖时钟寄存器和端口引脚的消抖配置如下图所示:

6、关于外部中断的触发条件配置:MCU外部的中断触发有3种可供选择,一般情况下会选用最多的是上升或下降沿触发,因为之前GPIO引脚有配置内部的上拉电阻,所以此处配置为下降沿触发;

特别注意:在代码生成器中自动生成的EIPOL1寄存器配置为了0x56;见文章前面的图④所示:此处应该配置0x02即可;

建议:因为外部中断设置都是单独打开和关闭,所以只要使用的中断引脚触发条件配置正确即可,当然还是推荐采用正确配置,便于之后代码的调试工作。

7、使能外部引脚对应的中断,可以看到总中断的开关也是在IE寄存器中进行配置。

外部中断8在IE1寄存器中进行配置,如下图所示:

8、在主函数中增加判断外部中断标志的代码

//主函数中增加如下代码if(EXIT8_STA)        //判断外部中断8是否存在{EXIT8_STA = 0;printf("EXIT 8 Interrupt.\r\n");}else if(EXIT0_STA)  //判断外部中断0是否存在{EXIT0_STA = 0;printf("EXIT 0 Interrupt.\r\n");}

9、点击编译器的下载按钮,将刚刚编译好的代码下载到MCU中进行调试仿真。

10、连接串口助手到PC端,可以看到代码可以正常运行。

三、实验现象(具体内容可以参考工程中的Readme.txt文件)

1、MCU主频选择为内部8MHz;

2、当引脚P02和P52有下降沿时会触发中断,在主函数中会判断对应的中断状态是否为真,如果为真,串口会打印对应的中断内容提示有中断触发,见上图;

3、具体的代码可以访问链接:https://share.weiyun.com/5efkBCB;进行免费下载。


因为小编自己能力水平有限,文中难免有错误或表达失误的信息,还望广大阅读者留言批评指正,谢谢。

ABOV单片机外部引脚中断EINT实现讲解及示例代码-[MC96F6332D]相关推荐

  1. ABOV单片机UART串口通讯实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成串口通讯代码 1.在CodeGen8 代码生成器 ...

  2. ABOV单片机内部中断优先级寄存器IP1x/IPx的设置代码实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.外部中断EINT示例代码-MC96F6332D 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.代码部分 1.现代单片机MC96F ...

  3. ABOV单片机内部看门狗WDT的代码实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.内部看门狗代码生成 1.在CodeGen8 代码生成 ...

  4. ABOV单片机UART串口通讯中Printf函数实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成串口代码 1.在CodeGen8 代码生成器的外 ...

  5. ABOV单片机端口引脚GPIO讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成GPIO的代码 1.在CodeGen8 代码生成 ...

  6. ABOV单片机模数转换ADC部分代码实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.ADC的配置和代码生成 1.在CodeGen8 代码 ...

  7. ABOV单片机时钟切换讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成系统时钟代码 1.在CodeGen8 代码生成器 ...

  8. ABOV单片机内部定时器Timer1的定时器代码实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.内部定时器PWM代码生成 1.在CodeGen8 代 ...

  9. ABOV单片机内部WT时钟RTC的代码实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.内部WT时钟代码生成 1.在CodeGen8 代码生 ...

最新文章

  1. Java字符编码根本原理
  2. 阿里云获得SAP HANA 2T实例公共云认证
  3. structs2多文件上传
  4. 3 MIGO采购订单收货报错-表T169P,表目S001不存在
  5. matplotlib绘制极坐标图像
  6. 字符串数组最长公共前缀
  7. 关于Adobe软件安装失败的各类错误代码BUG汇总!!
  8. java lambda有必要_深度分析:java8的新特性lambda和stream流,看完你学会了吗?
  9. scala linux环境变量配置,Scala 下载安装并配置环境
  10. 解决新版 Edge 浏览器无法使用 IDM 的问题
  11. 【元胞自动机】基于matlab元胞自动机地铁火灾疏散模型【含Matlab源码 246期】
  12. 用C++做数据分析 - 唐代诗人的朋友圈
  13. 人体动作捕捉与SMPL模型 (mocap and SMPL model)
  14. 离散数学 —— 集合论(集合的传递性与自反性、幂集、交集、并集、相对补集、绝对补集、对称差或异或、序偶或序对、集合的规模或基数)
  15. PASCAL VOC2012 数据集讲解与制作自己的数据集
  16. 大学计算机作业互评评语简短,大学学生互评评语100字
  17. 习题 3.1 假如我国国民生产总值的年增长率为9%,计算10年后我国国民生产总值与现在相比增长多少百分比。
  18. 【教程】Edraw Max(亿图图示):怎么插入图片到思维导图中?
  19. 叫外卖这个例子中“宅男“组织应该是哪些价值的集合
  20. JPCSP源码解读16:HLE与模块装载过程

热门文章

  1. 【产品经理】谁是产品经理,产品经理到底要做什么?
  2. 算法日记(四)之回文字符串
  3. 树莓派学习笔记——yeelink 远程控制LED
  4. ZTE C220 onu同OLT移机
  5. 解决ios上传图片被旋转的问题
  6. 【人工智能笔记】第五节:基于TensorFlow 2.0进行股票预测(JIT与Eager双模式实现)
  7. wine安装RTX、QQ、飞信
  8. Vrep-基础部分(一)
  9. Google的免费午餐
  10. 敏捷之路:如何开好每日站立会