Keil C51中using的用法

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Keil C51 中using 的用法

Keil C51 中using 的用法在C51 中断程序中很多时候会用到using 关键字,但是很多人并不明白到底是什么意思,这里转帖一篇帮助大家理解。

如果在中断服务函数ISR 中使用寄存器,那么必须处理好using 的使用问题:

1、中断服务函数使用using 指定与主函数不同的寄存器组(主函数一般使用Register bank 0)。

2、中断优先级相同的ISR 可用using 指定相同的寄存器组,但优先级不同的ISR 必须使用不同的寄存器组,在ISR 中被调用的函数也要使用using 指定与中断函数相同的寄存器组。

3、如果不用using 指定,在ISR 的入口,c51 默认选择寄存器组0,这相当于中断服务程序的入口首先执行指令:

MOV PSW #0

这点保证了,没使用using 指定的高优先级中断。可以中断使用不同的寄存器组的低优先级中断。

4、使用using 关键字给中断指定寄存器组,这样直接切换寄存器组而不必进行大量的PUSH 和POP 操作,可以节省RAM 空间,加速MCU 执行时间。寄存器组的切换,总的来说比较容易出错,要对内存的使用情况有比

较清晰的认识,其正确性要由你自己来保证。特别在程序中有直接地址访问的

时候,一定要小心谨慎!至于什么时候要用到寄存器组切换,一种情况是:当

你试图让两个(或以上)作业同时运行,而且它们的现场需要一些隔离的时候,就会用上了。在ISR 或使用实时操作系统RTOS 中,寄存器非常有用。

寄存器组使用的原则:

相关文档
最新文档