当前位置:首页 » 编程软件 » 编译器能提供的中断向量有几个

编译器能提供的中断向量有几个

发布时间: 2022-11-12 01:56:52

A. 8086可容纳几个中断向量

8086的中断向量表存放在内存的前1K字节,也就是地址为00000H—003FFH的地方。
中断向量表可容纳256个中断向量,对应于类型号0—255,每一项占用4个字节,用来存放相应类型的中断服务程序的入口地址。

B. 8086的中断向量包含什么内容一个中断类型号为13H

存放中断服务程序的入口地址,跳转到中断服务程序的入口地址。

在arm处理器中中断向量的大小为4个字节。在中断向量里面不是存储的中断服务程序的入口地址,而是跳转到中断服务程序的可执行代码。

CPU要通过中断号来找到中断向量,所以要在内存中建立一张中断向量查询表。(在32位保护模式下该表称为中断描述符表),因为32位微机中有256个中断向量,每个中断向量大小为4Byte,所以整张表大小为1KB。因为中断向量按照中断号从0地址开始顺序排列,所以任意一个中断号为N的中断向量的地址为中断号N*4。

(2)编译器能提供的中断向量有几个扩展阅读:

注意事项:

中断向量的名称在WinAVR的最近几个版本中有所变化,是微调。正是因为是微调,如果不注意,将会出现难以发现的错误。

最好的办法就是打开查看X:WinAVR-20100110avrincludeavr路径下的使用的处理器所对应的IO定义头文件。

使用C语言编写的处理代码,主要考虑中断功能上的处理,而不需要考虑现场保护和恢复等问题。编译器会自动加入代码实现中断现场的保护,并在中断结束时自动恢复现场。但如果在中断服务程序中需要修改某些全局变量时,是否需要保护这些变量的初值将由编程员自行决定和实施。

C. msp430编程定时器B的中断

微控论坛原创主贴 作者:bobo 微控论坛特约

因DC的邀请写一个有关中断的东东,我也接触430不久只能以自己的心得体会更大家分享,若有纰漏恳请见谅。MSP430用户手册上有的中断介绍我就不赘述了,大家可以看User Guider.我讲的主要是书上没有的,或者是点的不透的。希望对大家有用。

1.中断嵌套,优先级
430总中断的控制位是状态寄存器内的GIE位(该位在SR寄存器内),该位在复位状态下,所有的可屏蔽中断都不会发生响应。可屏蔽中断又分为单中断源和多中断源的。单中断源的一般响应了中断服务程序中断标志位就自动清零,而多中断源的则要求查询某个寄存器后中断标志位才会清零。由于大多数人接触的第一款单片机通常是51,51单片机CPU在响应低优先级的中断程序过程中若有更高优先级的中断发生,单片机就会去执行高优先级,这个过程已经产生了中断嵌套。而430单片机则不同,如果在响应低优先级中断服务程序的时候,即使来了更高优先级的中断服务请求,430也会置之不理,直至低优先级中断服务程序执行完毕,才会去响应高优先级中断。这是因为430在响应中断程序的时候,总中断GIE是复位状态的,如果要产生类似51的中断嵌套,只能在中断函数内再次置位GIE位。

2.定时器TA
TimerA有2个中断向量。TIMERA0,TIMERA1
TIMERA0只针对CCR0的计数溢出
TIMERA1再查询TAIV后可知道是CCR1,还是CCR2,亦或TAIFG引起的,至于TAIFG是什么情况下置位的,则要看TA工作的模式
具体看用户手册。还有一点TA本身有PWM输出功能,无须借用中断功能。在这个问题上经常出现应用弯路的是如何结合TA和AD实行定时采样的问题,很多人都是在TA中断里打开AD这样来做。这是不适宜的,因为430 的ADC10,ADC12(SD16不熟悉,没发言权)模块均有脉冲采样模式和扩展采样模式。只要选择AD是由TA触发采样,然后把TA设置成PWM输出模式,当然输出PWM波的都是特殊功能脚,但是在这里它是不需要输出的,所以引脚设置不必理会。值得关心的就是PWM的频率,也就是你AD的采样率。

3.看门狗复位
看门狗有2种工作模式:定时器 ,看门狗
定时器工作模式下WDTIFG在响应中断服务程序有标志位自动复位,而在看门狗模式下,该标志位只能软件清零。但是怎么判断复位是由于WDT工作在看门狗模式下的定时溢出引起的,还是看门狗写密钥错误引起的呢?………………………………
答案是没有方法,至少我没见过有什么方法,也没见过周边的人有什么方法。若有人知道方法谢谢分享。
4.经常有人会问这个语句的MOV.B #LPM0,0(SP)的作用。假如你在进入中断函数之前,430是在LPM0下待机,若要求执行完中断函数之后进入LPM3待机,在中断函数里写MOV.B #LPM3,SR是无效的。因为在进入中断时430会把PC,SR压栈,( SR内保存着低功耗模式的设置)即使你写了MOV.B #LPM3,SR,在退出中断出栈时SR会被重新设置成低功耗0,要达到这样的目的,只能更改堆栈内SR的设置:MOV.B #LPM0,0(SP)。

