MCU中断

上传人:野鹰 文档编号:1127313 上传时间:2017-05-29 格式:TXT 页数:4 大小:5.36KB
返回 下载 相关 举报
MCU中断_第1页
第1页 / 共4页
MCU中断_第2页
第2页 / 共4页
MCU中断_第3页
第3页 / 共4页
MCU中断_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《MCU中断》由会员分享,可在线阅读,更多相关《MCU中断(4页珍藏版)》请在金锄头文库上搜索。

1、interrupt 4 using 0interrupt 和 using 在C51中断中的使用转8051 系列 MCU 的基本结构包括:32 个 I/O 口(4 组8 bit 端口);两个16 位定时计数器;全双工串行通信;6 个中断源(2 个外部中断、2 个定时/计数器中断、1 个串口输入/输出中断),两级中断优先级;128 字节内置RAM;独立的 64K 字节可寻址数据和代码区。中断发生后,MCU 转到 5 个中断入口处之一,然后执行相应的中断服务处理程序。中断程序的入口地址被编译器放在中断向量中,中断向量位于程序代码段的最低地址处,注意这里的串口输入/输出中断共用一个中断向量。8051的

2、中断向量表如下:中断源 中断向量-上电复位 0000H外部中断0 0003H定时器0 溢出 000BH外部中断1 0013H定时器1 溢出 001BH串行口中断 0023H定时器2 溢出 002BHinterrupt 和 using 都是 C51 的关键字。C51 中断过程通过使用 interrupt 关键字和中断号(0 到31)来实现。中断号指明编译器中断程序的入口地址中断序号对应着 8051中断使能寄存器IE 中的使能位,对应关系如下:IE寄存器 C51中的 8051的的使能位 中断号 中断源-IE.0 0 外部中断0IE.1 1 定时器0 溢出IE.2 2 外部中断1IE.3 3 定时器

3、1 溢出IE.4 4 串口中断IE.5 5 定时器2 溢出有了这一声明,编译器不需理会寄存器组参数的使用和对累 器A、 寄存器、寄存器B、数据指 和 的寄存器的 。 在中断程序中用到,编译器会 ,在中断程序结 时 出 。C51 有 5 个 8051 中断 0 到 4 和在 8051 系列( )中 27 个中断源。using 关键字用来指定中断服务程序使用的寄存器组。用 是:using 后 一个0 到3 的数,对应着 4 组工 寄存器。一 指定工 寄存器组, 的工 寄存器组不会被 ,这 节 32 个处理,入 和出 都需 2 个处理。这一 的currency1是 有“用中断的过程都使用指定的一个寄

4、存器组,fifl参数 会发生。对于using,在使用中需 。关于using:在”中明这一 的currency1是 有“用中断的过程都使用指定的一个寄存器组是不是这个意 个来:定一个数void func(unsigned char i) .if(+i=0x12) .有如下一个中断数void int_0(void) interrupt 0 using 1 .在 下,func使用寄存器组0(BANK0),int_0“用func时是fi存在 参数时会 参数 如 在中断服务数 ISR 中使用寄存器,处理 using 的使用:1、中断服务数使用 using 指定 数不的寄存器组( 数一 使用 Regist

5、er bank 0)。2、中断优先级相的ISR 可用 using 指定相的寄存器组, 优先级不的 ISR 使用不的寄存器组,在 ISR 中被“用的数 使用 using 指定中断数相的寄存器组。3、如 不用 using 指定,在 ISR 的入口,C51 寄存器组0,这相于中断服务程序的入口 先执行指 :MOV PSW #0这 了, 使用 using 指定的 优先级中断。可 中断使用不的寄存器组的低优先级中断。4、 使用 using 关键字 中断指定寄存器组,这 寄存器组不 行 量的 PUSH 和 POP ,可 节RAM , MCU 执行时。寄存器组的 ,的来 出, 对内存的使用 有 的 , 来

6、。 在程序中有 地址 的时 ,一定 小心谨慎至于什时 用到寄存器组 ,一种 是:试图让两个(或 上) 业时运行,且 的现场需 一些隔离的时 ,会用上了。在 ISR 或使用实时 系统RTOS 中,寄存器非常有用。寄存器组使用的原fl:1、8051 的最低32 个字节分 4 组 8 寄存器。分 寄存器R0 到R7。寄存器组PSW 的低两位 。在 ISR 中,MCU 可 到一个不的寄存器组。对寄存器组的 不可位寻址,C51 编译器规定使用 using 或 禁止中断的数(#pragma disable)均不能返回 bit 类 的值。2、 程序(main数)使用一组,如 bank 0;低中断优先级的 有

7、中断均使用第二组,如 bank 1; 中断优先级的 有中断均使用再另外一组,如 bank 2。显然,级 的中断使用一组寄存器不会有,不会发生中断嵌套; 优先级的中断fl 使用低优先级中断不的一组,有可能出现在低优先级中断中发生 优先级中断的 。编译器会动判断何时可使用绝对寄存器存。3、在 ISR 中“用 数,和中断使用相的寄存器组。 用 NOAREGS 命 明 的声明,编译器 使用绝对寄存器寻址方式 数 定(即用 using 或 REGISTERBANK 指定)的寄存器组,数假定的和实际 的寄存器组不时, 产生不可预知的结 , 可能出现参数 ,返回值可能会在的寄存器组中。一:需 在中断内和中断

8、外“用一个数,假定按照程序的流程控制,不会出现数的归“用现象,这 的“用会不会出现若 定不会发生重入 ,fl有 下两种 :1、如 ISR 和 程序使用一寄存器组( 程序currency1使用BANK 0,若 ISR 有使用 using 指定寄存器区,flcurrency1 使用 BANK 0),fl不需 设置。2、如 ISR 和 程序使用不的寄存器组( 程序currency1使用BANK 0,ISR 使用 using 指定了 BANK),fl被“用数放在:#pragma NOAREGS#pragma AREGS控 制参数对中,指定编译器不 对该数使用绝对寄存器寻址方式;或者 可在 Option

9、s-C51, 中Dont use absolute register accesses”,使 有代码均不使用绝对寄存器寻址方式(这 ,执行效率 稍有降低)。不论 上的哪一种 ,编译器均会 出重入警告,需手工更改 OVERLAY 参数,重入明。3、还有一种办 :如 被“用数的代码不是很长,还是 该数复制一份,用不的数名代替,这种 适合ROM有足够 余的 。,对using关键字的使用,如 握,宁可不用,交 编译系统去处理了。interrupt xx using y在interrupt 后面的xx 值得是中断号,是这个数对应第几个中断端口,一 在51中0 外部中断01 定时器02 外部中断13 定时器14 串行中断的根 相应得单片机有的含,实际上c载编译的时 是 这个数的入口地址方到这个对应中断的跳转地址using y 这个y是这个中断数使用的个寄存器组是51里面一 有4个 r0 - r7寄存器,如 的终端数和 的程序用的不是一个寄存器组fl 入中断的时 不会 寄存器组 入堆 返回时 不会弹出来节代码和时一 有using 0,1,2,3

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号