我是靠谱客的博主 彩色鱼,最近开发中收集的这篇文章主要介绍51单片机中外部中断使用示例(Protues仿真),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

中断的概念:

CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生),那么CPU就会暂停当前的工作(A事件),去执行B事件(中断响应和中断服务),然后B事件做完之后,再回到原来的事件(A事件)中继续工作。(中断的返回)。

51单片机有5个中断源分别是:

  1、INT0——外部中断0,由P3.2端口引入,低电平或下降沿引起。默认优先级最高

  2、INT1——外部中断1,由P3.3端口引入,低电平或下降沿引起。默认优先级第二

  3、T0——定时器/计数器0中断,由T0计数器计满回零引起。默认优先级第三

  4、T1——定时器/计数器1中断,由T1计数器计满回零引起。默认优先级第四

  5、TI/RI——串行口中断,串行端口完成一帧字符发送/接收后引起。默认中断优先级最低

今天为大家演示51单片机中外部中断0的使用示例:

下面是显示仿真电路,该电路的功能是单片机上电后数码管从A-G循环点亮,当连接P3^2(INT0)引脚的按键按下时,系统检测到外部中断请求信号,CPU执行的主程序断开,跳转去执行中断模块程序,中断模块的功能是数码管闪烁显示数字‘8’ 八次。然后CPU返回主程序断点继续执行A-G的循环点亮。

 

实现代码:

#include<reg51.h>
#include<intrins.h>//左移函数和右移函数包含头文件
#define uint unsigned int//把unsigned int 重新起名为uint
#define uchar unsigned char
uchar aa;

void delayms(uint xms){//延时函数
    uint i,j;
    for(i=xms;i>0;i--)
	    for(j=110;j>0;j--)
	        ;
}
void main(){
	EA=1;//开启总中断
	EX0=1;//开启外部中断0
	IT0=1;//把外部中断0设置为下降沿触发
	aa=0x01;
	while(1){
	    P0=aa;//把aa的值赋给P0
	    delayms(1000);//延时1s
        aa=_crol_(aa,1);//把aa的值左移一位在赋给aa
	}
}
	void ex0_time()interrupt 1//中断函数
{
	unsigned char a;
	P0=0x00;//熄灭数码管
	for(a=8;a>0;a--){//使数码管闪烁显示数字8(带小数点)8次
	    P0=0xff;//使数码管显示数字8
	    delayms(1000);//延时1s
	    P0=0X00;//熄灭数码管
	    delayms(1000);//延时1s
	    }
	
}

Protues仿真结果部分截图:

 

 

最后

以上就是彩色鱼为你收集整理的51单片机中外部中断使用示例(Protues仿真)的全部内容,希望文章能够帮你解决51单片机中外部中断使用示例(Protues仿真)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部