5中断向量:
430的中断向量是FFE0H—FFFFH,一共32个字节也就是FLASH的最后一段,430的FLASH有大有小,但是最后地址肯定是FFFFH(大FLASH超过64K的除外)所以它们的起始地址是不一样的,而一般IAR默认编译都是把程序放在FLASH开始的位置(不包括信息段)。
有个值得弄清楚的问题是:什么是中断向量?中断向量实际就是保存中断函数入口地址的存储单元空间。就像FFFEH+FFFFH这2个字节是复位中断向量,那么它存储的就是主函数在FLASH内的起始地址,假如主函数保存在以0x1100为起始地址的FLASH块内,那么你会发现FFFFH 内保存的是0x11, FFFE内保存的是0x00.其他什么TimerA,ADC12,所有的都一样。只是你每次写的程序长短不一,中断函数放的位置不一样。IAR编译器都会给你定好,然后在你用JTAG烧写程序的时候,把这个地址,烧写到相应的中断向量。因为中断函数所处地址可以由用户自定义,也可以让IAR自动编译,所以这个地址除了源代码开发人员知道,其他人是不知道的,BSL就是应用这32个字节的中断向量内的内容的特殊性设置的密码。但是有几个东西在430是不变的,就是触发中断的条件满足后,它到哪个地方去寻址中断服务函数的入口地址,是TI 在做430时就固化好,定死的。比方说上电复位的时候,它知道去FFFE,FFFF单元找地址,而不去FFE0,FFE2找地址,这个映射关系是430固化不变的。可有的时候你就是需要改变“中断向量”,这怎么办?430FLASH程序自升级里有时就会碰到这个问题,方法是在430原来默认的中断向量表内做一个跳转操作,同样以上电复位为例:
ORG 0x2345
PowerReset: mov.w &0xFCFE,PC
…………………………
…………………………
ORG 0xFFFE
DW PowerReset

D. 什么是中断向量中断向量表指的是什么

中断向量:中断服务程序的入口地址
中断向量地址:内存中存放中断服务程序入口地址的地址
在pc/at机中,中断向量是指中断服务程序的入口地址,每个中断向量分配4个连续的字节单元,两个高字节单元存放入口的段地址cs,两个低字节单元存放入口的段内偏移量ip。在pc/at中,规定内存储器的最低1
kb用来存放中断向量(共256个),称这一片内存区为中断向量表,地址范围是0~3ffh

E. 8086/8088cpu一共可处理多少级中断中断向量和中断向量表的含义是什么

8086/8088的内部中断主要有5种。
(1)
除法错中断
(2)
单步中断
(3)
断点中断
(4)
溢出中断
(5)用户自定义的软件中断
在8086/8088内存的开始1K字节建立了一个中断向量表,每个中断向量由4个字节组成,低两位是IP值,高两位是CS值,这个CS:IP地址表示当相应中断发生时,中断处理程序的入口地址。
例如:除0中断是0号中断,即中断向量的地址是0000:0000——0000:0003,假设中断向量是:53
4E
08
26,则每当程序中有除以0的操作时,立即产生中断,程序从0号中断向量中取出地址:0826:534E,并立即转到这个地址去执行相应的中断处理程序。

F. 请教单片机高人:怎么用C编写中断,汇编中可以有ORG 000BH来确定是T0中断,那C怎么办还有现场保护怎办

C51中断函数格式
Keil C51编译器中断函数语法定义如下:
(C语言不用处理现场保护了) interrupt n <----这个是重点
void 函数名() interrupt n
{

}
//定时器T0中断
void 函数名() interrupt 1
{

}

