单片机响应中断请求,是根据什么来找到相应中断服务程序的如何定义一个中断

单片机响应中断请求,是根据什么来找到相应中断服务程序的如何定义一个中断,第1张

单片机响应中断请求时,通常会通过中断向量表(Interrupt Vector Table)来找到相应的中断服务程序。中断向量表是一个存储中断服务程序入口地址的表格,每个中断请求都会分配一个唯一的中断向量号,当中断请求到达时,单片机会查找中断向量表,根据中断向量号找到对应的中断服务程序入口地址,并跳转到该地址开始执行中断服务程序。

定义中断需要考虑以下几个方面:

中断源:需要定义哪些事件可以触发中断请求,例如外部硬件信号、定时器、串口接收等。

中断优先级:如果多个中断请求同时到达,需要确定哪个中断请求具有更高的优先级。

中断服务程序:中断服务程序是具体执行中断处理 *** 作的程序,需要编写相应的中断服务程序。

中断控制寄存器:单片机中通常有一个或多个中断控制寄存器,用于控制中断的使能和禁止,以及中断请求的标志位清除等 *** 作。

在定义中断时,需要根据具体的单片机型号和开发环境,参考相应的单片机手册和编程手册进行定义。

中断响应优先级是由硬件排队线路或中断查询程序的查询顺序决定的,不可动态改变。

如果计算机系统没有中断,则处理器与外部设备通信时,它必须在向该设备发出指令后进行忙等待,反复轮询该设备是否完成了动作并返回结果。

这就造成了大量处理器周期被浪费。引入中断以后,当处理器发出设备请求后就可以立即返回以处理其他任务,而当设备完成动作后,发送中断信号给处理器。

扩展资料:

常常遇到多个中断源同时请求中断的情况,这时CPU必须确定首先为哪一个中断源服务,以及服务的次序。解决的方法是中断优先排队,即根据中断源请求的轻重缓急,排好中断处理的优先次序即优先级,又称优先权,先响应优先级最高的中断请求。

当CPU正在处理某一中断时,要能响应另一个优先级更高的中断请求,而屏蔽掉同级或较低级的中断请求,形成中断嵌套。

参考资料来源:百度百科-中断优先级

RCC_APB2Periph_AFIO功能复用IO时钟,RCC_APB2Periph_GPIOAGPIOA时钟,RCC_APB2Periph_GPIOBGPIOB时钟等。

AD转换是需要一定时间的,是让程序就地等待转换结果读取数据,还是让ADC转换结束之后自动内处理结果,可容以有两种选择。选择前者就是查询方式,选择后者就是中断方式。ADC转换结束之后有一个标志会置位,查询方式就是让程序等待这个标志位置位。而如果开放了ADC中断,这个标志位置位的同时会发生中断,程序暂时挂起,自动进入中断服务程序处理ADC转换结果,处理结束之后继续被挂起的程序。你提问中的两种方式,和其它诸如定时器、I/O、串行接口等模块的应用,道理都是一样的。当然,我说的仅限于单片机片内ADC,至于外挂的ADC那是另一番情景了。

其实可以在进入ADC中断程序的时候把ADC中断关闭,这样就可以保证这一次的ADC中断正常完整执行完毕,然后在中断返回前,重新使能这个中断,应该是可以的,只不过两次中断的间隔就不是100us了。

dma有两种方式,一种是查询方式,一种是中断方式。是问这两种方式有什么区别么?查询方式是通过查询标志位来判定dma结束,中断方式是dma结束的时候返回中断,在程序中不需要一直查询标志位。

dma与中断的区别

⑴中断方式是在数据缓冲寄存器满之后发出中断,要求cpu进行中断处理,而dma方式则是在所要求传送的数据块全部传送结束时要求cpu

进行中断处理。这就大大减少了cpu进行中断处理的次数。

⑵中断方式的数据传送是在中断处理时由cpu控制完成的,而dma方式则是在dma控制器的控制下,不经过cpu控制完成的。这就排除了cpu因并行设备过多而来不及处理以及因速度不匹配而造成数据丢失等现象。

dma方式的优缺点

在dma方式中,由于i/o设备直接同内存发生成块的数据交换,因此i/o效率比较高。由于dma技术可以提高i/o效率,因此在现代计算机系统中,得到了广泛的应用。许多输入输出设备的控制器,特别是块设备的控制器,都支持dma方式。

通过上述分析可以看出,dma控制器功能的强弱,是决定dma效率的关键因素。dma控制器需要为每次数据传送做大量的工作,数据传送单位的增大意味着传送次数的减少。另外,dma方式窃取了始终周期,cpu处理效率降低了,要想尽量少地窃取始终周期,就要设法提高dma控制器的性能,这样可以较少地影响cpu出理效率。四、通道方式

输入/输出通道是一个独立于cpu的,专门管理i/o的处理机,它控制设备与内存直接进行数据交换。它有自己的通道指令,这些通道指令由cpu启动,并在 *** 作结束时向cpu发出中断信号,见图6-3。

输入/输出通道控制是一种以内存为中心,实现设备和内参内直接交换数据的控制方式。在通道方式中,数据的传送方向、存放数据的内存起始地址以及传送的数据块长度等都由通道来进行控制。

