单片机外部中断的使用

中断程序

 

 

注意:负跳变触发方式也叫下降沿有效

 

 

 

 

 

Break continue return知识点

1、break

break:跳出当前循环;但是如果是嵌套循环,则只能跳出当前的这一层循环,只有逐层break才能跳出所有循环。for (int i = 0; i < 10; i++) {

if (i == 6) {

break;      // 在执行i==6时强制终止循环,i==6不会被执行

}

System.out.println(i);

}

输出结果为0 1 2 3 4 5 ;6以后的都不会输出

break必须出现在for,while,switch的结构中!!!!!!!

2、continue

continue:终止当前循环,但是不跳出循环(在循环中continue后面的语句是不会执行了),继续往下根据循环条件执行循环。for (int i = 0; i < 10; i++) {

if (i == 6) {

continue;

// i==6不会被执行,而是被中断了

}

System.out.println(i);

}

输出结果为0 1 2 3 4 5 7 8 9;只有6没有输出

3、return

(1)return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行。

(2)return 返回一个值给调用该方法的语句,返回值的数据类型必须与方法的声明中的返回值的类型一致。

(3)return后面也可以不带参数,不带参数就是返回空,其实主要目的就是用于想中断函数执行,返回调用函数处

INT0外部中断0和INT1外部中断1分别放在P3.2、P3.3

当P3.2触发的时候 产生外部中断申请,IE0自动变为1(原先IE0是为0),当进入中断之后,IE0由1变0(IE1,IE0,IT1,IT0都是控制外部中断)

TF0,TF1是定时器

IT0是为外部中断INT0触发方式控制位,用于控制外部中断的触发信号。当IT0=1,负边沿触发方式(就是下降沿有效);当IT0=0,电平触发方式,低电平有效。IT1是为外部中断INT1触发方式控制位。

IE0为外部中断INT0的请求标志位。IE1为外部中断INT1的请求标志位。

EA是中断允许总开关。EA=0,CPU禁止所有中断;EA=1,CPU开启所有的中断。

EX1为外部中断INT1中断允许控制位。EX1=0,禁止外部中断INT1中断;EX1=1,允许外部中断INT1中断。

EX0为外部中断INT0中断允许控制位。EX0=0,禁止外部中断INT0中断;EX0=1,允许外部中断INT0中断。

下面举一个例子:

P3.2是第三行,按下第三行的随便一个键盘按钮则小灯全亮,松开键盘则小灯全暗。

#include<reg52.h>
delay(int xms)
{
int i,j;
for(i=xms;i>=0;i--)
for(j=112;j>0;j--);
}
main()
{                       //中断允许设置也采用位变量实现:EA=1;EX0=1;
EA=1;               //中断程序三件套    总中断允许
EX0=1;               //INT0允许控制位    外部中断请求0
IT0=1;               //脉冲触发 、边沿触发也就是下降沿有效(1变0的瞬间) (这个是外部中断触发方式)      可以试试把这个改成0试一下  
P3=0x0f;                //为首次中断做准备 列线全为0,行线全为1
while(1);                 //死循环  模拟其他程序功能
}
it0() interrupt 0           //中断格式声明
{
P1=~P1;     
delay(500);
}

 

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值