嵌入式中的“中断”什么原理,如何使用

嵌入式中的“中断”什么原理,如何使用,第1张

1中断基本概念

什么是中断?先打个比方。当一个经理正处理文件时,电话铃响了(中断请求),不得不在文件上做一个记号(返回地址),暂停工作,去接电话(中断),并指示“按第二方案办”(调中断服务程序),然后,再静下心来(恢复中断前状态),接着处理文件……。计算机科学家观察了类似实例,“外师物化,内得心源”,借用了这些思想、处理方式和名称,研制了一系列中断服务程序及其调度系统。

中断是cpu处理外部突发事件的一个重要技术。它能使cpu在运行过程中对外部事件发出的中断请求及时地进行处理,处理完成后又立即返回断点,继续进行cpu原来的工作。引起中断的原因或者说发出中断请求的来源叫做中断源。根据中断源的不同,可以把中断分为硬件中断和软件中断两大类,而硬件中断又可以分为外部中断和内部中断

两类。

外部中断一般是指由计算机外设发出的中断请求,如:键盘中断、打印机中断、定时器中断等。外部中断是可以屏蔽的中断,也就是说,利用中断控制器可以屏蔽这些外部设备

的中断请求。

内部中断是指因硬件出错(如突然掉电、奇偶校验错等)或运算出错(除数为零、运算

溢出、单步中断等)所引起的中断。内部中断是不可屏蔽的中断。

软件中断其实并不是真正的中断,它们只是可被调用执行的一般程序。例如:rom

bios中的各种外部设备管理中断服务程序(键盘管理中断、显示器管理中断、打印机管理

中断等,)以及dos的系统功能调用(int

21h)等都是软件中断。

cpu为了处理并发的中断请求,规定了中断的优先权,中断优先权由高到低的顺序是:

(1)除法错、溢出中断、软件中断

(2)不可屏蔽中断

(3)可屏蔽中断

(4)单步中断。

使用方法:

单片机的P25,P26,P27口分别接三位动态数码管的位选端,P0口接动态数码管的段选端。然后,P10口接一个电阻串联一个LED灯然后接地,电阻取200~470欧之间就行,是一个限流电阻。

中断用的是外部中断0,要触发中断的时候,就用一根杜邦线一端接地,一端接到单片机的P32口就行,这样,就满足了你的要求了。

外部中断的触发方式有低电平触发和下降沿触发。到底是那种触发方式,要设置中断允许寄存器中IT0的值,如果IT0=0,像我写的程序,就是低电平触发,如果为1,就是下降沿触发。

灯不是一定要接到P32口上的。中断要执行的任务是在中断函数中写代码控制的,就像我写的代码中,你只需要控制LED灯接的那个IO口就行了。

代码如下:

#include

#define uchar unsigned char

sbit led=P1^0;

uchar code duan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uchar code wei[3]={0x06,0x05,0x03};

void delay(uchar c);

void ini_()            //初始化函数,设置中断触发方式,开中断

{

  EA=1;

  IT0=0;

  EX0=1;

}

void main()

{

uchar i;

  ini_();

led=0;            //由于单片机上电之后,所有的IO口默认是高电平,而要求是开始不亮,所以要将P10口开始设置为低电平。

  while(1)

  {

for(i=0;i<3;i++)            动态数码管闪烁

{

P2=wei[i];

P0=duan[i];

delay(35);

}

}

}

void led_() interrupt 0            //外部中断0函数,中断函数不需要申明

{

uchar i;

led=1;                                    //在中断中让灯亮起来

while(1)

{

for(i=0;i<3;i++)

{

P2=wei[i];

P0=duan[i];

delay(1);

}

}

}

void delay(uchar c)

{

uchar a,b;

for(c;c>0;c--)

for(a=38;a>0;a--)

for(b=80;b>0;b--);

}

用C51写中断函数,和用汇编语言写中断程序,在用法上基本相同,都是中断源发出中断请求并允许中断时去执行中断程序的。并不能由主程序或其它程序调用。但中断程序的起始地址的定义方法不同。C语言用interrup n语句,n为中断源编号。而汇编语言则是用伪指令ORG直接定义的。如定时器T0的起始地址为000BH,则可写,ORG 000BH。

STC单片机官方提供的工具软件里面有例程可以查看。

打开软件后,右边栏有“范例程序”选项,点击后打开窗口,在“单片机系列”选项里选择系列,然后选择需要的范例。

选好后就会看到范例程序:

如果需要更详细的内容,可以下载官方的器件手册。

以上就是关于嵌入式中的“中断”什么原理,如何使用全部的内容,包括:嵌入式中的“中断”什么原理,如何使用、关于51单片机的外部中断使用方法、c51中断函数和汇编语言中断服务程序用法上有何不同等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10211410.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存