另外,通道控制方式可以做到一个通道控制多台设备与内存进行数据交换。因而,通道方式进一步减轻了cpu的工作负担,增加了计算机系统的并行工作程度。

输入/输出通道分类

按照信息交换方式和所连接的设备种类不同,通道可以分为以下三种类型:

⑴字节多路通道

它适用于连接打印机、终端等低速或中速的i/o设备。这种通道以字节为单位交叉工作:当为一台设备传送一个字节后,立即转去为另一它设备传送一个字节。

⑵选择通道

它适用于连接磁盘、磁带等高速设备。这种通道以“组方式”工作,每次传送一批数据,传送速率很高,但在一段时间只能为一台设备服务。每当一个i/o请求处理完之后,就选择另一台设备并为其服务。

⑶成组多路通道

这种通道综合了字节多路通道分时工作和选择通道传输速率高的特点,其实质是:对通道程序采用多道程序设计技术,使得与通道连接的设备可以并行工作。

单片机在 *** 作外部设备时,常用的有中断和查询两种方式。

1、工作方式不同;

查询方式:发送数据——先发后查;

接收数据——先查后收。  

中断方式:发送数据——发送、等待中断、中断中发送;

接收数据——等待中断、在中断中接收

中断方式,是事件触发的,换言之只要有事件产生都会进入中断,并且取得最优运行,因此响应更快,及时。查询方式,就是在主函数里面不停循环,查询端口状态,响应速度慢。

2、编程时的区别;中断程序在程序开始定义中断入口地址,初始化中必须打开中断允许位,程序运行时不用判断溢出状态位,溢出后硬件清零;查询方式在程序运行时必须判断溢出状态位,溢出后须软件清零。

扩展资料:

单片机工作原理

1、单片机是一块用于对系统或设备进行控制的集成电路芯片,相当于一个微型计算机系统。包含具有数据处理能力的中央处理器CPU、静态随机处理器SRAM、闪存FLASH、多种IO口和中断系统、定时器/计数器等功能。

2、可以把单片机看成是一台微型机器,程序员给它输入命令,它就执行相应的 *** 作。其过程大概如下:在一般的用户模式下,单片机先从FLASH中读取指令,译码电路识别该指令是哪个指令,并输出对应的控制信号给单片机内的各部件,各部件收到控制信号后执行相应的 *** 作。

程序查询方式控制简单,但外设和主机不能同时工作,各外设之间也不能同时工作,系统的效率很低,因此适用于外设数目不多的程序中断方式,无须等待查询,而是继续执行原来的程序,所以程序中断不仅适用于外部设备的输入输出的 *** 作,也适用于对外界发生的随机事件的处理,并且允许多个外设同时工作

识别中断源包括两种方法

查询中断:主要采用软件查询,用程序查询接在中断线上的每一个外设。查询程序依次读出每一个外设的中断状态位,通过测试该状态位来判断对应的外设是否发出过中断请求,若是,则转到相应的中断服务程序

向量中断:当CPU识别出某个外设请求中断并予以相应时,控制逻辑就将该外设的中断识别码送入CPU,以自动地提供相应的中断程序的入口地址,转入中断服务

假设晶振频率是12MHz;

P2口输出低电平时LED发光。

下列两个程序,经过了PROTEUS仿真,能够满足要求。

;===================================================

;下面是查询方式

ORG 0000H

LJMP MAIN

ORG 0050H

MAIN:

MOV TMOD, #01 ;令T0定时方式1

MOV TH0, #3CH

MOV TL0, #0B0H ;50ms@12MHz

SETB TR0 ;启动T0

;--------------------------------------------

MOV R7, #20

MOV A, #7FH

MOV P2, A

M_LOOP:

JNB TF0, M_LOOP ;T0没有溢出,就在此循环不止

CLR TF0

MOV TL0, #0B0H

MOV TH0, #3CH

DJNZ R7, M_LOOP ;溢出20次

MOV R7, #20 ;才到1s

RR A

MOV P2, A

SJMP M_LOOP

;--------------------------------------------

END

;===================================================

;下面是中断方式

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP T0_INT

ORG 0050H

MAIN:

MOV TMOD, #01 ;令T0定时方式1

MOV TH0, #3CH

MOV TL0, #0B0H ;50ms@12MHz

SETB TR0 ;启动T0

MOV IE, #82H ;允许中断

;--------------------------------------------

MOV R7, #20

MOV A, #7FH

MOV P2, A

M_LOOP:

;主程序, 空循环

SJMP M_LOOP

;--------------------------------------------

T0_INT: ;50ms执行一次

MOV TL0, #0B0H

MOV TH0, #3CH

DJNZ R7, T0_END ;中断20次

MOV R7, #20 ;才到1s

RR A

MOV P2, A

T0_END:

RETI

;--------------------------------------------

END

;===================================================

以上就是关于单片机响应中断请求,是根据什么来找到相应中断服务程序的如何定义一个中断全部的内容,包括:单片机响应中断请求,是根据什么来找到相应中断服务程序的如何定义一个中断、什么是中断响应次序什么是中断处理次序、adc中断查询次序号等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存