C51编译器允许0~31个中断,下列中断及其相关地址为8051控制器所提供的中断:
0:EXTERNAL 0 地址:0003H
1:TIMER/COUNTER 0 地址:000BH
2:EXTERNAL 1 地址:0013H
3:TIMER/COUNTER 1 地址:001BH
4:SERIAL PORT 地址:0023H
编写中断函数时应遵循下列规则:
·不能进行参数传递。如果中断过程包括任何参数声明,则编译器将产生一个错误信息。
·无返回值。如果想定义一个返回值将产生错误,但是,如果返回整型值,编译器将不产生
错误信息,因为整型值是默认值,编译器不能清楚识别。
·在任何情况下,不能直接调用中断函数,否则编译器会产生错误。由于退出中断过程是由
指令RETI完成的,该指令影响MCS-51单片机的硬件中断系统,直接调用中断函数时,硬件
上没有中断请求存在,因而这个指令的结果是不定的,并且通常是致命的。
·编译器从绝对地址8n+3处产生一个中断向量,其中n为中断号,该向量包括一个中断过
程的跳转,向量的产生可由编译器控制指令NOINTVECTOR压缩,因而程序员可以从独立的汇
编模块中提供中断向量。
·可以在中断函数定义中使用using指定当前使用的寄存器组。格式如下:
void 函数名([形式参数])interrupt n [using m]
MCS-51单片机有四组寄存器R0~R7,程序具体使用哪一组寄存器由程序状态字PSW中
的两位RS1和RS0来确定。在中断函数定义时,可以用using指定该函数具体使用哪一组寄
存器,m在0,1,2,3这4个数中取值,对应四组寄存器组。例如:
void delay() interrupt 3 using 2
·在中断函数中调用的函数所使用的寄存器组必须与中断函数相同。当没有使用using指令
时,编译器会选择一个寄存器组作为绝对寄存器访问。程序员必须保证按要求使用相应寄存
器组,C编译器不会对此检查。
·如果在中断函数中执行浮点运算,必须保存浮点寄存器状态,当没有其他程序执行浮点运
算时,可以不保存。

G. 什么是中断向量

是指早期的微机系统中将由硬件产生的中断入口地址或存放中断服务程序的首地址。中断是指在计算机执行程序的过程中。

当出现异常情况或者特殊请求时,计算机停止现行的程序的运行,转而对这些异常处理或者特殊请求的处理,处理结束后再返回到现行程序的中断处,继续执行原程序。

存放中断服务程序的入口地址。

来存放中断向量(共256个),称这一片内存区为中断向量表,地址范围是0~3FFH,如图所示。

在PC/AT中由硬件产生的中断标识码被称为中断类型号(当然,中断类型号还有其他的产生方法,如指令中直接给出、CPU自动形成等),即在中断响应期间8259A产生的是当前请求中断的最高优先级的中断源的中断类型号。中断类型号和中断向量之间有下面的关系:

中断类型号×4=存放中断子程序首地址的存储区首地址=中断向量地址。

H. 什么是中断向量什么是中断向量表,有何作用,位于内存什么位置8086共有多少级中断

处理机可处理的每种中断的标号为中断类型码。
中断向量指中断处理程序的入口地址,由处理机自动寻址。
中断向量表是存放中断处理程序入口地址的默认的内存区域。在8086中,中断类型码乘以4得到向量表的入口,从此处读出4个字节内容即为中断向量。
因中断类型码为8位,中断类型码的个数为0——FFH,所以最多有256个(级)中断
望采纳!

I. 什么是中断向量

中 断 向 量
中断向量即中断源的识别标志,可用来存放中断服务程序的入口地址或跳转到中断服务程序的入口地址。
(1)存放中断服务程序的入口地址 在PC/AT机中,中断向量是指中断服务程序的入口地址,每个中断向量分配4个连续的字节单元,两个高字节单元存放入口的段地址CS,两个低字节单元存放入口的段内偏移量IP。在PC/AT中,规定内存储器的最低1 KB用来存放中断向量(共256个),称这一片内存区为中断向量表,地址范围是0~3FFH,如图所示。 在PC/AT中由硬件产生的中断标识码被称为中断类型号(当然,中断类型号还有其他的产生方法,如指令中直接给出、CPU自动形成等),即在中断响应期间8259A产生的是当前请求中断的最高优先级的中断源的中断类型号。中断类型号和中断向量之间有下面的关系: 中断类型号×4=存放中断子程序的首地址=中断向量 有了存放中断向量的首地址,从该地址开始的4个存储单元中取出的就是中断服务程序的入口。
(2)跳转到中断服务程序的入口地址 在AVR或ARM微处理器中,中断向量的大小也是4个字节,但其中存放的不是中断程服务程序的入口地址,而是可执行的代码。当响应中断时,硬件自动执行相应中断向量处的跳转代码,然后跳转到具体的中断服务程序的入口地址。

中断向量地址和中断向量
中断向量:中断服务程序的入口地址
中断向量地址:内存中存放中断服务程序入口地址的地址

热点内容
php开发的网页 发布:2025-05-14 16:22:03 浏览:477
服务器内存跑满了怎么回事 发布:2025-05-14 16:21:16 浏览:223
微信qq音乐缓存 发布:2025-05-14 16:16:16 浏览:468
c语言回收内存 发布:2025-05-14 16:16:08 浏览:143
2021国产安卓顶级旗舰买哪个 发布:2025-05-14 16:15:36 浏览:300
linux自学视频 发布:2025-05-14 16:14:49 浏览:255
我的世界服务器崩了重启 发布:2025-05-14 16:09:37 浏览:44
android深拷贝 发布:2025-05-14 16:09:35 浏览:153
cf电脑版转服务器神器还在吗 发布:2025-05-14 16:09:02 浏览:211
百度文库服务器如何搭建 发布:2025-05-14 16:09:00 浏览:248