找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1851|回复: 1
收起左侧

STC8951单片机的外部中断资源

[复制链接]
ID:432417 发表于 2020-7-26 20:04 | 显示全部楼层 |阅读模式
以程序为例:
  1. #include<reg52.h>

  2. sbit led=P3^0;

  3. void main()
  4. {
  5.          IT0=1;        //设置外部中断0的触发方式为下降沿
  6.          EX0=1;        //开启外部中断0
  7.                                                                                                           //中断的设置,首先设置中断的触发方式,再设置开启终端,最后开启总中断。
  8.          IT1=1; //设置外部中断1的触发方式为下降沿                         //顺序保证:最后开启总中断
  9.          EX1=1;        //开启外部中断1

  10.          EA =1;        //总中断开关
  11.         while(1)
  12.         {
  13.                 P0=0xaa;
  14.                 P0=0xff;
  15.         }
  16. }

  17. void EX0_ISR(void) interrupt 0
  18. {
  19.         led=~led;
  20. }

  21. void EX1_ISR(void) interrupt 2     //外部中断1的中断在此为2!!!!
  22. {
  23.         led=~led;
  24. }
复制代码

对于中断的理解:单片机中断和Java、Android中的线程有些像。中断的使用:首先要声明、设置中断服务,在此以外部中断0和1作解。首先要设置中断的触发方式,再设置中断的开启,最后再设置中断的总开关。IT0=1和IT1=1分别设置外部中断0的触发方式低电平触发也就是下降沿触发,同理IT1的触发方式也是如此。EX0=1和EX1=1是设置外部中断0和外部中断1都开启。EA=1是设置开启中断的所有开关。

以上是对中断的声明与设置。完成以上步骤要写中断响应服务。即代码中:

  1. void EX0_ISR(void) interrupt 0
  2. {
  3.         led=~led;
  4. }

  5. void EX1_ISR(void) interrupt 2     //外部中断1的中断在此为2!!!!
  6. {
  7.         led=~led;
  8. }
复制代码
所谓的低电平触发是说的单片机上INT0与INT1变为低电平时侯。
51hei.png
也就是当开关按下的时候。

我在这一部分中容易犯得错误就是中断初始化那三行代码记的不熟悉。

  1. IT0=1;
  2. EX0=1;
  3. EA=1;
复制代码



回复

使用道具 举报

ID:636538 发表于 2020-7-27 15:11 | 显示全部楼层
这个也不需要刻意记,在数据手册上写的清楚,测试例程也有,当然能记住最好,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表