概述
中断程序
注意:负跳变触发方式也叫下降沿有效
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);
}
最后
以上就是等待金针菇为你收集整理的单片机外部中断的使用的全部内容,希望文章能够帮你解决单片机外部中断的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复